diff options
| -rw-r--r-- | xlators/storage/posix/src/posix.c | 14 | ||||
| -rw-r--r-- | xlators/storage/posix/src/posix.h | 1 | 
2 files changed, 10 insertions, 5 deletions
diff --git a/xlators/storage/posix/src/posix.c b/xlators/storage/posix/src/posix.c index 1a7a2c75123..ecb1b842d79 100644 --- a/xlators/storage/posix/src/posix.c +++ b/xlators/storage/posix/src/posix.c @@ -2147,10 +2147,16 @@ posix_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,                   * the file we wrote to                   */ -                if (pfd->flushwrites) { -                        /* NOTE: ignore the error, if one occurs at this -                         * point */ -                        fsync (_fd); +                if (flags & (O_SYNC|O_DSYNC)) { +                        ret = fsync (_fd); +			if (ret) { +				gf_log (this->name, GF_LOG_ERROR, +					"fsync() in writev on fd %d failed: %s", +					_fd, strerror (errno)); +				op_ret = -1; +				op_errno = errno; +				goto out; +			}                  }                  ret = posix_fdstat (this, _fd, &postop); diff --git a/xlators/storage/posix/src/posix.h b/xlators/storage/posix/src/posix.h index 4703a1fd432..58f445c699a 100644 --- a/xlators/storage/posix/src/posix.h +++ b/xlators/storage/posix/src/posix.h @@ -57,7 +57,6 @@ struct posix_fd {  	int     fd;      /* fd returned by the kernel */  	int32_t flags;   /* flags for open/creat      */  	DIR *   dir;     /* handle returned by the kernel */ -        int     flushwrites;          int     odirect;          struct list_head list; /* to add to the janitor list */  };  | 
