|
|
d1681e |
From 1a5680e36331d10be2b677f7a5a085e706297c96 Mon Sep 17 00:00:00 2001
|
|
|
d1681e |
From: Ashish Pandey <aspandey@redhat.com>
|
|
|
d1681e |
Date: Thu, 17 May 2018 15:55:44 +0530
|
|
|
d1681e |
Subject: [PATCH 288/305] feature/locks: Unwind response based on clinet
|
|
|
d1681e |
version
|
|
|
d1681e |
|
|
|
d1681e |
upstream patch:
|
|
|
d1681e |
https://review.gluster.org/#/c/20031/
|
|
|
d1681e |
|
|
|
d1681e |
>Change-Id: I6fc7755cca0d6f61cb775363618036228925842c
|
|
|
d1681e |
|
|
|
d1681e |
Change-Id: I6fc7755cca0d6f61cb775363618036228925842c
|
|
|
d1681e |
BUG: 1558948
|
|
|
d1681e |
Signed-off-by: Ashish Pandey <aspandey@redhat.com>
|
|
|
d1681e |
Reviewed-on: https://code.engineering.redhat.com/gerrit/140080
|
|
|
d1681e |
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
|
|
d1681e |
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
|
|
|
d1681e |
---
|
|
|
d1681e |
xlators/features/locks/src/posix.c | 142 +++++++++++++++++++++++--------------
|
|
|
d1681e |
1 file changed, 88 insertions(+), 54 deletions(-)
|
|
|
d1681e |
|
|
|
d1681e |
diff --git a/xlators/features/locks/src/posix.c b/xlators/features/locks/src/posix.c
|
|
|
d1681e |
index ef4bebf..63bcf31 100644
|
|
|
d1681e |
--- a/xlators/features/locks/src/posix.c
|
|
|
d1681e |
+++ b/xlators/features/locks/src/posix.c
|
|
|
d1681e |
@@ -39,6 +39,43 @@ static int format_brickname(char *);
|
|
|
d1681e |
int pl_lockinfo_get_brickname (xlator_t *, inode_t *, int32_t *);
|
|
|
d1681e |
static int fetch_pathinfo(xlator_t *, inode_t *, int32_t *, char **);
|
|
|
d1681e |
|
|
|
d1681e |
+#define PL_STACK_UNWIND_AND_FREE(__local, fop, frame, op_ret, params ...) \
|
|
|
d1681e |
+ do { \
|
|
|
d1681e |
+ frame->local = NULL; \
|
|
|
d1681e |
+ STACK_UNWIND_STRICT (fop, frame, op_ret, params); \
|
|
|
d1681e |
+ if (__local) { \
|
|
|
d1681e |
+ if (__local->inodelk_dom_count_req) \
|
|
|
d1681e |
+ data_unref (__local->inodelk_dom_count_req);\
|
|
|
d1681e |
+ loc_wipe (&__local->loc[0]); \
|
|
|
d1681e |
+ loc_wipe (&__local->loc[1]); \
|
|
|
d1681e |
+ if (__local->fd) \
|
|
|
d1681e |
+ fd_unref (__local->fd); \
|
|
|
d1681e |
+ mem_put (__local); \
|
|
|
d1681e |
+ } \
|
|
|
d1681e |
+ } while (0)
|
|
|
d1681e |
+
|
|
|
d1681e |
+/*
|
|
|
d1681e |
+ * The client is always requesting data, but older
|
|
|
d1681e |
+ * servers were not returning it. Newer ones are, so
|
|
|
d1681e |
+ * the client is receiving a mix of NULL and non-NULL
|
|
|
d1681e |
+ * xdata in the answers when bricks are of different
|
|
|
d1681e |
+ * versions. This triggers a bug in older clients.
|
|
|
d1681e |
+ * To prevent that, we avoid returning extra xdata to
|
|
|
d1681e |
+ * older clients (making the newer brick to behave as
|
|
|
d1681e |
+ * an old brick).
|
|
|
d1681e |
+ */
|
|
|
d1681e |
+#define PL_STACK_UNWIND_FOR_CLIENT(fop, xdata, frame, op_ret, params ...) \
|
|
|
d1681e |
+ do { \
|
|
|
d1681e |
+ pl_local_t *__local = NULL; \
|
|
|
d1681e |
+ if (frame->root->client && \
|
|
|
d1681e |
+ (frame->root->client->opversion < GD_OP_VERSION_3_12_0)) {\
|
|
|
d1681e |
+ __local = frame->local; \
|
|
|
d1681e |
+ PL_STACK_UNWIND_AND_FREE (__local, fop, frame, op_ret, params);\
|
|
|
d1681e |
+ } else { \
|
|
|
d1681e |
+ PL_STACK_UNWIND (fop, xdata, frame, op_ret, params); \
|
|
|
d1681e |
+ } \
|
|
|
d1681e |
+ } while (0)
|
|
|
d1681e |
+
|
|
|
d1681e |
#define PL_STACK_UNWIND(fop, xdata, frame, op_ret, params ...) \
|
|
|
d1681e |
do { \
|
|
|
d1681e |
pl_local_t *__local = NULL; \
|
|
|
d1681e |
@@ -68,17 +105,7 @@ static int fetch_pathinfo(xlator_t *, inode_t *, int32_t *, char **);
|
|
|
d1681e |
} \
|
|
|
d1681e |
} \
|
|
|
d1681e |
} \
|
|
|
d1681e |
- frame->local = NULL; \
|
|
|
d1681e |
- STACK_UNWIND_STRICT (fop, frame, op_ret, params); \
|
|
|
d1681e |
- if (__local) { \
|
|
|
d1681e |
- if (__local->inodelk_dom_count_req) \
|
|
|
d1681e |
- data_unref (__local->inodelk_dom_count_req);\
|
|
|
d1681e |
- loc_wipe (&__local->loc[0]); \
|
|
|
d1681e |
- loc_wipe (&__local->loc[1]); \
|
|
|
d1681e |
- if (__local->fd) \
|
|
|
d1681e |
- fd_unref (__local->fd); \
|
|
|
d1681e |
- mem_put (__local); \
|
|
|
d1681e |
- } \
|
|
|
d1681e |
+ PL_STACK_UNWIND_AND_FREE (__local, fop, frame, op_ret, params);\
|
|
|
d1681e |
if (__unref) \
|
|
|
d1681e |
dict_unref (__unref); \
|
|
|
d1681e |
} while (0)
|
|
|
d1681e |
@@ -1492,7 +1519,8 @@ int32_t
|
|
|
d1681e |
pl_fsetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
int32_t op_ret, int32_t op_errno, dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
- PL_STACK_UNWIND (fsetxattr, xdata, frame, op_ret, op_errno, xdata);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (fsetxattr, xdata, frame,
|
|
|
d1681e |
+ op_ret, op_errno, xdata);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
@@ -1564,12 +1592,8 @@ pl_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
int32_t op_ret, int32_t op_errno, dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
|
|
|
d1681e |
- if (frame->root->client &&
|
|
|
d1681e |
- (frame->root->client->opversion < GD_OP_VERSION_3_12_0)) {
|
|
|
d1681e |
- STACK_UNWIND_STRICT (flush, frame, op_ret, op_errno, xdata);
|
|
|
d1681e |
- } else {
|
|
|
d1681e |
- PL_STACK_UNWIND (flush, xdata, frame, op_ret, op_errno, xdata);
|
|
|
d1681e |
- }
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (flush, xdata, frame,
|
|
|
d1681e |
+ op_ret, op_errno, xdata);
|
|
|
d1681e |
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
@@ -3081,7 +3105,8 @@ int32_t
|
|
|
d1681e |
pl_setxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
int32_t op_ret, int32_t op_errno, dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
- PL_STACK_UNWIND (setxattr, xdata, frame, op_ret, op_errno, xdata);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (setxattr, xdata, frame,
|
|
|
d1681e |
+ op_ret, op_errno, xdata);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
@@ -3107,8 +3132,8 @@ pl_setxattr (call_frame_t *frame, xlator_t *this,
|
|
|
d1681e |
goto usual;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
- PL_STACK_UNWIND (setxattr, xdata_rsp, frame, op_ret, op_errno,
|
|
|
d1681e |
- xdata_rsp);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (setxattr, xdata_rsp, frame,
|
|
|
d1681e |
+ op_ret, op_errno, xdata_rsp);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
|
|
|
d1681e |
usual:
|
|
|
d1681e |
@@ -3937,8 +3962,8 @@ pl_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
struct iatt *buf, struct iatt *preparent,
|
|
|
d1681e |
struct iatt *postparent, dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
- PL_STACK_UNWIND (mkdir, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
- inode, buf, preparent, postparent, xdata);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (mkdir, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
+ inode, buf, preparent, postparent, xdata);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
@@ -3958,7 +3983,8 @@ pl_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
int32_t op_ret, int32_t op_errno, struct iatt *buf,
|
|
|
d1681e |
dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
- PL_STACK_UNWIND (stat, xdata, frame, op_ret, op_errno, buf, xdata);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (stat, xdata, frame,
|
|
|
d1681e |
+ op_ret, op_errno, buf, xdata);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
@@ -3978,8 +4004,8 @@ pl_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
struct iatt *buf, struct iatt *preparent,
|
|
|
d1681e |
struct iatt *postparent, dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
- PL_STACK_UNWIND (mknod, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
- inode, buf, preparent, postparent, xdata);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (mknod, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
+ inode, buf, preparent, postparent, xdata);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
@@ -4000,8 +4026,8 @@ pl_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
int32_t op_ret, int32_t op_errno, struct iatt *preparent,
|
|
|
d1681e |
struct iatt *postparent, dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
- PL_STACK_UNWIND (rmdir, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
- preparent, postparent, xdata);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (rmdir, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
+ preparent, postparent, xdata);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
@@ -4022,8 +4048,8 @@ pl_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
struct iatt *buf, struct iatt *preparent,
|
|
|
d1681e |
struct iatt *postparent, dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
- PL_STACK_UNWIND (symlink, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
- inode, buf, preparent, postparent, xdata);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (symlink, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
+ inode, buf, preparent, postparent, xdata);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
@@ -4045,8 +4071,8 @@ pl_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
struct iatt *buf, struct iatt *preparent,
|
|
|
d1681e |
struct iatt *postparent, dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
- PL_STACK_UNWIND (link, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
- inode, buf, preparent, postparent, xdata);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (link, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
+ inode, buf, preparent, postparent, xdata);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
@@ -4066,8 +4092,8 @@ pl_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
struct iatt *postbuf,
|
|
|
d1681e |
dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
- PL_STACK_UNWIND (fsync, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
- prebuf, postbuf, xdata);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (fsync, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
+ prebuf, postbuf, xdata);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
@@ -4086,8 +4112,8 @@ pl_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
int32_t op_ret, int32_t op_errno, gf_dirent_t *entries,
|
|
|
d1681e |
dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
- PL_STACK_UNWIND (readdir, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
- entries, xdata);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (readdir, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
+ entries, xdata);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
@@ -4108,7 +4134,8 @@ int32_t
|
|
|
d1681e |
pl_fsyncdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
int32_t op_ret, int32_t op_errno, dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
- PL_STACK_UNWIND (fsyncdir, xdata, frame, op_ret, op_errno, xdata);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (fsyncdir, xdata, frame,
|
|
|
d1681e |
+ op_ret, op_errno, xdata);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
@@ -4128,7 +4155,8 @@ pl_statfs_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
int32_t op_ret, int32_t op_errno, struct statvfs *buf,
|
|
|
d1681e |
dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
- PL_STACK_UNWIND (statfs, xdata, frame, op_ret, op_errno, buf, xdata);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (statfs, xdata, frame,
|
|
|
d1681e |
+ op_ret, op_errno, buf, xdata);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
@@ -4146,7 +4174,8 @@ int32_t
|
|
|
d1681e |
pl_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
int32_t op_ret, int32_t op_errno, dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
- PL_STACK_UNWIND (removexattr, xdata, frame, op_ret, op_errno, xdata);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (removexattr, xdata, frame,
|
|
|
d1681e |
+ op_ret, op_errno, xdata);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
@@ -4164,7 +4193,8 @@ int32_t
|
|
|
d1681e |
pl_fremovexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
int32_t op_ret, int32_t op_errno, dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
- PL_STACK_UNWIND (fremovexattr, xdata, frame, op_ret, op_errno, xdata);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (fremovexattr, xdata, frame,
|
|
|
d1681e |
+ op_ret, op_errno, xdata);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
@@ -4183,8 +4213,8 @@ pl_rchecksum_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
int32_t op_ret, int32_t op_errno, uint32_t weak_cksum,
|
|
|
d1681e |
uint8_t *strong_cksum, dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
- PL_STACK_UNWIND (rchecksum, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
- weak_cksum, strong_cksum, xdata);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (rchecksum, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
+ weak_cksum, strong_cksum, xdata);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
@@ -4204,7 +4234,8 @@ pl_xattrop_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
int32_t op_ret, int32_t op_errno, dict_t *dict,
|
|
|
d1681e |
dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
- PL_STACK_UNWIND (xattrop, xdata, frame, op_ret, op_errno, dict, xdata);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (xattrop, xdata, frame,
|
|
|
d1681e |
+ op_ret, op_errno, dict, xdata);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
@@ -4225,7 +4256,8 @@ pl_fxattrop_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
int32_t op_ret, int32_t op_errno, dict_t *dict,
|
|
|
d1681e |
dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
- PL_STACK_UNWIND (fxattrop, xdata, frame, op_ret, op_errno, dict, xdata);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (fxattrop, xdata, frame,
|
|
|
d1681e |
+ op_ret, op_errno, dict, xdata);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
@@ -4247,8 +4279,8 @@ pl_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
struct iatt *statpost,
|
|
|
d1681e |
dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
- PL_STACK_UNWIND (setattr, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
- statpre, statpost, xdata);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (setattr, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
+ statpre, statpost, xdata);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
@@ -4267,8 +4299,8 @@ pl_fsetattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
int32_t op_ret, int32_t op_errno, struct iatt *statpre,
|
|
|
d1681e |
struct iatt *statpost, dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
- PL_STACK_UNWIND (fsetattr, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
- statpre, statpost, xdata);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (fsetattr, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
+ statpre, statpost, xdata);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
@@ -4287,8 +4319,8 @@ pl_fallocate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
int32_t op_ret, int32_t op_errno, struct iatt *pre,
|
|
|
d1681e |
struct iatt *post, dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
- PL_STACK_UNWIND (fallocate, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
- pre, post, xdata);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (fallocate, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
+ pre, post, xdata);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
@@ -4309,8 +4341,8 @@ pl_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
int32_t op_ret, int32_t op_errno, const char *path,
|
|
|
d1681e |
struct iatt *buf, dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
- PL_STACK_UNWIND (readlink, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
- path, buf, xdata);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (readlink, xdata, frame, op_ret, op_errno,
|
|
|
d1681e |
+ path, buf, xdata);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
@@ -4328,7 +4360,8 @@ int32_t
|
|
|
d1681e |
pl_access_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
int32_t op_ret, int32_t op_errno, dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
- PL_STACK_UNWIND (access, xdata, frame, op_ret, op_errno, xdata);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (access, xdata, frame,
|
|
|
d1681e |
+ op_ret, op_errno, xdata);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
@@ -4347,7 +4380,8 @@ pl_seek_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
|
|
d1681e |
int32_t op_ret, int32_t op_errno, off_t offset,
|
|
|
d1681e |
dict_t *xdata)
|
|
|
d1681e |
{
|
|
|
d1681e |
- PL_STACK_UNWIND (seek, xdata, frame, op_ret, op_errno, offset, xdata);
|
|
|
d1681e |
+ PL_STACK_UNWIND_FOR_CLIENT (seek, xdata, frame,
|
|
|
d1681e |
+ op_ret, op_errno, offset, xdata);
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
--
|
|
|
d1681e |
1.8.3.1
|
|
|
d1681e |
|