From 1fd570380ba5def514ff42e81008a7ddd588348f Mon Sep 17 00:00:00 2001 From: Junaid Date: Tue, 12 Apr 2011 05:06:03 +0000 Subject: features/marker: Adding NULL checks. Signed-off-by: Junaid Signed-off-by: Anand Avati BUG: 2473 (Support for volume and directory level quota) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2473 --- xlators/features/marker/src/marker-common.c | 2 +- xlators/features/marker/src/marker-quota-helper.c | 18 ++++++---- xlators/features/marker/src/marker-quota.c | 40 ++++++++++++----------- xlators/features/marker/src/marker-quota.h | 2 +- 4 files changed, 35 insertions(+), 27 deletions(-) (limited to 'xlators/features/marker') diff --git a/xlators/features/marker/src/marker-common.c b/xlators/features/marker/src/marker-common.c index 855fb9936c5..a9431b6283b 100644 --- a/xlators/features/marker/src/marker-common.c +++ b/xlators/features/marker/src/marker-common.c @@ -43,7 +43,7 @@ marker_force_inode_ctx_get (inode_t *inode, xlator_t *this, marker_inode_ctx_t **ctx) { int32_t ret = -1; - uint64_t ctx_int; + uint64_t ctx_int = 0; LOCK (&inode->lock); { diff --git a/xlators/features/marker/src/marker-quota-helper.c b/xlators/features/marker/src/marker-quota-helper.c index b6a87698eed..d7afd40a656 100644 --- a/xlators/features/marker/src/marker-quota-helper.c +++ b/xlators/features/marker/src/marker-quota-helper.c @@ -190,7 +190,7 @@ add_new_contribution_node (xlator_t *this, quota_inode_ctx_t *ctx, loc_t *loc) { inode_contribution_t *contribution = NULL; - if (ctx == NULL || loc == NULL) + if ((ctx == NULL) || (loc == NULL)) return NULL; if (strcmp (loc->path, "/") == 0) @@ -213,6 +213,10 @@ dict_set_contribution (xlator_t *this, dict_t *dict, int32_t ret = -1; char contri_key [512] = {0, }; + GF_VALIDATE_OR_GOTO ("marker", this, out); + GF_VALIDATE_OR_GOTO ("marker", dict, out); + GF_VALIDATE_OR_GOTO ("marker", loc, out); + GET_CONTRI_KEY (contri_key, loc->parent->gfid, ret); if (ret < 0) { ret = -1; @@ -222,7 +226,8 @@ dict_set_contribution (xlator_t *this, dict_t *dict, ret = dict_set_int64 (dict, contri_key, 0); if (ret < 0) { gf_log (this->name, GF_LOG_WARNING, - "unable to set dict value."); + "unable to set dict value on %s.", + loc->path); goto out; } @@ -251,7 +256,7 @@ quota_inode_ctx_get (inode_t *inode, xlator_t *this, goto out; } - mark_ctx = (marker_inode_ctx_t *) ctx_int; + mark_ctx = (marker_inode_ctx_t *) (unsigned long)ctx_int; if (mark_ctx->quota_ctx == NULL) { ret = -1; goto out; @@ -289,13 +294,14 @@ __quota_inode_ctx_new (inode_t *inode, xlator_t *this) goto unlock; } mark_ctx->quota_ctx = quota_ctx; - } else + } else { quota_ctx = mark_ctx->quota_ctx; + } ret = 0; } -unlock: UNLOCK (&inode->lock); - +unlock: + UNLOCK (&inode->lock); out: return quota_ctx; } diff --git a/xlators/features/marker/src/marker-quota.c b/xlators/features/marker/src/marker-quota.c index 0e457e58bbc..e2cb6ba67be 100644 --- a/xlators/features/marker/src/marker-quota.c +++ b/xlators/features/marker/src/marker-quota.c @@ -31,12 +31,17 @@ #include "marker-quota-helper.h" int32_t -loc_fill_from_name (xlator_t *this, loc_t *newloc, loc_t *oldloc, uint64_t ino, char *name) +loc_fill_from_name (xlator_t *this, loc_t *newloc, loc_t *oldloc, + uint64_t ino, char *name) { - int32_t ret = 0; + int32_t ret = -1; int32_t len = 0; char *path = NULL; + GF_VALIDATE_OR_GOTO ("marker", this, out); + GF_VALIDATE_OR_GOTO ("marker", newloc, out); + GF_VALIDATE_OR_GOTO ("marker", oldloc, out); + GF_VALIDATE_OR_GOTO ("marker", name, out); newloc->ino = ino; @@ -68,7 +73,8 @@ loc_fill_from_name (xlator_t *this, loc_t *newloc, loc_t *oldloc, uint64_t ino, if (newloc->name) newloc->name++; - gf_log (this->name, GF_LOG_INFO, "path = %s name =%s",newloc->path, newloc->name); + gf_log (this->name, GF_LOG_DEBUG, "path = %s name =%s", + newloc->path, newloc->name); out: return ret; } @@ -199,12 +205,20 @@ update_size_xattr (call_frame_t *frame, void *cookie, xlator_t *this, priv = this->private; - if (!dict) + if (dict == NULL) { + gf_log (this->name, GF_LOG_WARNING, + "Dict is null while updating the size xattr %s", + local->loc.path?local->loc.path:""); goto err; + } ret = dict_get_bin (dict, QUOTA_SIZE_KEY, (void **) &size); - if (!size) + if (!size) { + gf_log (this->name, GF_LOG_WARNING, + "failed to get the size, %s", + local->loc.path?local->loc.path:""); goto err; + } QUOTA_ALLOC_OR_GOTO (delta, int64_t, ret, err); @@ -380,10 +394,10 @@ quota_readdir_cbk (call_frame_t *frame, local->dentry_child_count = 0; list_for_each_entry (entry, (&entries->list), list) { - gf_log (this->name, GF_LOG_INFO, "entry = %s", entry->d_name); + gf_log (this->name, GF_LOG_DEBUG, "entry = %s", entry->d_name); if ((!strcmp (entry->d_name, ".")) || (!strcmp (entry->d_name, ".."))) { - gf_log (this->name, GF_LOG_INFO, "entry = %s", entry->d_name); + gf_log (this->name, GF_LOG_DEBUG, "entry = %s", entry->d_name); continue; } count++; @@ -921,8 +935,6 @@ quota_release_parent_lock (call_frame_t *frame, void *cookie, quota_local_t *local = NULL; quota_inode_ctx_t *ctx = NULL; - trap (); - local = frame->local; ret = quota_inode_ctx_get (local->parent_loc.inode, this, &ctx); @@ -968,8 +980,6 @@ quota_mark_undirty (call_frame_t *frame, quota_inode_ctx_t *ctx = NULL; marker_conf_t *priv = NULL; - trap (); - local = frame->local; if (op_ret == -1) { @@ -1047,8 +1057,6 @@ quota_update_parent_size (call_frame_t *frame, quota_local_t *local = NULL; quota_inode_ctx_t *ctx = NULL; - trap (); - local = frame->local; if (op_ret == -1) { @@ -1124,8 +1132,6 @@ quota_update_inode_contribution (call_frame_t *frame, void *cookie, marker_conf_t *priv = NULL; inode_contribution_t *contribution = NULL; - trap (); - local = frame->local; if (op_ret == -1) { @@ -1224,8 +1230,6 @@ quota_fetch_child_size_and_contri (call_frame_t *frame, void *cookie, marker_conf_t *priv = NULL; quota_inode_ctx_t *ctx = NULL; - trap (); - local = frame->local; if (op_ret == -1) { @@ -1426,8 +1430,6 @@ initiate_quota_txn (xlator_t *this, loc_t *loc) quota_inode_ctx_t *ctx = NULL; inode_contribution_t *contribution = NULL; - trap (); - VALIDATE_OR_GOTO (loc, out); ret = quota_inode_ctx_get (loc->inode, this, &ctx); diff --git a/xlators/features/marker/src/marker-quota.h b/xlators/features/marker/src/marker-quota.h index e709bcac23f..c6ca5bbabb1 100644 --- a/xlators/features/marker/src/marker-quota.h +++ b/xlators/features/marker/src/marker-quota.h @@ -51,6 +51,7 @@ char volname [40]; #define QUOTA_ALLOC(var, type, ret) \ do { \ + ret = 0; \ var = GF_CALLOC (sizeof (type), 1, \ gf_marker_mt_##type); \ if (!var) { \ @@ -58,7 +59,6 @@ char volname [40]; "out of memory"); \ ret = -1; \ } \ - ret = 0; \ } while (0); #define QUOTA_ALLOC_OR_GOTO(var, type, ret, label) \ -- cgit