summaryrefslogtreecommitdiffstats
path: root/xlators/features/quota/src/quota.h
diff options
context:
space:
mode:
authorvmallika <vmallika@redhat.com>2015-01-30 12:10:38 +0530
committerNiels de Vos <ndevos@redhat.com>2015-02-23 04:56:47 -0800
commit6518a79634ba505ed06e930907ebf956f8784b7d (patch)
tree55f52692b180745ab40730db505636a065b4258f /xlators/features/quota/src/quota.h
parentb6c37bd9954fb3b7aee79dbe453f875b70a03e71 (diff)
features/quota: Send the immediate parent with limit in quota statfs
adjustment This is a backport of http://review.gluster.org/#/c/7330 > Problem: > Assume the directory structure /quota_limit_dir/subdir and > quota_limit_dir is > set with some limit. When quota-deem-statfs is enabled the output of > 'df /quota_limit_dir' would display quota modified values wrt to > quota_limit_dir where as 'df /quota_limit_subdir/subdir' would display > the quota modified values wrt volume root (/). > > This behaviour is not expected since, when mounted with subdirectory > admin doesn't want users to know information above the subdirectory mounted. > > Solution: > Any subdirectory within a quota_limit_dir would show the modified values > as in the /quota_limit_dir. It searches for the nearest parent that has quota > limit set and modifies the statvfs wrt that. > > Change-Id: Ie10fae8999bddbb766b1dbeb881723ed80dce688 > BUG: 1080296 > Signed-off-by: Varun Shastry <vshastry@redhat.com> > Reviewed-on: http://review.gluster.org/7330 > Reviewed-by: Raghavendra G <rgowdapp@redhat.com> > Tested-by: Raghavendra G <rgowdapp@redhat.com> Change-Id: I5232a82da20d3dfd48303ba2748b86cfc96ff864 BUG: 1115197 Signed-off-by: vmallika <vmallika@redhat.com> Reviewed-on: http://review.gluster.org/9510 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Niels de Vos <ndevos@redhat.com>
Diffstat (limited to 'xlators/features/quota/src/quota.h')
-rw-r--r--xlators/features/quota/src/quota.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/xlators/features/quota/src/quota.h b/xlators/features/quota/src/quota.h
index 84c3257feec..5a4bcb2b1e0 100644
--- a/xlators/features/quota/src/quota.h
+++ b/xlators/features/quota/src/quota.h
@@ -80,6 +80,23 @@
} \
} while (0);
+#define QUOTA_STACK_WIND_TAIL(frame, params...) \
+ do { \
+ quota_local_t *_local = NULL; \
+ xlator_t *_this = NULL; \
+ \
+ if (frame) { \
+ _local = frame->local; \
+ _this = frame->this; \
+ frame->local = NULL; \
+ } \
+ \
+ STACK_WIND_TAIL (frame, params); \
+ \
+ if (_local) \
+ quota_local_cleanup (_this, _local); \
+ } while (0)
+
#define QUOTA_STACK_UNWIND(fop, frame, params...) \
do { \
quota_local_t *_local = NULL; \
@@ -186,6 +203,7 @@ struct quota_local {
int64_t space_available;
quota_ancestry_built_t ancestry_cbk;
void *ancestry_data;
+ dict_t *xdata;
};
typedef struct quota_local quota_local_t;