diff options
author | Raghavendra Bhat <raghavendra@redhat.com> | 2012-08-27 11:53:41 +0530 |
---|---|---|
committer | Vijay Bellur <vbellur@redhat.com> | 2012-09-17 22:44:45 -0700 |
commit | 8062ad0799ad4e92882c25f5a7c6e95a06d63c12 (patch) | |
tree | 324744e2c6110f8aa14466c7b32a22b7bc845826 /xlators/features/marker | |
parent | 9289f4be460e910189f553fe2b63e6e3aabe5b27 (diff) |
features/marker: if parent inode is NULL, then get it by inode_parent
* If parent inode is NULL (nameless lookups which uses gfid for looking up the
inode), then try to get it by inode_parent, instead of returning which results
in the inode's contribution not being added to the list.
* Prevent exceesive logging while adding the inode's contribution to the list
if the operation fails. (Check if the inode's gfid is null which indicates
that the inode is not yet linked to the inode table and hence addition
of its contribution to the list can fail).
Change-Id: I5300f00195ae92a5122613898ae3dabddb2d0bfe
BUG: 851953
Signed-off-by: Raghavendra Bhat <raghavendra@redhat.com>
Reviewed-on: http://review.gluster.org/3935
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'xlators/features/marker')
-rw-r--r-- | xlators/features/marker/src/marker-quota-helper.c | 12 | ||||
-rw-r--r-- | xlators/features/marker/src/marker-quota.c | 5 |
2 files changed, 13 insertions, 4 deletions
diff --git a/xlators/features/marker/src/marker-quota-helper.c b/xlators/features/marker/src/marker-quota-helper.c index 4fb0bb4b3..af5fed132 100644 --- a/xlators/features/marker/src/marker-quota-helper.c +++ b/xlators/features/marker/src/marker-quota-helper.c @@ -159,8 +159,16 @@ __mq_add_new_contribution_node (xlator_t *this, quota_inode_ctx_t *ctx, loc_t *l int32_t ret = 0; inode_contribution_t *contribution = NULL; - if (!loc->parent) - goto out; + if (!loc->parent) { + if (!uuid_is_null (loc->pargfid)) + loc->parent = inode_find (loc->inode->table, + loc->pargfid); + if (!loc->parent) + loc->parent = inode_parent (loc->inode, loc->pargfid, + loc->name); + if (!loc->parent) + goto out; + } list_for_each_entry (contribution, &ctx->contribution_head, contri_list) { if (loc->parent && diff --git a/xlators/features/marker/src/marker-quota.c b/xlators/features/marker/src/marker-quota.c index 193bdb1c9..6f9af6e13 100644 --- a/xlators/features/marker/src/marker-quota.c +++ b/xlators/features/marker/src/marker-quota.c @@ -2034,8 +2034,9 @@ mq_inspect_directory_xattr (xlator_t *this, if (strcmp (loc->path, "/") != 0) { contribution = mq_add_new_contribution_node (this, ctx, loc); if (contribution == NULL) { - gf_log (this->name, GF_LOG_WARNING, - "cannot add a new contribution node"); + if (!uuid_is_null (loc->inode->gfid)) + gf_log (this->name, GF_LOG_WARNING, + "cannot add a new contribution node"); ret = -1; goto err; } |