From d01f7244e9d9f7e3ef84e0ba7b48ef1b1b09d809 Mon Sep 17 00:00:00 2001 From: Kinglong Mee Date: Mon, 12 Feb 2018 15:13:49 +0800 Subject: gfapi: return pre/post attributes from glfs_pread/pwrite As nfs-ganesha, a wcc data contains pre/post attributes is return in read/write rpc reply. nfs-ganesha get those attributes by two getattr between the real read/write right now. But, gluster has return pre/post attributes from glusterfsd, those attributes are skipped in syncop/gfapi, if gfapi return them, the upper user (nfs-ganesha) can use them directly without any duplicate getattr. Updates: #389 Change-Id: I7b643ae4241cfe2aeb17063de00192d81674024a Signed-off-by: Kinglong Mee --- xlators/features/bit-rot/src/bitd/bit-rot.c | 2 +- xlators/features/snapview-server/src/snapview-server.c | 12 +----------- 2 files changed, 2 insertions(+), 12 deletions(-) (limited to 'xlators/features') diff --git a/xlators/features/bit-rot/src/bitd/bit-rot.c b/xlators/features/bit-rot/src/bitd/bit-rot.c index db97ce54735..a9b70b61f8a 100644 --- a/xlators/features/bit-rot/src/bitd/bit-rot.c +++ b/xlators/features/bit-rot/src/bitd/bit-rot.c @@ -296,7 +296,7 @@ br_object_read_block_and_sign (xlator_t *this, fd_t *fd, br_child_t *child, ret = syncop_readv (child->xl, fd, size, offset, 0, &iovec, &count, &iobref, NULL, - NULL); + NULL, NULL); if (ret < 0) { gf_msg (this->name, GF_LOG_ERROR, errno, BRB_MSG_READV_FAILED, diff --git a/xlators/features/snapview-server/src/snapview-server.c b/xlators/features/snapview-server/src/snapview-server.c index 8fee435de64..18f00d7d2d8 100644 --- a/xlators/features/snapview-server/src/snapview-server.c +++ b/xlators/features/snapview-server/src/snapview-server.c @@ -1990,7 +1990,7 @@ svs_readv (call_frame_t *frame, xlator_t *this, goto out; } - ret = glfs_pread (glfd, iobuf->ptr, size, offset, 0); + ret = glfs_pread (glfd, iobuf->ptr, size, offset, 0, &fstatbuf); if (ret < 0) { op_ret = -1; op_errno = errno; @@ -2005,16 +2005,6 @@ svs_readv (call_frame_t *frame, xlator_t *this, iobref = iobref_new (); iobref_add (iobref, iobuf); - - ret = glfs_fstat (glfd, &fstatbuf); - if (ret) { - op_ret = -1; - op_errno = errno; - gf_log (this->name, GF_LOG_ERROR, "glfs_fstat failed after " - "readv on %s", uuid_utoa (fd->inode->gfid)); - goto out; - } - iatt_from_stat (&stbuf, &fstatbuf); gf_uuid_copy (stbuf.ia_gfid, fd->inode->gfid); svs_fill_ino_from_gfid (&stbuf); -- cgit