Add some elog(DEBUG)'s to help diagnose mdblindwrt failures.
authorTom Lane <[email protected]>
Thu, 25 May 2000 23:30:20 +0000 (23:30 +0000)
committerTom Lane <[email protected]>
Thu, 25 May 2000 23:30:20 +0000 (23:30 +0000)
src/backend/storage/smgr/md.c

index 1d967aac284afad40a4f9d1cb175c4b8649a49d3..fe7d030f49bc5dd66fda3993071cb333aea72fb7 100644 (file)
@@ -12,6 +12,7 @@
  *
  *-------------------------------------------------------------------------
  */
+#include <errno.h>
 #include <unistd.h>
 #include <fcntl.h>
 #include <sys/file.h>
@@ -609,8 +610,11 @@ mdblindwrt(char *dbname,
        seekpos = (long) (BLCKSZ * (blkno));
 #endif
 
+       errno = 0;
+
        if (lseek(fd, seekpos, SEEK_SET) != seekpos)
        {
+               elog(DEBUG, "mdblindwrt: lseek(%ld) failed: %m", seekpos);
                close(fd);
                return SM_FAIL;
        }
@@ -619,13 +623,22 @@ mdblindwrt(char *dbname,
 
        /* write and optionally sync the block */
        if (write(fd, buffer, BLCKSZ) != BLCKSZ)
+       {
+               elog(DEBUG, "mdblindwrt: write() failed: %m");
                status = SM_FAIL;
+       }
        else if (dofsync &&
                         pg_fsync(fd) < 0)
+       {
+               elog(DEBUG, "mdblindwrt: fsync() failed: %m");
                status = SM_FAIL;
+       }
 
        if (close(fd) < 0)
+       {
+               elog(DEBUG, "mdblindwrt: close() failed: %m");
                status = SM_FAIL;
+       }
 
        return status;
 }
@@ -1122,6 +1135,9 @@ _mdfd_blind_getseg(char *dbname, char *relname, Oid dbid, Oid relid,
        fd = open(path, O_RDWR | O_BINARY, 0600);
 #endif
 
+       if (fd < 0)
+               elog(DEBUG, "_mdfd_blind_getseg: couldn't open %s: %m", path);
+
        pfree(path);
 
        return fd;