From 14abb0c32e9ab9bd43c1476dcc3e2125f80ad08d Mon Sep 17 00:00:00 2001
From: vmallika <vmallika@redhat.com>
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 <vmallika@redhat.com>
> Reviewed-on: http://review.gluster.org/13961
> Smoke: Gluster Build System <jenkins@build.gluster.com>
> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
> CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
> Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Change-Id: I95dfb0ca2f25cc533a8fbf8d8d73b764616b4df6
BUG: 1324338
Signed-off-by: vmallika <vmallika@redhat.com>
Reviewed-on: https://code.engineering.redhat.com/gerrit/71896
Reviewed-by: Raghavendra Gowdappa <rgowdapp@redhat.com>
Tested-by: Raghavendra Gowdappa <rgowdapp@redhat.com>
---
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