*
*-------------------------------------------------------------------------
*/
+#include <errno.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/file.h>
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;
}
/* 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;
}
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;