summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaghavendra G <raghavendra@gluster.com>2011-04-21 05:03:56 +0000
committerAnand Avati <avati@gluster.com>2011-04-21 07:38:27 -0700
commit2c12b90a84c544343e384e1d60d03b10be9fc45b (patch)
tree90be0489d187c268ecb488d2102c77191d5030ea
parent14f9c126c1237410bd9ef159e746afd7ff8c2753 (diff)
features/marker-quota: handle creation of regular files using mknod.
- Add the disk-used to parents' size. Signed-off-by: Raghavendra G <raghavendra@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 2649 (Quota: size field is not getting updated properly) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2649
-rw-r--r--xlators/features/marker/src/marker.c6
-rw-r--r--xlators/features/marker/src/marker.h1
2 files changed, 7 insertions, 0 deletions
diff --git a/xlators/features/marker/src/marker.c b/xlators/features/marker/src/marker.c
index 862c0a464aa..8ab66f46e1f 100644
--- a/xlators/features/marker/src/marker.c
+++ b/xlators/features/marker/src/marker.c
@@ -1267,6 +1267,10 @@ 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))) {
+ inspect_file_xattr (this, &local->loc, NULL, *buf);
+ }
+
if (priv->feature_enabled & GF_XTIME)
marker_xtime_update_marks (this, local);
out:
@@ -1294,6 +1298,8 @@ marker_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,
ret = loc_copy (&local->loc, loc);
+ local->mode = mode;
+
if (ret == -1)
goto err;
wind:
diff --git a/xlators/features/marker/src/marker.h b/xlators/features/marker/src/marker.h
index 70b5e8567d3..ea1f5cc0a99 100644
--- a/xlators/features/marker/src/marker.h
+++ b/xlators/features/marker/src/marker.h
@@ -68,6 +68,7 @@ struct marker_local{
int32_t ref;
int32_t ia_nlink;
gf_lock_t lock;
+ mode_t mode;
struct marker_local *oplocal;
};
typedef struct marker_local marker_local_t;