diff options
author | ShyamsundarR <srangana@redhat.com> | 2018-05-08 10:59:46 -0400 |
---|---|---|
committer | ShyamsundarR <srangana@redhat.com> | 2018-05-08 11:27:42 -0400 |
commit | b09db37b4fb17816631b3e837ff08a98376e0c0a (patch) | |
tree | a4a767bddfdb962fac10552c1906aa85acdb7db6 /api/src/glfs-fops.c | |
parent | 548902d1a74b6a5b8139411ddb34dce009158e74 (diff) |
Revert "gfapi: return pre/post attributes at callback for glfs api"
This reverts commit 384562b294e9a7847403961e878a4daa0fff33eb.
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.
Updates: bz#1575386
Change-Id: Ia071797bec1e2ac085818e3909771f9ddeac6676
Diffstat (limited to 'api/src/glfs-fops.c')
-rw-r--r-- | api/src/glfs-fops.c | 386 |
1 files changed, 55 insertions, 331 deletions
diff --git a/api/src/glfs-fops.c b/api/src/glfs-fops.c index a3e5afaf627..8f24b77b0b5 100644 --- a/api/src/glfs-fops.c +++ b/api/src/glfs-fops.c @@ -907,27 +907,20 @@ struct glfs_io { struct iovec *iov; int count; int flags; - gf_boolean_t oldcb; - union { - glfs_io_cbk34 fn34; - glfs_io_cbk fn; - }; + glfs_io_cbk fn; void *data; }; static int glfs_io_async_cbk (int op_ret, int op_errno, call_frame_t *frame, - void *cookie, struct iovec *iovec, int count, - struct iatt *prebuf, struct iatt *postbuf) + void *cookie, struct iovec *iovec, int count) { struct glfs_io *gio = NULL; xlator_t *subvol = NULL; struct glfs *fs = NULL; struct glfs_fd *glfd = NULL; int ret = -1; - struct stat prestat = {}, *prestatp = NULL; - struct stat poststat = {}, *poststatp = NULL; GF_VALIDATE_OR_GOTO ("gfapi", frame, inval); GF_VALIDATE_OR_GOTO ("gfapi", cookie, inval); @@ -958,21 +951,8 @@ glfs_io_async_cbk (int op_ret, int op_errno, call_frame_t *frame, out: errno = op_errno; - if (gio->oldcb) { - gio->fn34 (gio->glfd, op_ret, gio->data); - } else { - if (prebuf) { - prestatp = &prestat; - glfs_iatt_to_stat (fs, prebuf, prestatp); - } - - if (postbuf) { - poststatp = &poststat; - glfs_iatt_to_stat (fs, postbuf, poststatp); - } + gio->fn (gio->glfd, op_ret, gio->data); - gio->fn (gio->glfd, op_ret, prestatp, poststatp, gio->data); - } err: fd_unref (glfd->fd); /* Since the async operation is complete @@ -997,17 +977,16 @@ glfs_preadv_async_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int count, struct iatt *stbuf, struct iobref *iobref, dict_t *xdata) { - glfs_io_async_cbk (op_ret, op_errno, frame, cookie, iovec, count, - NULL, stbuf); + glfs_io_async_cbk (op_ret, op_errno, frame, cookie, iovec, count); return 0; } -static int -glfs_preadv_async_common (struct glfs_fd *glfd, const struct iovec *iovec, - int count, off_t offset, int flags, - gf_boolean_t oldcb, glfs_io_cbk fn, void *data) +int +pub_glfs_preadv_async (struct glfs_fd *glfd, const struct iovec *iovec, + int count, off_t offset, int flags, glfs_io_cbk fn, + void *data) { struct glfs_io *gio = NULL; int ret = 0; @@ -1064,7 +1043,6 @@ glfs_preadv_async_common (struct glfs_fd *glfd, const struct iovec *iovec, gio->count = count; gio->offset = offset; gio->flags = flags; - gio->oldcb = oldcb; gio->fn = fn; gio->data = data; @@ -1104,47 +1082,7 @@ invalid_fs: return -1; } -int -pub_glfs_preadv_async34 (struct glfs_fd *glfd, const struct iovec *iovec, - int count, off_t offset, int flags, glfs_io_cbk34 fn, - void *data) -{ - return glfs_preadv_async_common (glfd, iovec, count, offset, flags, - _gf_true, (void *)fn, data); -} - -GFAPI_SYMVER_PUBLIC(glfs_preadv_async34, glfs_preadv_async, 3.4.0); - - -int -pub_glfs_preadv_async (struct glfs_fd *glfd, const struct iovec *iovec, - int count, off_t offset, int flags, glfs_io_cbk fn, - void *data) -{ - return glfs_preadv_async_common (glfd, iovec, count, offset, flags, - _gf_false, fn, data); -} - -GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_preadv_async, 4.0.0); - - -int -pub_glfs_read_async34 (struct glfs_fd *glfd, void *buf, size_t count, int flags, - glfs_io_cbk34 fn, void *data) -{ - struct iovec iov = {0, }; - ssize_t ret = 0; - - iov.iov_base = buf; - iov.iov_len = count; - - ret = glfs_preadv_async_common (glfd, &iov, 1, glfd->offset, flags, - _gf_true, (void *)fn, data); - - return ret; -} - -GFAPI_SYMVER_PUBLIC(glfs_read_async34, glfs_read_async, 3.4.0); +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_preadv_async, 3.4.0); int @@ -1157,18 +1095,17 @@ pub_glfs_read_async (struct glfs_fd *glfd, void *buf, size_t count, int flags, iov.iov_base = buf; iov.iov_len = count; - ret = glfs_preadv_async_common (glfd, &iov, 1, glfd->offset, flags, - _gf_false, fn, data); + ret = pub_glfs_preadv_async (glfd, &iov, 1, glfd->offset, flags, fn, data); return ret; } -GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_read_async, 4.0.0); +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_read_async, 3.4.0); int -pub_glfs_pread_async34 (struct glfs_fd *glfd, void *buf, size_t count, - off_t offset, int flags, glfs_io_cbk34 fn, void *data) +pub_glfs_pread_async (struct glfs_fd *glfd, void *buf, size_t count, + off_t offset, int flags, glfs_io_cbk fn, void *data) { struct iovec iov = {0, }; ssize_t ret = 0; @@ -1176,46 +1113,12 @@ pub_glfs_pread_async34 (struct glfs_fd *glfd, void *buf, size_t count, iov.iov_base = buf; iov.iov_len = count; - ret = glfs_preadv_async_common (glfd, &iov, 1, offset, flags, - _gf_true, (void *)fn, data); + ret = pub_glfs_preadv_async (glfd, &iov, 1, offset, flags, fn, data); return ret; } -GFAPI_SYMVER_PUBLIC(glfs_pread_async34, glfs_pread_async, 3.4.0); - - -int -pub_glfs_pread_async (struct glfs_fd *glfd, void *buf, size_t count, - off_t offset, int flags, glfs_io_cbk fn, void *data) -{ - struct iovec iov = {0, }; - ssize_t ret = 0; - - iov.iov_base = buf; - iov.iov_len = count; - - ret = glfs_preadv_async_common (glfd, &iov, 1, offset, flags, - _gf_false, fn, data); - - return ret; -} - -GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_pread_async, 4.0.0); - - -int -pub_glfs_readv_async34 (struct glfs_fd *glfd, const struct iovec *iov, - int count, int flags, glfs_io_cbk34 fn, void *data) -{ - ssize_t ret = 0; - - ret = glfs_preadv_async_common (glfd, iov, count, glfd->offset, flags, - _gf_true, (void *)fn, data); - return ret; -} - -GFAPI_SYMVER_PUBLIC(glfs_readv_async34, glfs_readv_async, 3.4.0); +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_pread_async, 3.4.0); int @@ -1224,12 +1127,12 @@ pub_glfs_readv_async (struct glfs_fd *glfd, const struct iovec *iov, int count, { ssize_t ret = 0; - ret = glfs_preadv_async_common (glfd, iov, count, glfd->offset, flags, - _gf_false, fn, data); + ret = pub_glfs_preadv_async (glfd, iov, count, glfd->offset, flags, + fn, data); return ret; } -GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_readv_async, 4.0.0); +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_readv_async, 3.4.0); static int @@ -1438,16 +1341,15 @@ glfs_pwritev_async_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int op_ret, int op_errno, struct iatt *prebuf, struct iatt *postbuf, dict_t *xdata) { - glfs_io_async_cbk (op_ret, op_errno, frame, cookie, NULL, 0, - prebuf, postbuf); + glfs_io_async_cbk (op_ret, op_errno, frame, cookie, NULL, 0); return 0; } -static int -glfs_pwritev_async_common (struct glfs_fd *glfd, const struct iovec *iovec, - int count, off_t offset, int flags, - gf_boolean_t oldcb, glfs_io_cbk fn, void *data) +int +pub_glfs_pwritev_async (struct glfs_fd *glfd, const struct iovec *iovec, + int count, off_t offset, int flags, glfs_io_cbk fn, + void *data) { struct glfs_io *gio = NULL; int ret = -1; @@ -1488,7 +1390,6 @@ glfs_pwritev_async_common (struct glfs_fd *glfd, const struct iovec *iovec, gio->glfd = glfd; gio->offset = offset; gio->flags = flags; - gio->oldcb = oldcb; gio->fn = fn; gio->data = data; gio->count = 1; @@ -1548,47 +1449,7 @@ invalid_fs: return ret; } -int -pub_glfs_pwritev_async34 (struct glfs_fd *glfd, const struct iovec *iovec, - int count, off_t offset, int flags, glfs_io_cbk34 fn, - void *data) -{ - return glfs_pwritev_async_common (glfd, iovec, count, offset, flags, - _gf_true, (void *)fn, data); -} - -GFAPI_SYMVER_PUBLIC(glfs_pwritev_async34, glfs_pwritev_async, 3.4.0); - - -int -pub_glfs_pwritev_async (struct glfs_fd *glfd, const struct iovec *iovec, - int count, off_t offset, int flags, glfs_io_cbk fn, - void *data) -{ - return glfs_pwritev_async_common (glfd, iovec, count, offset, flags, - _gf_false, fn, data); -} - -GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_pwritev_async, 4.0.0); - - -int -pub_glfs_write_async34 (struct glfs_fd *glfd, const void *buf, size_t count, - int flags, glfs_io_cbk34 fn, void *data) -{ - struct iovec iov = {0, }; - ssize_t ret = 0; - - iov.iov_base = (void *) buf; - iov.iov_len = count; - - ret = glfs_pwritev_async_common (glfd, &iov, 1, glfd->offset, flags, - _gf_true, (void *)fn, data); - - return ret; -} - -GFAPI_SYMVER_PUBLIC(glfs_write_async34, glfs_write_async, 3.4.0); +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_pwritev_async, 3.4.0); int @@ -1601,18 +1462,17 @@ pub_glfs_write_async (struct glfs_fd *glfd, const void *buf, size_t count, iov.iov_base = (void *) buf; iov.iov_len = count; - ret = glfs_pwritev_async_common (glfd, &iov, 1, glfd->offset, flags, - _gf_false, fn, data); + ret = pub_glfs_pwritev_async (glfd, &iov, 1, glfd->offset, flags, fn, data); return ret; } -GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_write_async, 4.0.0); +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_write_async, 3.4.0); int -pub_glfs_pwrite_async34 (struct glfs_fd *glfd, const void *buf, int count, - off_t offset, int flags, glfs_io_cbk34 fn, void *data) +pub_glfs_pwrite_async (struct glfs_fd *glfd, const void *buf, int count, + off_t offset, int flags, glfs_io_cbk fn, void *data) { struct iovec iov = {0, }; ssize_t ret = 0; @@ -1620,46 +1480,12 @@ pub_glfs_pwrite_async34 (struct glfs_fd *glfd, const void *buf, int count, iov.iov_base = (void *) buf; iov.iov_len = count; - ret = glfs_pwritev_async_common (glfd, &iov, 1, offset, flags, - _gf_true, (void *)fn, data); + ret = pub_glfs_pwritev_async (glfd, &iov, 1, offset, flags, fn, data); return ret; } -GFAPI_SYMVER_PUBLIC(glfs_pwrite_async34, glfs_pwrite_async, 3.4.0); - - -int -pub_glfs_pwrite_async (struct glfs_fd *glfd, const void *buf, int count, - off_t offset, int flags, glfs_io_cbk fn, void *data) -{ - struct iovec iov = {0, }; - ssize_t ret = 0; - - iov.iov_base = (void *) buf; - iov.iov_len = count; - - ret = glfs_pwritev_async_common (glfd, &iov, 1, offset, flags, - _gf_false, fn, data); - - return ret; -} - -GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_pwrite_async, 4.0.0); - - -int -pub_glfs_writev_async34 (struct glfs_fd *glfd, const struct iovec *iov, - int count, int flags, glfs_io_cbk34 fn, void *data) -{ - ssize_t ret = 0; - - ret = glfs_pwritev_async_common (glfd, iov, count, glfd->offset, flags, - _gf_true, (void *)fn, data); - return ret; -} - -GFAPI_SYMVER_PUBLIC(glfs_writev_async34, glfs_writev_async, 3.4.0); +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_pwrite_async, 3.4.0); int @@ -1668,12 +1494,12 @@ pub_glfs_writev_async (struct glfs_fd *glfd, const struct iovec *iov, int count, { ssize_t ret = 0; - ret = glfs_pwritev_async_common (glfd, iov, count, glfd->offset, flags, - _gf_false, fn, data); + ret = pub_glfs_pwritev_async (glfd, iov, count, glfd->offset, flags, + fn, data); return ret; } -GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_writev_async, 4.0.0); +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_writev_async, 3.4.0); static int @@ -1759,15 +1585,14 @@ glfs_fsync_async_cbk (call_frame_t *frame, void *cookie, int32_t op_errno, struct iatt *prebuf, struct iatt *postbuf, dict_t *xdata) { - glfs_io_async_cbk (op_ret, op_errno, frame, cookie, NULL, 0, - prebuf, postbuf); + glfs_io_async_cbk (op_ret, op_errno, frame, cookie, NULL, 0); return 0; } static int -glfs_fsync_async_common (struct glfs_fd *glfd, gf_boolean_t oldcb, - glfs_io_cbk fn, void *data, int dataonly) +glfs_fsync_async_common (struct glfs_fd *glfd, glfs_io_cbk fn, void *data, + int dataonly) { struct glfs_io *gio = NULL; int ret = 0; @@ -1811,7 +1636,6 @@ glfs_fsync_async_common (struct glfs_fd *glfd, gf_boolean_t oldcb, gio->op = GF_FOP_FSYNC; gio->glfd = glfd; gio->flags = dataonly; - gio->oldcb = oldcb; gio->fn = fn; gio->data = data; @@ -1836,25 +1660,6 @@ out: int -pub_glfs_fsync_async34 (struct glfs_fd *glfd, glfs_io_cbk34 fn, void *data) -{ - int ret = -1; - - DECLARE_OLD_THIS; - __GLFS_ENTRY_VALIDATE_FD (glfd, invalid_fs); - - ret = glfs_fsync_async_common (glfd, _gf_true, (void *)fn, data, 0); - - __GLFS_EXIT_FS; - -invalid_fs: - return ret; -} - -GFAPI_SYMVER_PUBLIC(glfs_fsync_async34, glfs_fsync_async, 3.4.0); - - -int pub_glfs_fsync_async (struct glfs_fd *glfd, glfs_io_cbk fn, void *data) { int ret = -1; @@ -1862,7 +1667,7 @@ pub_glfs_fsync_async (struct glfs_fd *glfd, glfs_io_cbk fn, void *data) DECLARE_OLD_THIS; __GLFS_ENTRY_VALIDATE_FD (glfd, invalid_fs); - ret = glfs_fsync_async_common (glfd, _gf_false, fn, data, 0); + ret = glfs_fsync_async_common (glfd, fn, data, 0); __GLFS_EXIT_FS; @@ -1870,7 +1675,7 @@ invalid_fs: return ret; } -GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_fsync_async, 4.0.0); +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_fsync_async, 3.4.0); static int @@ -1951,25 +1756,6 @@ GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_fdatasync, 4.0.0); int -pub_glfs_fdatasync_async34 (struct glfs_fd *glfd, glfs_io_cbk34 fn, void *data) -{ - int ret = -1; - - DECLARE_OLD_THIS; - __GLFS_ENTRY_VALIDATE_FD (glfd, invalid_fs); - - ret = glfs_fsync_async_common (glfd, _gf_true, (void *)fn, data, 1); - - __GLFS_EXIT_FS; - -invalid_fs: - return ret; -} - -GFAPI_SYMVER_PUBLIC(glfs_fdatasync_async34, glfs_fdatasync_async, 3.4.0); - - -int pub_glfs_fdatasync_async (struct glfs_fd *glfd, glfs_io_cbk fn, void *data) { int ret = -1; @@ -1977,7 +1763,7 @@ pub_glfs_fdatasync_async (struct glfs_fd *glfd, glfs_io_cbk fn, void *data) DECLARE_OLD_THIS; __GLFS_ENTRY_VALIDATE_FD (glfd, invalid_fs); - ret = glfs_fsync_async_common (glfd, _gf_false, fn, data, 1); + ret = glfs_fsync_async_common (glfd, fn, data, 1); __GLFS_EXIT_FS; @@ -1985,7 +1771,7 @@ invalid_fs: return ret; } -GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_fdatasync_async, 4.0.0); +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_fdatasync_async, 3.4.0); static int @@ -2116,15 +1902,14 @@ glfs_ftruncate_async_cbk (call_frame_t *frame, void *cookie, xlator_t *this, struct iatt *prebuf, struct iatt *postbuf, dict_t *xdata) { - glfs_io_async_cbk (op_ret, op_errno, frame, cookie, NULL, 0, - prebuf, postbuf); + glfs_io_async_cbk (op_ret, op_errno, frame, cookie, NULL, 0); return 0; } -static int -glfs_ftruncate_async_common (struct glfs_fd *glfd, off_t offset, - gf_boolean_t oldcb, glfs_io_cbk fn, void *data) +int +pub_glfs_ftruncate_async (struct glfs_fd *glfd, off_t offset, glfs_io_cbk fn, + void *data) { struct glfs_io *gio = NULL; int ret = -1; @@ -2168,7 +1953,6 @@ glfs_ftruncate_async_common (struct glfs_fd *glfd, off_t offset, gio->op = GF_FOP_FTRUNCATE; gio->glfd = glfd; gio->offset = offset; - gio->oldcb = oldcb; gio->fn = fn; gio->data = data; @@ -2203,25 +1987,7 @@ invalid_fs: return ret; } -int -pub_glfs_ftruncate_async34 (struct glfs_fd *glfd, off_t offset, - glfs_io_cbk34 fn, void *data) -{ - return glfs_ftruncate_async_common (glfd, offset, _gf_true, - (void *)fn, data); -} - -GFAPI_SYMVER_PUBLIC(glfs_ftruncate_async34, glfs_ftruncate_async, 3.4.0); - - -int -pub_glfs_ftruncate_async (struct glfs_fd *glfd, off_t offset, - glfs_io_cbk fn, void *data) -{ - return glfs_ftruncate_async_common (glfd, offset, _gf_false, fn, data); -} - -GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_ftruncate_async, 4.0.0); +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_ftruncate_async, 3.4.0); int @@ -3001,15 +2767,14 @@ glfs_discard_async_cbk (call_frame_t *frame, void *cookie, int32_t op_errno, struct iatt *preop_stbuf, struct iatt *postop_stbuf, dict_t *xdata) { - glfs_io_async_cbk (op_ret, op_errno, frame, cookie, NULL, 0, - preop_stbuf, postop_stbuf); + glfs_io_async_cbk (op_ret, op_errno, frame, cookie, NULL, 0); return 0; } -static int -glfs_discard_async_common (struct glfs_fd *glfd, off_t offset, size_t len, - gf_boolean_t oldcb, glfs_io_cbk fn, void *data) +int +pub_glfs_discard_async (struct glfs_fd *glfd, off_t offset, size_t len, + glfs_io_cbk fn, void *data) { struct glfs_io *gio = NULL; int ret = -1; @@ -3054,7 +2819,6 @@ glfs_discard_async_common (struct glfs_fd *glfd, off_t offset, size_t len, gio->glfd = glfd; gio->offset = offset; gio->count = len; - gio->oldcb = oldcb; gio->fn = fn; gio->data = data; @@ -3085,26 +2849,7 @@ invalid_fs: return ret; } -int -pub_glfs_discard_async35 (struct glfs_fd *glfd, off_t offset, size_t len, - glfs_io_cbk34 fn, void *data) -{ - return glfs_discard_async_common (glfd, offset, len, _gf_true, - (void *)fn, data); -} - -GFAPI_SYMVER_PUBLIC(glfs_discard_async35, glfs_discard_async, 3.5.0); - - -int -pub_glfs_discard_async (struct glfs_fd *glfd, off_t offset, size_t len, - glfs_io_cbk fn, void *data) -{ - return glfs_discard_async_common (glfd, offset, len, _gf_false, fn, - data); -} - -GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_discard_async, 4.0.0); +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_discard_async, 3.5.0); static int @@ -3113,16 +2858,15 @@ glfs_zerofill_async_cbk (call_frame_t *frame, void *cookie, int32_t op_errno, struct iatt *preop_stbuf, struct iatt *postop_stbuf, dict_t *xdata) { - glfs_io_async_cbk (op_ret, op_errno, frame, cookie, NULL, 0, - preop_stbuf, postop_stbuf); + glfs_io_async_cbk (op_ret, op_errno, frame, cookie, NULL, 0); return 0; } -static int -glfs_zerofill_async_common (struct glfs_fd *glfd, off_t offset, off_t len, - gf_boolean_t oldcb, glfs_io_cbk fn, void *data) +int +pub_glfs_zerofill_async (struct glfs_fd *glfd, off_t offset, off_t len, + glfs_io_cbk fn, void *data) { struct glfs_io *gio = NULL; int ret = -1; @@ -3167,7 +2911,6 @@ glfs_zerofill_async_common (struct glfs_fd *glfd, off_t offset, off_t len, gio->glfd = glfd; gio->offset = offset; gio->count = len; - gio->oldcb = oldcb; gio->fn = fn; gio->data = data; @@ -3200,26 +2943,7 @@ invalid_fs: return ret; } -int -pub_glfs_zerofill_async35 (struct glfs_fd *glfd, off_t offset, off_t len, - glfs_io_cbk34 fn, void *data) -{ - return glfs_zerofill_async_common (glfd, offset, len, _gf_true, - (void *)fn, data); -} - -GFAPI_SYMVER_PUBLIC(glfs_zerofill_async35, glfs_zerofill_async, 3.5.0); - - -int -pub_glfs_zerofill_async (struct glfs_fd *glfd, off_t offset, off_t len, - glfs_io_cbk fn, void *data) -{ - return glfs_zerofill_async_common (glfd, offset, len, _gf_false, - fn, data); -} - -GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_zerofill_async, 4.0.0); +GFAPI_SYMVER_PUBLIC_DEFAULT(glfs_zerofill_async, 3.5.0); void |