summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAtin Mukherjee <amukherj@redhat.com>2014-04-23 17:21:41 +0530
committerVijay Bellur <vbellur@redhat.com>2014-05-03 07:28:16 -0700
commit11b0ea3d79445e3773d450132121387b67d7bc9a (patch)
treede7ed2a0db5f38c45c3a8788cbacbb2a0b9e7aa4
parent0088e318c1218191535ea0baa04b4fe858412f54 (diff)
barrier : barrier O_SYNC write incorrect flag check
barrier_writev function was doing the following check to determine whether its a O_SYNC write or not: if (!(flags & O_SYNC)) The problem here is this flag is not fd's flag and gfapi write does not copy open call fd's flag into write flag because of which O_SYNC writes were not getting barriered even if barrier was enabled. The check has been modified as: if (!(fd->flags & (O_SYNC | O_DSYNC))) Change-Id: I07b23852d150b81c7317100ca6d22d082ad897cd BUG: 1090488 Signed-off-by: Atin Mukherjee <amukherj@redhat.com> Reviewed-on: http://review.gluster.org/7549 Reviewed-by: Varun Shastry <vshastry@redhat.com> Reviewed-by: Santosh Pradhan <spradhan@redhat.com> Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
-rw-r--r--xlators/features/barrier/src/barrier.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/xlators/features/barrier/src/barrier.c b/xlators/features/barrier/src/barrier.c
index 5edb9cdd392..5b48184d4c7 100644
--- a/xlators/features/barrier/src/barrier.c
+++ b/xlators/features/barrier/src/barrier.c
@@ -125,7 +125,7 @@ barrier_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,
struct iovec *vector, int32_t count, off_t off, uint32_t flags,
struct iobref *iobref, dict_t *xdata)
{
- if (!(flags & O_SYNC)) {
+ if (!(fd->flags & (O_SYNC | O_DSYNC))) {
STACK_WIND_TAIL (frame, FIRST_CHILD(this),
FIRST_CHILD(this)->fops->writev,
fd, vector, count, off, flags, iobref, xdata);