summaryrefslogtreecommitdiffstats
path: root/libglusterfs/src/iobuf.c
diff options
context:
space:
mode:
Diffstat (limited to 'libglusterfs/src/iobuf.c')
-rw-r--r--libglusterfs/src/iobuf.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/libglusterfs/src/iobuf.c b/libglusterfs/src/iobuf.c
index a10dc6f847d..84e3b5efec6 100644
--- a/libglusterfs/src/iobuf.c
+++ b/libglusterfs/src/iobuf.c
@@ -570,3 +570,45 @@ iobref_merge (struct iobref *to, struct iobref *from)
return ret;
}
+
+
+size_t
+iobuf_size (struct iobuf *iobuf)
+{
+ size_t size = 0;
+
+ if (!iobuf)
+ goto out;
+
+ if (!iobuf->iobuf_arena)
+ goto out;
+
+ if (!iobuf->iobuf_arena->iobuf_pool)
+ goto out;
+
+ size = iobuf->iobuf_arena->iobuf_pool->page_size;
+out:
+ return size;
+}
+
+
+size_t
+iobref_size (struct iobref *iobref)
+{
+ size_t size = 0;
+ int i = 0;
+
+ if (!iobref)
+ goto out;
+
+ LOCK (&iobref->lock);
+ {
+ for (i = 0; i < 8; i++) {
+ if (iobref->iobrefs[i])
+ size += iobuf_size (iobref->iobrefs[i]);
+ }
+ }
+ UNLOCK (&iobref->lock);
+out:
+ return size;
+}