From 0fea541b0b217fc3c76e6a36577b99be71e32d56 Mon Sep 17 00:00:00 2001 From: Krutika Dhananjay Date: Tue, 7 Jun 2016 17:15:56 +0530 Subject: libglusterfs: Negate all but O_DIRECT flag if present on anon fds Backport of: http://review.gluster.org/14665 This is to prevent any unforeseen problems that might arise due to writevs and readvs being wound with @flag parameter containing O_TRUNC or O_APPEND especially wrt translators like sharding and ec where O_TRUNC write or O_APPEND write on individual shards/fragments is not the same as O_TRUNC write or O_APPEND write as expected by the application. Change-Id: Ib0110731d6099bc888b7ada552a2abbea8e76051 BUG: 1342903 Signed-off-by: Krutika Dhananjay Reviewed-on: http://review.gluster.org/14735 Smoke: Gluster Build System NetBSD-regression: NetBSD Build System Reviewed-by: Pranith Kumar Karampuri CentOS-regression: Gluster Build System --- xlators/protocol/server/src/server-resolve.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'xlators/protocol/server') diff --git a/xlators/protocol/server/src/server-resolve.c b/xlators/protocol/server/src/server-resolve.c index 4e6ec6a852a..d3e604fae2f 100644 --- a/xlators/protocol/server/src/server-resolve.c +++ b/xlators/protocol/server/src/server-resolve.c @@ -458,7 +458,10 @@ resolve_anonfd_simple (call_frame_t *frame) ret = 0; - state->fd = fd_anonymous_with_flags (inode, state->flags); + if (frame->root->op == GF_FOP_READ || frame->root->op == GF_FOP_WRITE) + state->fd = fd_anonymous_with_flags (inode, state->flags); + else + state->fd = fd_anonymous (inode); out: if (inode) inode_unref (inode); -- cgit