diff options
author | Raghavendra G <raghavendra@gluster.com> | 2011-09-13 15:15:10 +0530 |
---|---|---|
committer | Vijay Bellur <vijay@gluster.com> | 2011-09-14 04:01:59 -0700 |
commit | 4a7d4dcd70bfc480ea20ae10d44257e56e86789c (patch) | |
tree | 6d00cd927c51401c582c07b5c23ffd59a720a449 | |
parent | 9a16332d518c6318b761b230a0e1bb8ce357228e (diff) |
features/quota: explicitly create xattrs in marker_create_cbk
- the earlier approach of creating quota related xattrs through
side-effect of updating size and contribution values won't work,
since when no contribution xattr is present, the updation process
treats contribution value as zero and hence will be equal to size
of freshly created files
Change-Id: If9b2063b1ac3a4cf50d3fe2c81e907bc8eccb677
BUG: 3531
Reviewed-on: http://review.gluster.com/385
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Mohammed Junaid <junaid@gluster.com>
-rw-r--r-- | xlators/features/marker/src/marker-quota.c | 8 | ||||
-rw-r--r-- | xlators/features/marker/src/marker.c | 6 |
2 files changed, 11 insertions, 3 deletions
diff --git a/xlators/features/marker/src/marker-quota.c b/xlators/features/marker/src/marker-quota.c index 7bc912d7e..0d2eb9e71 100644 --- a/xlators/features/marker/src/marker-quota.c +++ b/xlators/features/marker/src/marker-quota.c @@ -889,9 +889,17 @@ int32_t mq_inode_creation_done (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, int32_t op_errno) { + quota_local_t *local = NULL; + if (frame == NULL) return 0; + local = frame->local; + + if (local != NULL) { + mq_initiate_quota_txn (this, &local->loc); + } + QUOTA_STACK_DESTROY (frame, this); return 0; diff --git a/xlators/features/marker/src/marker.c b/xlators/features/marker/src/marker.c index 89da08932..36ce3d79e 100644 --- a/xlators/features/marker/src/marker.c +++ b/xlators/features/marker/src/marker.c @@ -539,7 +539,7 @@ marker_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this, priv = this->private; if (priv->feature_enabled & GF_QUOTA) - mq_inspect_file_xattr (this, &local->loc, NULL, *buf); + mq_set_inode_xattr (this, &local->loc); if (priv->feature_enabled & GF_XTIME) marker_xtime_update_marks (this, local); @@ -1610,7 +1610,7 @@ marker_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, priv = this->private; if (priv->feature_enabled & GF_QUOTA) - mq_inspect_file_xattr (this, &local->loc, NULL, *buf); + mq_set_inode_xattr (this, &local->loc); if (priv->feature_enabled & GF_XTIME) marker_xtime_update_marks (this, local); @@ -1679,7 +1679,7 @@ marker_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this, priv = this->private; if ((priv->feature_enabled & GF_QUOTA) && (S_ISREG (local->mode))) { - mq_inspect_file_xattr (this, &local->loc, NULL, *buf); + mq_set_inode_xattr (this, &local->loc); } if (priv->feature_enabled & GF_XTIME) |