summaryrefslogtreecommitdiffstats
path: root/xlators/protocol/client
diff options
context:
space:
mode:
authorAmar Tumballi <amar@gluster.com>2012-02-06 17:49:14 +0530
committerAnand Avati <avati@redhat.com>2012-02-14 01:09:02 -0800
commit0e6df0100e13123fe38f28c5a090777e894d8f52 (patch)
tree517c60cc953302172cb51f22f4b7aa52e557c1e9 /xlators/protocol/client
parente17ac220e4bff53fb89f5bea636acb61e347cf50 (diff)
core: add an extra flag to readv()/writev() API
needed to implement a proper handling of open flag alterations using fcntl() on fd. Change-Id: Ic280d5db6f1dc0418d5c439abb8db1d3ac21ced0 Signed-off-by: Amar Tumballi <amar@gluster.com> BUG: 782265 Reviewed-on: http://review.gluster.com/2723 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'xlators/protocol/client')
-rw-r--r--xlators/protocol/client/src/client.c6
-rw-r--r--xlators/protocol/client/src/client3_1-fops.c4
2 files changed, 8 insertions, 2 deletions
diff --git a/xlators/protocol/client/src/client.c b/xlators/protocol/client/src/client.c
index 5f1198703..229e01917 100644
--- a/xlators/protocol/client/src/client.c
+++ b/xlators/protocol/client/src/client.c
@@ -753,7 +753,7 @@ out:
int32_t
client_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,
- off_t offset)
+ off_t offset, uint32_t flags)
{
int ret = -1;
clnt_conf_t *conf = NULL;
@@ -767,6 +767,7 @@ client_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,
args.fd = fd;
args.size = size;
args.offset = offset;
+ args.flags = flags;
proc = &conf->fops->proctable[GF_FOP_READ];
if (!proc) {
@@ -792,7 +793,7 @@ out:
int32_t
client_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,
struct iovec *vector, int32_t count, off_t off,
- struct iobref *iobref)
+ uint32_t flags, struct iobref *iobref)
{
int ret = -1;
clnt_conf_t *conf = NULL;
@@ -807,6 +808,7 @@ client_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,
args.vector = vector;
args.count = count;
args.offset = off;
+ args.flags = flags;
args.iobref = iobref;
proc = &conf->fops->proctable[GF_FOP_WRITE];
diff --git a/xlators/protocol/client/src/client3_1-fops.c b/xlators/protocol/client/src/client3_1-fops.c
index fe928aecd..6ad646409 100644
--- a/xlators/protocol/client/src/client3_1-fops.c
+++ b/xlators/protocol/client/src/client3_1-fops.c
@@ -3420,6 +3420,8 @@ client3_1_readv (call_frame_t *frame, xlator_t *this,
req.size = args->size;
req.offset = args->offset;
req.fd = remote_fd;
+ req.flag = args->flags;
+
memcpy (req.gfid, args->fd->inode->gfid, 16);
/* TODO: what is the size we should send ? */
@@ -3508,6 +3510,8 @@ client3_1_writev (call_frame_t *frame, xlator_t *this, void *data)
req.size = args->size;
req.offset = args->offset;
req.fd = remote_fd;
+ req.flag = args->flags;
+
memcpy (req.gfid, args->fd->inode->gfid, 16);
ret = client_submit_vec_request (this, &req, frame, conf->fops, GFS3_OP_WRITE,