From 14abb0c32e9ab9bd43c1476dcc3e2125f80ad08d Mon Sep 17 00:00:00 2001 From: vmallika Date: Mon, 11 Apr 2016 15:44:16 +0530 Subject: [PATCH 082/104] posix_acl: create inode ctx for posix_acl_get This is a backport of http://review.gluster.org/13961 > Change-Id: Ibe5b00cd4b5d896133adc61f65094d783c492ed4 > BUG: 1325822 > Signed-off-by: vmallika > Reviewed-on: http://review.gluster.org/13961 > Smoke: Gluster Build System > NetBSD-regression: NetBSD Build System > CentOS-regression: Gluster Build System > Reviewed-by: Jeff Darcy Change-Id: I95dfb0ca2f25cc533a8fbf8d8d73b764616b4df6 BUG: 1324338 Signed-off-by: vmallika Reviewed-on: https://code.engineering.redhat.com/gerrit/71896 Reviewed-by: Raghavendra Gowdappa Tested-by: Raghavendra Gowdappa --- xlators/system/posix-acl/src/posix-acl.c | 36 +++++++++++++++++++++-------- 1 files changed, 26 insertions(+), 10 deletions(-) diff --git a/xlators/system/posix-acl/src/posix-acl.c b/xlators/system/posix-acl/src/posix-acl.c index 3ebdca4..cd799fc 100644 --- a/xlators/system/posix-acl/src/posix-acl.c +++ b/xlators/system/posix-acl/src/posix-acl.c @@ -853,17 +853,25 @@ posix_acl_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int op_ret, int op_errno, inode_t *inode, struct iatt *buf, dict_t *xattr, struct iatt *postparent) { - struct posix_acl *acl_access = NULL; + struct posix_acl *acl_access = NULL; struct posix_acl *acl_default = NULL; - struct posix_acl *old_access = NULL; + struct posix_acl *old_access = NULL; struct posix_acl *old_default = NULL; - data_t *data = NULL; - int ret = 0; - dict_t *my_xattr = NULL; + struct posix_acl_ctx *ctx = NULL; + data_t *data = NULL; + int ret = 0; + dict_t *my_xattr = NULL; if (op_ret != 0) goto unwind; + ctx = posix_acl_ctx_new (inode, this); + if (!ctx) { + op_ret = -1; + op_errno = ENOMEM; + goto unwind; + } + ret = posix_acl_get (inode, this, &old_access, &old_default); data = dict_get (xattr, POSIX_ACL_ACCESS_XATTR); @@ -1624,11 +1632,12 @@ posix_acl_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int op_ret, int op_errno, gf_dirent_t *entries, dict_t *xdata) { - gf_dirent_t *entry = NULL; - struct posix_acl *acl_access = NULL; - struct posix_acl *acl_default = NULL; - data_t *data = NULL; - int ret = 0; + gf_dirent_t *entry = NULL; + struct posix_acl *acl_access = NULL; + struct posix_acl *acl_default = NULL; + struct posix_acl_ctx *ctx = NULL; + data_t *data = NULL; + int ret = 0; if (op_ret <= 0) goto unwind; @@ -1638,6 +1647,13 @@ posix_acl_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if (!entry->dict || !entry->inode) continue; + ctx = posix_acl_ctx_new (entry->inode, this); + if (!ctx) { + op_ret = -1; + op_errno = ENOMEM; + goto unwind; + } + ret = posix_acl_get (entry->inode, this, &acl_access, &acl_default); -- 1.7.1