diff options
| author | Anand V. Avati <avati@amp.gluster.com> | 2009-04-17 23:12:37 +0530 | 
|---|---|---|
| committer | Anand V. Avati <avati@amp.gluster.com> | 2009-04-17 23:12:37 +0530 | 
| commit | 1d6dfe94fb970b51d96653da6c3361533d697fc3 (patch) | |
| tree | 6d90357c54aac0e1732d05a0ef853ab44a396c69 /libglusterfs/src | |
| parent | 7867577b346c7f003be67ad202f4085cf35fdf7c (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')
| -rw-r--r-- | libglusterfs/src/iobuf.c | 42 | ||||
| -rw-r--r-- | libglusterfs/src/iobuf.h | 4 | 
2 files changed, 46 insertions, 0 deletions
diff --git a/libglusterfs/src/iobuf.c b/libglusterfs/src/iobuf.c index a10dc6f84..84e3b5efe 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; +} diff --git a/libglusterfs/src/iobuf.h b/libglusterfs/src/iobuf.h index 2ad640bbc..4c3477084 100644 --- a/libglusterfs/src/iobuf.h +++ b/libglusterfs/src/iobuf.h @@ -109,4 +109,8 @@ void iobref_unref (struct iobref *iobref);  int iobref_add (struct iobref *iobref, struct iobuf *iobuf);  int iobref_merge (struct iobref *to, struct iobref *from); + +size_t iobuf_size (struct iobuf *iobuf); +size_t iobref_size (struct iobref *iobref); +  #endif /* !_IOBUF_H_ */  | 
