diff options
author | Junaid <junaid@gluster.com> | 2011-03-31 04:28:43 +0000 |
---|---|---|
committer | Vijay Bellur <vijay@dev.gluster.com> | 2011-03-31 05:04:32 -0700 |
commit | 3b5195cfa4976e1d83646b70b0f08f583a7a1094 (patch) | |
tree | 0ca877ef9fe9a085a517f48fb8d6e3284fd94ec1 | |
parent | 1c148f85c5abf561faeb68c699a13c8bd683de5e (diff) |
features/quota: Use appropriate inodes while logging and create contexts in inode for files.
- It also fixes limit checks if limit set in the directory.
Signed-off-by: Junaid <junaid@gluster.com>
Signed-off-by: Vijay Bellur <vijay@dev.gluster.com>
BUG: 2604 (Quota: crossing the set limit)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2604
-rw-r--r-- | xlators/features/quota/src/quota.c | 267 | ||||
-rw-r--r-- | xlators/features/quota/src/quota.h | 8 |
2 files changed, 144 insertions, 131 deletions
diff --git a/xlators/features/quota/src/quota.c b/xlators/features/quota/src/quota.c index 8057f6e524c..e7dac765da2 100644 --- a/xlators/features/quota/src/quota.c +++ b/xlators/features/quota/src/quota.c @@ -190,6 +190,7 @@ quota_validate_cbk (call_frame_t *frame, void *cookie, xlator_t *this, quota_inode_ctx_t *ctx = NULL; quota_priv_t *priv = NULL; int64_t *size = 0; + uint64_t value = 0; local = frame->local; GF_ASSERT (local); @@ -213,8 +214,9 @@ quota_validate_cbk (call_frame_t *frame, void *cookie, xlator_t *this, GF_VALIDATE_OR_GOTO_WITH_ERROR (this->name, dict, unwind, op_errno, EINVAL); - ret = inode_ctx_get (local->validate_loc.inode, this, - (uint64_t *) &ctx); + ret = inode_ctx_get (local->validate_loc.inode, this, &value); + + ctx = (quota_inode_ctx_t *)(unsigned long)value; if ((ret == -1) || (ctx == NULL)) { gf_log (this->name, GF_LOG_WARNING, "quota context is not present in inode (ino:%"PRId64", " @@ -224,7 +226,7 @@ quota_validate_cbk (call_frame_t *frame, void *cookie, xlator_t *this, goto unwind; } - ret = dict_get_bin (dict, priv->size_key, (void **) &size); + ret = dict_get_bin (dict, QUOTA_SIZE_KEY, (void **) &size); if (ret == -1) { gf_log (this->name, GF_LOG_WARNING, "size key not present in dict"); @@ -298,11 +300,11 @@ quota_check_limit (call_frame_t *frame, inode_t *inode, xlator_t *this, int64_t delta = 0; call_stub_t *stub = NULL; int32_t validate_count = 0, link_count = 0; + uint64_t value = 0; GF_VALIDATE_OR_GOTO ("quota", this, out); GF_VALIDATE_OR_GOTO (this->name, frame, out); GF_VALIDATE_OR_GOTO (this->name, inode, out); - GF_VALIDATE_OR_GOTO (this->name, stub, out); local = frame->local; GF_VALIDATE_OR_GOTO (this->name, local, out); @@ -313,7 +315,8 @@ quota_check_limit (call_frame_t *frame, inode_t *inode, xlator_t *this, priv = this->private; - inode_ctx_get (inode, this, (uint64_t *) &ctx); + inode_ctx_get (inode, this, &value); + ctx = (quota_inode_ctx_t *)(unsigned long)value; _inode = inode_ref (inode); @@ -343,7 +346,7 @@ quota_check_limit (call_frame_t *frame, inode_t *inode, xlator_t *this, } if (need_unwind) { - goto out; + break; } } @@ -361,7 +364,9 @@ quota_check_limit (call_frame_t *frame, inode_t *inode, xlator_t *this, inode_unref (_inode); _inode = parent; - inode_ctx_get (_inode, this, (uint64_t *) &ctx); + value = 0; + inode_ctx_get (_inode, this, &value); + ctx = (quota_inode_ctx_t *)(unsigned long)value; } while (1); ret = 0; @@ -397,7 +402,7 @@ validate: STACK_WIND (frame, quota_validate_cbk, FIRST_CHILD(this), FIRST_CHILD(this)->fops->getxattr, &local->validate_loc, - priv->size_key); + QUOTA_SIZE_KEY); inode_unref (_inode); return 0; @@ -439,7 +444,7 @@ out: } -int32_t +static int32_t __quota_init_inode_ctx (inode_t *inode, int64_t limit, xlator_t *this, dict_t *dict, struct iatt *buf, quota_inode_ctx_t **context) @@ -469,7 +474,7 @@ __quota_init_inode_ctx (inode_t *inode, int64_t limit, xlator_t *this, INIT_LIST_HEAD (&ctx->parents); if (dict != NULL) { - ret = dict_get_bin (dict, priv->size_key, (void **) &size); + ret = dict_get_bin (dict, QUOTA_SIZE_KEY, (void **) &size); if (ret == 0) { ctx->size = ntoh64 (*size); gettimeofday (&ctx->tv, NULL); @@ -487,9 +492,10 @@ out: } -int32_t +static int32_t quota_inode_ctx_get (inode_t *inode, int64_t limit, xlator_t *this, - dict_t *dict, struct iatt *buf, quota_inode_ctx_t **ctx) + dict_t *dict, struct iatt *buf, quota_inode_ctx_t **ctx, + char create_if_absent) { int32_t ret = 0; uint64_t ctx_int; @@ -499,8 +505,8 @@ quota_inode_ctx_get (inode_t *inode, int64_t limit, xlator_t *this, ret = __inode_ctx_get (inode, this, &ctx_int); if ((ret == 0) && (ctx != NULL)) { - *ctx = (quota_inode_ctx_t *) (long)ctx_int; - } else if (limit >= 0) { + *ctx = (quota_inode_ctx_t *) (unsigned long)ctx_int; + } else if (create_if_absent) { ret = __quota_init_inode_ctx (inode, limit, this, dict, buf, ctx); } @@ -526,15 +532,16 @@ quota_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, local = frame->local; - if ((op_ret < 0) || (local == NULL) || (local->limit < 0) - || (!IA_ISREG (buf->ia_type))) { + if ((op_ret < 0) || (local == NULL) + || ((local->limit < 0) && !((IA_ISREG (buf->ia_type)) + || (IA_ISLNK (buf->ia_type))))) { goto unwind; } priv = this->private; ret = quota_inode_ctx_get (local->loc.inode, local->limit, this, dict, - buf, &ctx); + buf, &ctx, 1); if ((ret == -1) || (ctx == NULL)) { gf_log (this->name, GF_LOG_WARNING, "cannot create quota " "context in inode(ino:%"PRId64", gfid:%s)", @@ -547,6 +554,22 @@ quota_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, LOCK (&ctx->lock); { + + if (dict != NULL) { + ret = dict_get_bin (dict, QUOTA_SIZE_KEY, + (void **) &size); + if (ret == 0) { + ctx->size = ntoh64 (size); + gettimeofday (&ctx->tv, NULL); + } + } + + ctx->buf = *buf; + + if (!(IA_ISREG (buf->ia_type) || IA_ISLNK (buf->ia_type))) { + goto unlock; + } + list_for_each_entry (dentry, &ctx->parents, next) { if ((strcmp (dentry->name, local->loc.name) == 0) && (local->loc.parent->ino == dentry->par)) { @@ -574,17 +597,6 @@ quota_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, goto unlock; } } - - if (dict != NULL) { - ret = dict_get_bin (dict, priv->size_key, - (void **) &size); - if (ret == 0) { - ctx->size = ntoh64 (size); - gettimeofday (&ctx->tv, NULL); - } - } - - ctx->buf = *buf; } unlock: UNLOCK (&ctx->lock); @@ -615,10 +627,6 @@ quota_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc, } } - if (limit < 0) { - goto wind; - } - local = quota_local_new (); if (local == NULL) { goto err; @@ -642,7 +650,7 @@ quota_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_newed = _gf_true; } - ret = dict_set_uint64 (xattr_req, priv->size_key, 0); + ret = dict_set_uint64 (xattr_req, QUOTA_SIZE_KEY, 0); if (ret < 0) { goto err; } @@ -672,12 +680,14 @@ quota_update_size (xlator_t *this, inode_t *inode, char *name, ino_t par, int64_t delta) { inode_t *_inode = NULL, *parent = NULL; + uint64_t value = 0; quota_inode_ctx_t *ctx = NULL; GF_VALIDATE_OR_GOTO ("quota", this, out); GF_VALIDATE_OR_GOTO (this->name, inode, out); - inode_ctx_get (inode, this, (uint64_t *) &ctx); + inode_ctx_get (inode, this, &value); + ctx = (quota_inode_ctx_t *)(unsigned long)value; _inode = inode_ref (inode); @@ -704,7 +714,8 @@ quota_update_size (xlator_t *this, inode_t *inode, char *name, ino_t par, inode_unref (_inode); _inode = parent; - inode_ctx_get (_inode, this, (uint64_t *) &ctx); + inode_ctx_get (_inode, this, &value); + ctx = (quota_inode_ctx_t *)(unsigned long)value; } while (1); out: @@ -731,7 +742,7 @@ quota_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this, ret = inode_ctx_get (local->loc.inode, this, &ctx_int); - ctx = (quota_inode_ctx_t *)(long) ctx_int; + ctx = (quota_inode_ctx_t *)(unsigned long) ctx_int; if (ctx == NULL) { gf_log (this->name, GF_LOG_WARNING, @@ -814,9 +825,9 @@ quota_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, } frame->local = local; - local->inode = inode_ref (fd->inode); + local->loc.inode = inode_ref (fd->inode); - ret = quota_inode_ctx_get (fd->inode, -1, this, NULL, NULL, &ctx); + ret = quota_inode_ctx_get (fd->inode, -1, this, NULL, NULL, &ctx, 0); if (ctx == NULL) { gf_log (this->name, GF_LOG_WARNING, "quota context not set in inode (ino:%"PRId64", " @@ -988,14 +999,13 @@ quota_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this, quota_local_t *local = NULL; quota_inode_ctx_t *ctx = NULL; quota_dentry_t *dentry = NULL; - char found = 0; local = frame->local; if (op_ret < 0) { goto unwind; } - ret = quota_inode_ctx_get (inode, -1, this, NULL, buf, &ctx); + ret = quota_inode_ctx_get (inode, -1, this, NULL, buf, &ctx, 1); if ((ret == -1) || (ctx == NULL)) { gf_log (this->name, GF_LOG_WARNING, "cannot create quota " "context in inode(ino:%"PRId64", gfid:%s)", @@ -1007,42 +1017,21 @@ quota_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this, LOCK (&ctx->lock); { - list_for_each_entry (dentry, &ctx->parents, next) { - if ((strcmp (dentry->name, local->loc.name) == 0) - && (local->loc.parent->ino == dentry->par)) { - found = 1; - gf_log (this->name, GF_LOG_WARNING, - "entry being created (par:%" - PRId64", name:%s) for inode (ino:%" - PRId64", gfid:%s) is already present " - "in inode-dentry-list", dentry->par, - dentry->name, inode->ino, - uuid_utoa (inode->gfid)); - - break; - } - } + ctx->buf = *buf; - if (!found) { - dentry = __quota_dentry_new (ctx, - (char *)local->loc.name, - local->loc.parent->ino); - if (dentry == NULL) { - gf_log (this->name, GF_LOG_WARNING, - "cannot create a new dentry (par:%" - PRId64", name:%s) for inode(ino:%" - PRId64", gfid:%s)", - local->loc.parent->ino, - local->loc.name, - local->loc.inode->ino, - uuid_utoa (local->loc.inode->gfid)); - op_ret = -1; - op_errno = ENOMEM; - goto unlock; - } + dentry = __quota_dentry_new (ctx, (char *)local->loc.name, + local->loc.parent->ino); + if (dentry == NULL) { + gf_log (this->name, GF_LOG_WARNING, + "cannot create a new dentry (par:%" + PRId64", name:%s) for inode(ino:%" + PRId64", gfid:%s)", local->loc.parent->ino, + local->loc.name, local->loc.inode->ino, + uuid_utoa (local->loc.inode->gfid)); + op_ret = -1; + op_errno = ENOMEM; + goto unlock; } - - ctx->buf = *buf; } unlock: UNLOCK (&ctx->lock); @@ -1145,6 +1134,7 @@ quota_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, { quota_local_t *local = NULL; quota_inode_ctx_t *ctx = NULL; + uint64_t value = 0; if (op_ret == -1) { goto out; @@ -1152,7 +1142,9 @@ quota_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, local = (quota_local_t *) frame->local; - inode_ctx_get (local->loc.inode, this, (uint64_t *)&ctx); + inode_ctx_get (local->loc.inode, this, &value); + ctx = (quota_inode_ctx_t *)(unsigned long)value; + if (ctx == NULL) { gf_log (this->name, GF_LOG_WARNING, "quota context not set in inode (ino:%"PRId64 @@ -1224,12 +1216,11 @@ quota_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this, quota_update_size (this, local->loc.parent, NULL, 0, buf->ia_size); - ret = quota_inode_ctx_get (inode, -1, this, NULL, NULL, &ctx); + ret = quota_inode_ctx_get (inode, -1, this, NULL, NULL, &ctx, 0); if ((ret == -1) || (ctx == NULL)) { - gf_log (this->name, GF_LOG_WARNING, "cannot create quota " + gf_log (this->name, GF_LOG_WARNING, "cannot find quota " "context in inode(ino:%"PRId64", gfid:%s)", - local->loc.inode->ino, - uuid_utoa (local->loc.inode->gfid)); + inode->ino, uuid_utoa (inode->gfid)); op_ret = -1; op_errno = EINVAL; goto out; @@ -1343,12 +1334,13 @@ quota_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc) local->link_count = 1; local->stub = stub; - ret = quota_inode_ctx_get (oldloc->inode, -1, this, NULL, NULL, &ctx); + ret = quota_inode_ctx_get (oldloc->inode, -1, this, NULL, NULL, &ctx, + 0); if (ctx == NULL) { gf_log (this->name, GF_LOG_WARNING, "quota context not set in inode (ino:%"PRId64 - ", gfid:%s)", local->loc.inode->ino, - uuid_utoa (local->loc.inode->gfid)); + ", gfid:%s)", local->oldloc.inode->ino, + uuid_utoa (local->oldloc.inode->gfid)); op_errno = EINVAL; goto err; } @@ -1385,11 +1377,12 @@ quota_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this, struct iatt *preoldparent, struct iatt *postoldparent, struct iatt *prenewparent, struct iatt *postnewparent) { - int32_t ret = -1; - quota_local_t *local = NULL; - quota_inode_ctx_t *ctx = NULL; - quota_dentry_t *old_dentry = NULL, *dentry = NULL; + int32_t ret = -1; + quota_local_t *local = NULL; + quota_inode_ctx_t *ctx = NULL; + quota_dentry_t *old_dentry = NULL, *dentry = NULL; char new_dentry_found = 0; + int64_t size = 0; if (op_ret == -1) { goto out; @@ -1403,12 +1396,21 @@ quota_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this, goto out; } - quota_update_size (this, local->oldloc.parent, NULL, 0, - (-buf->ia_size)); - quota_update_size (this, local->newloc.parent, NULL, 0, buf->ia_size); + if (IA_ISREG (local->oldloc.inode->ia_type) + || IA_ISLNK (local->oldloc.inode->ia_type)) { + size = buf->ia_size; + } + + quota_update_size (this, local->oldloc.parent, NULL, 0, (-size)); + quota_update_size (this, local->newloc.parent, NULL, 0, size); + + if (!(IA_ISREG (local->oldloc.inode->ia_type) + || IA_ISLNK (local->oldloc.inode->ia_type))) { + goto out; + } ret = quota_inode_ctx_get (local->oldloc.inode, -1, this, NULL, NULL, - &ctx); + &ctx, 0); if ((ret == -1) || (ctx == NULL)) { gf_log (this->name, GF_LOG_WARNING, "quota context not" "set in inode(ino:%"PRId64", gfid:%s)", @@ -1424,7 +1426,7 @@ quota_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this, /* decision of whether to create a context in newloc->inode * depends on fuse_rename_cbk's choice of inode it retains * after rename. currently it just associates oldloc->inode - * with new parent and name. If this changes following code + * with new parent and name. If this changes, following code * should be changed to set a new context in newloc->inode. */ list_for_each_entry (dentry, &ctx->parents, next) { @@ -1554,18 +1556,23 @@ quota_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc, local->link_count = 1; local->stub = stub; - ret = quota_inode_ctx_get (oldloc->inode, -1, this, NULL, NULL, &ctx); - if (ctx == NULL) { - gf_log (this->name, GF_LOG_WARNING, - "quota context not set in inode (ino:%"PRId64 - ", gfid:%s)", oldloc->inode?oldloc->inode->ino:0, - oldloc->inode?uuid_utoa (oldloc->inode->gfid):"0"); - op_errno = EINVAL; - goto err; + if (IA_ISREG (oldloc->inode->ia_type) + || IA_ISLNK (oldloc->inode->ia_type)) { + ret = quota_inode_ctx_get (oldloc->inode, -1, this, NULL, NULL, + &ctx, 0); + if (ctx == NULL) { + gf_log (this->name, GF_LOG_WARNING, + "quota context not set in inode (ino:%"PRId64 + ", gfid:%s)", oldloc->inode?oldloc->inode->ino:0, + oldloc->inode?uuid_utoa (oldloc->inode->gfid):"0"); + op_errno = EINVAL; + goto err; + } + local->delta = ctx->buf.ia_size; + } else { + local->delta = 0; } - local->delta = ctx->buf.ia_size; - quota_check_limit (frame, newloc->parent, this, NULL, 0); LOCK (&local->lock); @@ -1596,9 +1603,10 @@ quota_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, struct iatt *buf, struct iatt *preparent, struct iatt *postparent) { - int64_t size = 0; - quota_local_t *local = NULL; - quota_inode_ctx_t *ctx = NULL; + int64_t size = 0; + quota_local_t *local = NULL; + quota_inode_ctx_t *ctx = NULL; + quota_dentry_t *dentry = NULL; if (op_ret == -1) { goto out; @@ -1611,7 +1619,7 @@ quota_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, quota_update_size (this, local->loc.parent, NULL, 0, buf->ia_size); quota_inode_ctx_get (local->loc.inode, -1, this, NULL, NULL, - &ctx); + &ctx, 1); if (ctx == NULL) { gf_log (this->name, GF_LOG_WARNING, "quota context not set in inode (ino:%"PRId64 @@ -1623,6 +1631,19 @@ quota_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, LOCK (&ctx->lock); { ctx->buf = *buf; + + dentry = __quota_dentry_new (ctx, (char *)local->loc.name, + local->loc.parent->ino); + if (dentry == NULL) { + gf_log (this->name, GF_LOG_WARNING, + "cannot create a new dentry (par:%" + PRId64", name:%s) for inode(ino:%" + PRId64", gfid:%s)", local->loc.parent->ino, + local->loc.name, local->loc.inode->ino, + uuid_utoa (local->loc.inode->gfid)); + op_ret = -1; + op_errno = ENOMEM; + } } UNLOCK (&ctx->lock); @@ -1743,7 +1764,7 @@ quota_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this, quota_update_size (this, local->loc.inode, NULL, 0, delta); quota_inode_ctx_get (local->loc.inode, -1, this, NULL, NULL, - &ctx); + &ctx, 0); if (ctx == NULL) { gf_log (this->name, GF_LOG_WARNING, "quota context not set in inode (ino:%"PRId64 @@ -1819,7 +1840,7 @@ quota_ftruncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this, quota_update_size (this, local->loc.inode, NULL, 0, delta); quota_inode_ctx_get (local->loc.inode, -1, this, NULL, NULL, - &ctx); + &ctx, 0); if (ctx == NULL) { gf_log (this->name, GF_LOG_WARNING, "quota context not set in inode (ino:%"PRId64 @@ -1869,15 +1890,17 @@ int32_t quota_send_dir_limit_to_cli (call_frame_t *frame, xlator_t *this, inode_t *inode, const char *name) { - int32_t ret = 0; - char dir_limit [1024] = {0, }; - dict_t *dict = NULL; - quota_inode_ctx_t *ctx = NULL; + int32_t ret = 0; + char dir_limit [1024] = {0, }; + dict_t *dict = NULL; + quota_inode_ctx_t *ctx = NULL; + uint64_t value = 0; - ret = inode_ctx_get (inode, this, (uint64_t *) &ctx); + ret = inode_ctx_get (inode, this, &value); if (ret < 0) goto out; + ctx = (quota_inode_ctx_t *)(unsigned long)value; snprintf (dir_limit, 1024, "%"PRId64",%"PRId64, ctx->size, ctx->limit); dict = dict_new (); @@ -1954,7 +1977,7 @@ quota_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, } quota_inode_ctx_get (local->loc.inode, -1, this, NULL, NULL, - &ctx); + &ctx, 0); if (ctx == NULL) { gf_log (this->name, GF_LOG_WARNING, "quota context not set in inode (ino:%"PRId64 @@ -2017,7 +2040,7 @@ quota_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, } quota_inode_ctx_get (local->loc.inode, -1, this, NULL, NULL, - &ctx); + &ctx, 0); if (ctx == NULL) { gf_log (this->name, GF_LOG_WARNING, "quota context not set in inode (ino:%"PRId64 @@ -2075,7 +2098,7 @@ quota_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, } quota_inode_ctx_get (local->loc.inode, -1, this, NULL, NULL, - &ctx); + &ctx, 0); if (ctx == NULL) { gf_log (this->name, GF_LOG_WARNING, "quota context not set in inode (ino:%"PRId64 @@ -2140,7 +2163,7 @@ quota_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this, } quota_inode_ctx_get (local->loc.inode, -1, this, NULL, NULL, - &ctx); + &ctx, 0); if (ctx == NULL) { gf_log (this->name, GF_LOG_WARNING, "quota context not set in inode (ino:%"PRId64 @@ -2200,7 +2223,7 @@ quota_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this, } quota_inode_ctx_get (local->loc.inode, -1, this, NULL, NULL, - &ctx); + &ctx, 0); if (ctx == NULL) { gf_log (this->name, GF_LOG_WARNING, "quota context not set in inode (ino:%"PRId64 @@ -2259,7 +2282,7 @@ quota_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, } quota_inode_ctx_get (local->loc.inode, -1, this, NULL, NULL, - &ctx); + &ctx, 0); if (ctx == NULL) { gf_log (this->name, GF_LOG_WARNING, "quota context not set in inode (ino:%"PRId64 @@ -2326,7 +2349,7 @@ quota_fsetattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, } quota_inode_ctx_get (local->loc.inode, -1, this, NULL, NULL, - &ctx); + &ctx, 0); if (ctx == NULL) { gf_log (this->name, GF_LOG_WARNING, "quota context not set in inode (ino:%"PRId64 @@ -2451,7 +2474,7 @@ quota_parse_options (quota_priv_t *priv, xlator_t *this, dict_t *options) quota_lim->value = value; - gf_log (this->name, GF_LOG_INFO, "%s:%ld", + gf_log (this->name, GF_LOG_INFO, "%s:%"PRId64, quota_lim->path, quota_lim->value); list_add_tail ("a_lim->limit_list, @@ -2465,7 +2488,7 @@ quota_parse_options (quota_priv_t *priv, xlator_t *this, dict_t *options) } list_for_each_entry (quota_lim, &priv->limit_head, limit_list) { - gf_log (this->name, GF_LOG_INFO, "%s:%ld", quota_lim->path, + gf_log (this->name, GF_LOG_INFO, "%s:%"PRId64, quota_lim->path, quota_lim->value); } @@ -2506,8 +2529,6 @@ init (xlator_t *this) goto err; } - GET_SIZE_KEY_OR_GOTO (&priv->size_key, this->name, err); - ret = 0; err: return ret; diff --git a/xlators/features/quota/src/quota.h b/xlators/features/quota/src/quota.h index 1f0546d4e87..d53894ab48f 100644 --- a/xlators/features/quota/src/quota.h +++ b/xlators/features/quota/src/quota.h @@ -107,13 +107,6 @@ _vol_name, _gfid_unparsed); \ } while (0) -#define GET_SIZE_KEY_OR_GOTO(var, _vol_name, label) \ - do { \ - ret = gf_asprintf (var, QUOTA_XATTR_PREFIX \ - "%s." SIZE, _vol_name); \ - if (ret == -1) \ - goto label; \ - } while (0) #define GET_CONTRI_KEY_OR_GOTO(var, _vol_name, _gfid, label) \ do { \ @@ -167,7 +160,6 @@ struct quota_local { typedef struct quota_local quota_local_t; struct quota_priv { - char *size_key; int64_t timeout; struct list_head limit_head; }; |