summaryrefslogtreecommitdiffstats
path: root/libglusterfs/src/inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'libglusterfs/src/inode.c')
-rw-r--r--libglusterfs/src/inode.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/libglusterfs/src/inode.c b/libglusterfs/src/inode.c
index 6e4c2f11bc2..841f0b63f16 100644
--- a/libglusterfs/src/inode.c
+++ b/libglusterfs/src/inode.c
@@ -2504,3 +2504,35 @@ out:
return;
}
+
+size_t
+inode_ctx_size (inode_t *inode)
+{
+ int i = 0;
+ size_t size = 0;
+ xlator_t *xl = NULL, *old_THIS = NULL;
+
+ if (!inode)
+ goto out;
+
+ LOCK (&inode->lock);
+ {
+ for (i = 0; i < inode->table->ctxcount; i++) {
+ if (!inode->_ctx[i].xl_key)
+ continue;
+
+ xl = (xlator_t *)(long)inode->_ctx[i].xl_key;
+ old_THIS = THIS;
+ THIS = xl;
+
+ if (xl->cbks->ictxsize)
+ size += xl->cbks->ictxsize (xl, inode);
+
+ THIS = old_THIS;
+ }
+ }
+ UNLOCK (&inode->lock);
+
+out:
+ return size;
+}