summaryrefslogtreecommitdiffstats
path: root/libglusterfs/src/iobuf.c
diff options
context:
space:
mode:
authorAnand V. Avati <avati@amp.gluster.com>2009-04-17 23:12:37 +0530
committerAnand V. Avati <avati@amp.gluster.com>2009-04-17 23:12:37 +0530
commit1d6dfe94fb970b51d96653da6c3361533d697fc3 (patch)
tree6d90357c54aac0e1732d05a0ef853ab44a396c69 /libglusterfs/src/iobuf.c
parent7867577b346c7f003be67ad202f4085cf35fdf7c (diff)
added 2 APIs iobuf_size and iobref_size to return the system memory usage by an iobuf, and by all iobufs in an iobref respectively
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 a10dc6f8..84e3b5ef 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;
+}