diff options
author | ShyamsundarR <srangana@redhat.com> | 2018-05-08 11:06:15 -0400 |
---|---|---|
committer | ShyamsundarR <srangana@redhat.com> | 2018-05-08 11:27:48 -0400 |
commit | 16873e16f3fdfe7f83ca919ad188075eebb5dd7c (patch) | |
tree | c48e33a299a52c533c134942aca8c33992c26dbe | |
parent | 427951b7f74c643d5b7c7c946bc348209b974274 (diff) |
Revert "gfapi: return pre/post attributes from glfs_pread/pwrite"
This reverts commit d01f7244e9d9f7e3ef84e0ba7b48ef1b1b09d809.
This is being reverted as the API signatures should adapt to a
statx like structure, and also all APIs that need to return
pre/post attrs are not complete.
As a result, instead of fixing up part of the APIs and then
refixing the same in a later release, removing these set of
fixes from the branch
Additionally fixed up posix-entry-ops.c which was using the
new syncop signature
Updates: bz#1575386
Change-Id: I35222dadc4a2e97010bc1e6b97b6f83583c311f6
-rw-r--r-- | api/src/gfapi.aliases | 6 | ||||
-rw-r--r-- | api/src/gfapi.map | 4 | ||||
-rw-r--r-- | api/src/glfs-fops.c | 100 | ||||
-rw-r--r-- | api/src/glfs.h | 9 | ||||
-rwxr-xr-x | libglusterfs/src/generator.py | 3 | ||||
-rw-r--r-- | libglusterfs/src/syncop.c | 21 | ||||
-rw-r--r-- | libglusterfs/src/syncop.h | 5 | ||||
-rw-r--r-- | tests/basic/gfapi/upcall-cache-invalidate.c | 2 | ||||
-rw-r--r-- | tests/basic/gfapi/upcall-register-api.c | 2 | ||||
-rw-r--r-- | tests/bugs/io-cache/bug-read-hang.c | 2 | ||||
-rw-r--r-- | xlators/cluster/afr/src/afr-self-heal-data.c | 6 | ||||
-rw-r--r-- | xlators/cluster/dht/src/dht-rebalance.c | 5 | ||||
-rwxr-xr-x | xlators/experimental/fdl/src/gen_recon.py | 2 | ||||
-rw-r--r-- | xlators/features/bit-rot/src/bitd/bit-rot.c | 2 | ||||
-rw-r--r-- | xlators/features/snapview-server/src/snapview-server.c | 12 | ||||
-rw-r--r-- | xlators/storage/posix/src/posix-entry-ops.c | 2 |
16 files changed, 54 insertions, 129 deletions
diff --git a/api/src/gfapi.aliases b/api/src/gfapi.aliases index 4b3bcc1fb54..bf675e865db 100644 --- a/api/src/gfapi.aliases +++ b/api/src/gfapi.aliases @@ -24,8 +24,8 @@ _pub_glfs_readv _glfs_readv$GFAPI_3.4.0 _pub_glfs_writev _glfs_writev$GFAPI_3.4.0 _pub_glfs_readv_async _glfs_readv_async$GFAPI_3.4.0 _pub_glfs_writev_async _glfs_writev_async$GFAPI_3.4.0 -_pub_glfs_pread34 _glfs_pread$GFAPI_3.4.0 -_pub_glfs_pwrite34 _glfs_pwrite$GFAPI_3.4.0 +_pub_glfs_pread _glfs_pread$GFAPI_3.4.0 +_pub_glfs_pwrite _glfs_pwrite$GFAPI_3.4.0 _pub_glfs_pread_async _glfs_pread_async$GFAPI_3.4.0 _pub_glfs_pwrite_async _glfs_pwrite_async$GFAPI_3.4.0 _pub_glfs_preadv _glfs_preadv$GFAPI_3.4.0 @@ -173,5 +173,3 @@ _pub_glfs_file_lock _glfs_file_lock$GFAPI_4.0.0 _pub_glfs_lease _glfs_lease$GFAPI_4.0.0 _pub_glfs_h_lease _glfs_h_lease$GFAPI_4.0.0 _pub_glfs_recall_lease _glfs_recall_lease$GFAPI_4.0.0 -_pub_glfs_pread _glfs_pread$GFAPI_4.0.0 -_pub_glfs_pwrite _glfs_pwrite$GFAPI_4.0.0 diff --git a/api/src/gfapi.map b/api/src/gfapi.map index 09de5fada3a..75ca2645988 100644 --- a/api/src/gfapi.map +++ b/api/src/gfapi.map @@ -30,6 +30,8 @@ GFAPI_3.4.0 { glfs_writev; glfs_readv_async; glfs_writev_async; + glfs_pread; + glfs_pwrite; glfs_pread_async; glfs_pwrite_async; glfs_preadv; @@ -224,6 +226,4 @@ GFAPI_4.0.0 { glfs_lease; glfs_h_lease; glfs_recall_lease; - glfs_pread; - glfs_pwrite; } GFAPI_3.13.0; diff --git a/api/src/glfs-fops.c b/api/src/glfs-fops.c index 35a6a6628e8..f243999c0c8 100644 --- a/api/src/glfs-fops.c +++ b/api/src/glfs-fops.c @@ -748,9 +748,9 @@ invalid_fs: GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_lseek, 3.4.0); -static ssize_t -glfs_preadv_common (struct glfs_fd *glfd, const struct iovec *iovec, - int iovcnt, off_t offset, int flags, struct stat *poststat) +ssize_t +pub_glfs_preadv (struct glfs_fd *glfd, const struct iovec *iovec, int iovcnt, + off_t offset, int flags) { xlator_t *subvol = NULL; ssize_t ret = -1; @@ -759,7 +759,6 @@ glfs_preadv_common (struct glfs_fd *glfd, const struct iovec *iovec, int cnt = 0; struct iobref *iobref = NULL; fd_t *fd = NULL; - struct iatt iatt = {0, }; dict_t *fop_attr = NULL; DECLARE_OLD_THIS; @@ -788,12 +787,9 @@ glfs_preadv_common (struct glfs_fd *glfd, const struct iovec *iovec, gf_msg_debug ("gfapi", 0, "Getting leaseid from thread failed"); ret = syncop_readv (subvol, fd, size, offset, 0, &iov, &cnt, &iobref, - &iatt, fop_attr, NULL); - DECODE_SYNCOP_ERR (ret); - - if (ret >= 0 && poststat) - glfs_iatt_to_stat (glfd->fs, &iatt, poststat); + fop_attr, NULL); + DECODE_SYNCOP_ERR (ret); if (ret <= 0) goto out; @@ -823,13 +819,6 @@ invalid_fs: return ret; } -ssize_t -pub_glfs_preadv (struct glfs_fd *glfd, const struct iovec *iovec, int iovcnt, - off_t offset, int flags) -{ - return glfs_preadv_common (glfd, iovec, iovcnt, offset, flags, NULL); -} - GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_preadv, 3.4.0); @@ -851,8 +840,8 @@ GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_read, 3.4.0); ssize_t -pub_glfs_pread34 (struct glfs_fd *glfd, void *buf, size_t count, off_t offset, - int flags) +pub_glfs_pread (struct glfs_fd *glfd, void *buf, size_t count, off_t offset, + int flags) { struct iovec iov = {0, }; ssize_t ret = 0; @@ -865,25 +854,7 @@ pub_glfs_pread34 (struct glfs_fd *glfd, void *buf, size_t count, off_t offset, return ret; } -GFAPI_SYMVER_PUBLIC(glfs_pread34, glfs_pread, 3.4.0); - - -ssize_t -pub_glfs_pread (struct glfs_fd *glfd, void *buf, size_t count, off_t offset, - int flags, struct stat *poststat) -{ - struct iovec iov = {0, }; - ssize_t ret = 0; - - iov.iov_base = buf; - iov.iov_len = count; - - ret = glfs_preadv_common (glfd, &iov, 1, offset, flags, poststat); - - return ret; -} - -GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_pread, 4.0.0); +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_pread, 3.4.0); ssize_t @@ -1179,10 +1150,9 @@ out: } -static ssize_t -glfs_pwritev_common (struct glfs_fd *glfd, const struct iovec *iovec, - int iovcnt, off_t offset, int flags, - struct stat *prestat, struct stat *poststat) +ssize_t +pub_glfs_pwritev (struct glfs_fd *glfd, const struct iovec *iovec, int iovcnt, + off_t offset, int flags) { xlator_t *subvol = NULL; int ret = -1; @@ -1190,7 +1160,6 @@ glfs_pwritev_common (struct glfs_fd *glfd, const struct iovec *iovec, struct iobuf *iobuf = NULL; struct iovec iov = {0, }; fd_t *fd = NULL; - struct iatt preiatt = {0, }, postiatt = {0, }; dict_t *fop_attr = NULL; DECLARE_OLD_THIS; @@ -1221,20 +1190,15 @@ glfs_pwritev_common (struct glfs_fd *glfd, const struct iovec *iovec, gf_msg_debug ("gfapi", 0, "Getting leaseid from thread failed"); ret = syncop_writev (subvol, fd, &iov, 1, offset, iobref, flags, - &preiatt, &postiatt, fop_attr, NULL); - DECODE_SYNCOP_ERR (ret); + fop_attr, NULL); - if (ret >= 0) { - if (prestat) - glfs_iatt_to_stat (glfd->fs, &preiatt, prestat); - if (poststat) - glfs_iatt_to_stat (glfd->fs, &postiatt, poststat); - } + DECODE_SYNCOP_ERR (ret); if (ret <= 0) goto out; glfd->offset = (offset + iov.iov_len); + out: if (iobuf) iobuf_unref (iobuf); @@ -1255,14 +1219,6 @@ invalid_fs: return ret; } -ssize_t -pub_glfs_pwritev (struct glfs_fd *glfd, const struct iovec *iovec, int iovcnt, - off_t offset, int flags) -{ - return glfs_pwritev_common (glfd, iovec, iovcnt, offset, flags, - NULL, NULL); -} - GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_pwritev, 3.4.0); @@ -1298,8 +1254,8 @@ GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_writev, 3.4.0); ssize_t -pub_glfs_pwrite34 (struct glfs_fd *glfd, const void *buf, size_t count, - off_t offset, int flags) +pub_glfs_pwrite (struct glfs_fd *glfd, const void *buf, size_t count, + off_t offset, int flags) { struct iovec iov = {0, }; ssize_t ret = 0; @@ -1312,26 +1268,8 @@ pub_glfs_pwrite34 (struct glfs_fd *glfd, const void *buf, size_t count, return ret; } -GFAPI_SYMVER_PUBLIC(glfs_pwrite34, glfs_pwrite, 3.4.0); - -ssize_t -pub_glfs_pwrite (struct glfs_fd *glfd, const void *buf, size_t count, - off_t offset, int flags, struct stat *prestat, - struct stat *poststat) -{ - struct iovec iov = {0, }; - ssize_t ret = 0; - - iov.iov_base = (void *) buf; - iov.iov_len = count; - - ret = glfs_pwritev_common (glfd, &iov, 1, offset, flags, - prestat, poststat); - - return ret; -} +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_pwrite, 3.4.0); -GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_pwrite, 4.0.0); extern glfs_t *pub_glfs_from_glfd (glfs_fd_t *); @@ -5143,7 +5081,7 @@ glfs_anonymous_pwritev (struct glfs *fs, struct glfs_object *object, /* TODO : set leaseid */ ret = syncop_writev (subvol, fd, &iov, 1, offset, iobref, flags, - NULL, NULL, NULL, NULL); + NULL, NULL); DECODE_SYNCOP_ERR (ret); iobuf_unref (iobuf); @@ -5213,7 +5151,7 @@ glfs_anonymous_preadv (struct glfs *fs, struct glfs_object *object, /* TODO : set leaseid */ ret = syncop_readv (subvol, fd, size, offset, flags, &iov, &cnt, - &iobref, NULL, NULL, NULL); + &iobref, NULL, NULL); DECODE_SYNCOP_ERR (ret); if (ret <= 0) goto out; diff --git a/api/src/glfs.h b/api/src/glfs.h index c174f53dfaa..ceed2b34290 100644 --- a/api/src/glfs.h +++ b/api/src/glfs.h @@ -534,12 +534,11 @@ int glfs_writev_async (glfs_fd_t *fd, const struct iovec *iov, int count, // glfs_p{read,write}[_async] ssize_t glfs_pread (glfs_fd_t *fd, void *buf, size_t count, off_t offset, - int flags, struct stat *poststat) __THROW - GFAPI_PUBLIC(glfs_pread, 4.0.0); + int flags) __THROW + GFAPI_PUBLIC(glfs_pread, 3.4.0); ssize_t glfs_pwrite (glfs_fd_t *fd, const void *buf, size_t count, - off_t offset, int flags, struct stat *prestat, - struct stat *poststat) __THROW - GFAPI_PUBLIC(glfs_pwrite, 4.0.0); + off_t offset, int flags) __THROW + GFAPI_PUBLIC(glfs_pwrite, 3.4.0); int glfs_pread_async (glfs_fd_t *fd, void *buf, size_t count, off_t offset, int flags, glfs_io_cbk fn, void *data) __THROW GFAPI_PUBLIC(glfs_pread_async, 3.4.0); diff --git a/libglusterfs/src/generator.py b/libglusterfs/src/generator.py index bfa774b1ef5..efe9bcba0dd 100755 --- a/libglusterfs/src/generator.py +++ b/libglusterfs/src/generator.py @@ -142,8 +142,6 @@ ops['writev'] = ( ('fop-arg', 'off', 'off_t', 'offset'), ('fop-arg', 'flags', 'uint32_t', 'flags'), ('fop-arg', 'iobref', 'struct iobref *'), - ('extra', 'preop', 'struct iatt', '&preop'), - ('extra', 'postop', 'struct iatt', '&postop'), ('fop-arg', 'xdata', 'dict_t *', 'xdata'), ('cbk-arg', 'prebuf', 'struct iatt *'), ('cbk-arg', 'postbuf', 'struct iatt *'), @@ -156,7 +154,6 @@ ops['readv'] = ( ('fop-arg', 'size', 'size_t'), ('fop-arg', 'offset', 'off_t'), ('fop-arg', 'flags', 'uint32_t'), - ('extra', 'iatt', 'struct iatt', '&iatt'), ('fop-arg', 'xdata', 'dict_t *'), ('cbk-arg', 'vector', 'struct iovec *'), ('cbk-arg', 'count', 'int32_t'), diff --git a/libglusterfs/src/syncop.c b/libglusterfs/src/syncop.c index d0e1ae10774..6aafcbe61e3 100644 --- a/libglusterfs/src/syncop.c +++ b/libglusterfs/src/syncop.c @@ -1936,7 +1936,6 @@ syncop_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this, args->iobref = iobref_ref (iobref); args->vector = iov_dup (vector, count); args->count = count; - args->iatt1 = *stbuf; } __wake (args); @@ -1948,8 +1947,7 @@ syncop_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int syncop_readv (xlator_t *subvol, fd_t *fd, size_t size, off_t off, uint32_t flags, struct iovec **vector, int *count, - struct iobref **iobref, struct iatt *iatt, - dict_t *xdata_in, dict_t **xdata_out) + struct iobref **iobref, dict_t *xdata_in, dict_t **xdata_out) { struct syncargs args = {0, }; @@ -1961,9 +1959,6 @@ syncop_readv (xlator_t *subvol, fd_t *fd, size_t size, off_t off, else if (args.xdata) dict_unref (args.xdata); - if (iatt) - *iatt = args.iatt1; - if (args.op_ret < 0) goto out; @@ -1985,6 +1980,7 @@ out: if (args.op_ret < 0) return -args.op_errno; return args.op_ret; + } int @@ -2001,11 +1997,6 @@ syncop_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if (xdata) args->xdata = dict_ref (xdata); - if (op_ret >= 0) { - args->iatt1 = *prebuf; - args->iatt2 = *postbuf; - } - __wake (args); return 0; @@ -2014,8 +2005,7 @@ syncop_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int syncop_writev (xlator_t *subvol, fd_t *fd, const struct iovec *vector, int32_t count, off_t offset, struct iobref *iobref, - uint32_t flags, struct iatt *preiatt, struct iatt *postiatt, - dict_t *xdata_in, dict_t **xdata_out) + uint32_t flags, dict_t *xdata_in, dict_t **xdata_out) { struct syncargs args = {0, }; @@ -2023,11 +2013,6 @@ syncop_writev (xlator_t *subvol, fd_t *fd, const struct iovec *vector, fd, (struct iovec *) vector, count, offset, flags, iobref, xdata_in); - if (preiatt) - *preiatt = args.iatt1; - if (postiatt) - *postiatt = args.iatt2; - if (xdata_out) *xdata_out = args.xdata; else if (args.xdata) diff --git a/libglusterfs/src/syncop.h b/libglusterfs/src/syncop.h index fb6b3da86a0..ea417934226 100644 --- a/libglusterfs/src/syncop.h +++ b/libglusterfs/src/syncop.h @@ -462,14 +462,13 @@ int syncop_write (xlator_t *subvol, fd_t *fd, const char *buf, int size, int syncop_writev (xlator_t *subvol, fd_t *fd, const struct iovec *vector, int32_t count, off_t offset, struct iobref *iobref, - uint32_t flags, struct iatt *preiatt, struct iatt *postiatt, - dict_t *xdata_in, dict_t **xdata_out); + uint32_t flags, dict_t *xdata_in, dict_t **xdata_out); int syncop_readv (xlator_t *subvol, fd_t *fd, size_t size, off_t off, uint32_t flags, /* out */ struct iovec **vector, int *count, struct iobref **iobref, - struct iatt *iatt, dict_t *xdata_in, dict_t **xdata_out); + dict_t *xdata_in, dict_t **xdata_out); int syncop_ftruncate (xlator_t *subvol, fd_t *fd, off_t offset, dict_t *xdata_in, dict_t **xdata_out); diff --git a/tests/basic/gfapi/upcall-cache-invalidate.c b/tests/basic/gfapi/upcall-cache-invalidate.c index d1b421dff18..9add3381278 100644 --- a/tests/basic/gfapi/upcall-cache-invalidate.c +++ b/tests/basic/gfapi/upcall-cache-invalidate.c @@ -137,7 +137,7 @@ main (int argc, char *argv[]) LOG_ERR ("glfs_lseek", ret); memset (readbuf, 0, sizeof(readbuf)); - ret = glfs_pread (fd_tmp2, readbuf, 4, 0, 0, NULL); + ret = glfs_pread (fd_tmp2, readbuf, 4, 0, 0); if (ret <= 0) { ret = -1; diff --git a/tests/basic/gfapi/upcall-register-api.c b/tests/basic/gfapi/upcall-register-api.c index cabd8be4f31..56227a93d0a 100644 --- a/tests/basic/gfapi/upcall-register-api.c +++ b/tests/basic/gfapi/upcall-register-api.c @@ -117,7 +117,7 @@ int perform_io (glfs_t *fs, glfs_t *fs2, int cnt) LOG_ERR ("glfs_lseek", ret); memset (readbuf, 0, sizeof(readbuf)); - ret = glfs_pread (fd_tmp2, readbuf, 4, 0, 0, NULL); + ret = glfs_pread (fd_tmp2, readbuf, 4, 0, 0); if (ret <= 0) { ret = -1; diff --git a/tests/bugs/io-cache/bug-read-hang.c b/tests/bugs/io-cache/bug-read-hang.c index 7709a41719d..74dfddd7a6e 100644 --- a/tests/bugs/io-cache/bug-read-hang.c +++ b/tests/bugs/io-cache/bug-read-hang.c @@ -102,7 +102,7 @@ main (int argc, char *argv[]) buf = (char *) malloc (5); - ret = glfs_pread (fd, buf, 5, 0, 0, NULL); + ret = glfs_pread (fd, buf, 5, 0, 0); if (ret < 0) { fprintf (stderr, "Read(%s): %d (%s)\n", "test", ret, strerror (errno)); diff --git a/xlators/cluster/afr/src/afr-self-heal-data.c b/xlators/cluster/afr/src/afr-self-heal-data.c index 40dee7a7d6c..72e0e85a0a5 100644 --- a/xlators/cluster/afr/src/afr-self-heal-data.c +++ b/xlators/cluster/afr/src/afr-self-heal-data.c @@ -141,7 +141,7 @@ __afr_is_sink_zero_filled (xlator_t *this, fd_t *fd, size_t size, priv = this->private; ret = syncop_readv (priv->children[sink], fd, size, offset, 0, &iovec, - &count, &iobref, NULL, NULL, NULL); + &count, &iobref, NULL, NULL); if (ret < 0) goto out; ret = iov_0filled (iovec, count); @@ -171,7 +171,7 @@ __afr_selfheal_data_read_write (call_frame_t *frame, xlator_t *this, fd_t *fd, priv = this->private; ret = syncop_readv (priv->children[source], fd, size, offset, 0, - &iovec, &count, &iobref, NULL, NULL, NULL); + &iovec, &count, &iobref, NULL, NULL); if (ret <= 0) return ret; @@ -220,7 +220,7 @@ __afr_selfheal_data_read_write (call_frame_t *frame, xlator_t *this, fd_t *fd, } ret = syncop_writev (priv->children[i], fd, iovec, count, - offset, iobref, 0, NULL, NULL, NULL, NULL); + offset, iobref, 0, NULL, NULL); if (ret != iov_length (iovec, count)) { /* write() failed on this sink. unset the corresponding member in sinks[] (which is healed_sinks[] in the diff --git a/xlators/cluster/dht/src/dht-rebalance.c b/xlators/cluster/dht/src/dht-rebalance.c index 6f29f91913f..a2a051e27b7 100644 --- a/xlators/cluster/dht/src/dht-rebalance.c +++ b/xlators/cluster/dht/src/dht-rebalance.c @@ -1160,7 +1160,7 @@ __dht_rebalance_migrate_data (xlator_t *this, gf_defrag_info_t *defrag, ret = syncop_readv (from, src, read_size, offset, 0, &vector, &count, &iobref, NULL, - NULL, NULL); + NULL); if (!ret || (ret < 0)) { *fop_errno = -ret; break; @@ -1206,8 +1206,7 @@ __dht_rebalance_migrate_data (xlator_t *this, gf_defrag_info_t *defrag, } ret = syncop_writev (to, dst, vector, count, - offset, iobref, 0, NULL, NULL, - xdata, NULL); + offset, iobref, 0, xdata, NULL); if (ret < 0) { *fop_errno = -ret; } diff --git a/xlators/experimental/fdl/src/gen_recon.py b/xlators/experimental/fdl/src/gen_recon.py index 75323ea3dd9..db7f7bbc31c 100755 --- a/xlators/experimental/fdl/src/gen_recon.py +++ b/xlators/experimental/fdl/src/gen_recon.py @@ -142,7 +142,7 @@ def get_special_subs (name, args, fop_type): # is not stored in or read from the journal. There are other ways to # do that, but this is the only place we need anything similar and we # already have to treat it as a special case so this is simplest. - s_args_str = 'fd, &vector, 1, off, iobref, flags, &preop, &postop, xdata' + s_args_str = 'fd, &vector, 1, off, iobref, flags, xdata' elif name == 'symlink': # Swap 'linkpath' and 'loc'. s_args_str = '&loc, linkpath, &iatt, xdata' diff --git a/xlators/features/bit-rot/src/bitd/bit-rot.c b/xlators/features/bit-rot/src/bitd/bit-rot.c index a9b70b61f8a..db97ce54735 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 18f00d7d2d8..8fee435de64 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, &fstatbuf); + ret = glfs_pread (glfd, iobuf->ptr, size, offset, 0); if (ret < 0) { op_ret = -1; op_errno = errno; @@ -2005,6 +2005,16 @@ 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); diff --git a/xlators/storage/posix/src/posix-entry-ops.c b/xlators/storage/posix/src/posix-entry-ops.c index 377fece5610..d8ec34a742b 100644 --- a/xlators/storage/posix/src/posix-entry-ops.c +++ b/xlators/storage/posix/src/posix-entry-ops.c @@ -2278,7 +2278,7 @@ posix_put (call_frame_t *frame, xlator_t *this, loc_t *loc, } op_ret = syncop_writev (this, fd, vector, count, offset, iobref, - flags, NULL, NULL, xdata, NULL); + flags, xdata, NULL); if (op_ret < 0) { op_errno = errno; gf_msg (this->name, GF_LOG_ERROR, errno, P_MSG_WRITE_FAILED, |