|
|
12a457 |
From 807c7debe3c36ff911e6f7081e066b251d2a0ee4 Mon Sep 17 00:00:00 2001
|
|
|
12a457 |
From: Pranith Kumar K <pkarampu@redhat.com>
|
|
|
12a457 |
Date: Thu, 5 May 2016 07:59:03 +0530
|
|
|
12a457 |
Subject: [PATCH 186/192] protocol/client: Filter o-direct in readv/writev
|
|
|
12a457 |
|
|
|
12a457 |
Backport of: http://review.gluster.org/14215
|
|
|
12a457 |
|
|
|
12a457 |
Change-Id: I55e53492a878284ed1c75b018d5203b2f5d79032
|
|
|
12a457 |
BUG: 1339136
|
|
|
12a457 |
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
|
|
|
12a457 |
Reviewed-on: https://code.engineering.redhat.com/gerrit/75848
|
|
|
12a457 |
---
|
|
|
12a457 |
xlators/protocol/client/src/client.c | 23 +++++++++++++++--------
|
|
|
12a457 |
1 files changed, 15 insertions(+), 8 deletions(-)
|
|
|
12a457 |
|
|
|
12a457 |
diff --git a/xlators/protocol/client/src/client.c b/xlators/protocol/client/src/client.c
|
|
|
12a457 |
index 2e9fb4c..3191a98 100644
|
|
|
12a457 |
--- a/xlators/protocol/client/src/client.c
|
|
|
12a457 |
+++ b/xlators/protocol/client/src/client.c
|
|
|
12a457 |
@@ -36,6 +36,13 @@ int client_init_rpc (xlator_t *this);
|
|
|
12a457 |
int client_destroy_rpc (xlator_t *this);
|
|
|
12a457 |
int client_mark_fd_bad (xlator_t *this);
|
|
|
12a457 |
|
|
|
12a457 |
+static void
|
|
|
12a457 |
+client_filter_o_direct (clnt_conf_t *conf, int32_t *flags)
|
|
|
12a457 |
+{
|
|
|
12a457 |
+ if (conf->filter_o_direct)
|
|
|
12a457 |
+ *flags = (*flags & ~O_DIRECT);
|
|
|
12a457 |
+}
|
|
|
12a457 |
+
|
|
|
12a457 |
static int
|
|
|
12a457 |
client_fini_complete (xlator_t *this)
|
|
|
12a457 |
{
|
|
|
12a457 |
@@ -797,11 +804,9 @@ client_create (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags,
|
|
|
12a457 |
args.fd = fd;
|
|
|
12a457 |
args.umask = umask;
|
|
|
12a457 |
args.xdata = xdata;
|
|
|
12a457 |
+ args.flags = flags;
|
|
|
12a457 |
|
|
|
12a457 |
- if (!conf->filter_o_direct)
|
|
|
12a457 |
- args.flags = flags;
|
|
|
12a457 |
- else
|
|
|
12a457 |
- args.flags = (flags & ~O_DIRECT);
|
|
|
12a457 |
+ client_filter_o_direct (conf, &args.flags);
|
|
|
12a457 |
|
|
|
12a457 |
proc = &conf->fops->proctable[GF_FOP_CREATE];
|
|
|
12a457 |
if (proc->fn)
|
|
|
12a457 |
@@ -832,11 +837,9 @@ client_open (call_frame_t *frame, xlator_t *this, loc_t *loc,
|
|
|
12a457 |
args.loc = loc;
|
|
|
12a457 |
args.fd = fd;
|
|
|
12a457 |
args.xdata = xdata;
|
|
|
12a457 |
+ args.flags = flags;
|
|
|
12a457 |
|
|
|
12a457 |
- if (!conf->filter_o_direct)
|
|
|
12a457 |
- args.flags = flags;
|
|
|
12a457 |
- else
|
|
|
12a457 |
- args.flags = (flags & ~O_DIRECT);
|
|
|
12a457 |
+ client_filter_o_direct (conf, &args.flags);
|
|
|
12a457 |
|
|
|
12a457 |
proc = &conf->fops->proctable[GF_FOP_OPEN];
|
|
|
12a457 |
if (proc->fn)
|
|
|
12a457 |
@@ -870,6 +873,8 @@ client_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,
|
|
|
12a457 |
args.flags = flags;
|
|
|
12a457 |
args.xdata = xdata;
|
|
|
12a457 |
|
|
|
12a457 |
+ client_filter_o_direct (conf, &args.flags);
|
|
|
12a457 |
+
|
|
|
12a457 |
proc = &conf->fops->proctable[GF_FOP_READ];
|
|
|
12a457 |
if (proc->fn)
|
|
|
12a457 |
ret = proc->fn (frame, this, &args);
|
|
|
12a457 |
@@ -908,6 +913,8 @@ client_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,
|
|
|
12a457 |
args.iobref = iobref;
|
|
|
12a457 |
args.xdata = xdata;
|
|
|
12a457 |
|
|
|
12a457 |
+ client_filter_o_direct (conf, &args.flags);
|
|
|
12a457 |
+
|
|
|
12a457 |
proc = &conf->fops->proctable[GF_FOP_WRITE];
|
|
|
12a457 |
if (proc->fn)
|
|
|
12a457 |
ret = proc->fn (frame, this, &args);
|
|
|
12a457 |
--
|
|
|
12a457 |
1.7.1
|
|
|
12a457 |
|