diff options
author | Pranith Kumar K <pkarampu@redhat.com> | 2013-02-06 07:04:10 +0530 |
---|---|---|
committer | Anand Avati <avati@redhat.com> | 2013-02-06 09:48:23 -0800 |
commit | ee1472336c3e0747eef53b826985b51696d697ae (patch) | |
tree | c513ae9dc8553e95435b3e752ae81f8bc8a08281 | |
parent | 3a141cda38cd6908dc3f1103a02eb38007552e87 (diff) |
libglusterfs: Maintain open-fd-count in inode.
Change-Id: I643d02959f92e40f68a53baf165753ed20f8b3e0
BUG: 908146
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
Reviewed-on: http://review.gluster.org/4468
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
-rw-r--r-- | libglusterfs/src/fd.c | 6 | ||||
-rw-r--r-- | libglusterfs/src/inode.c | 1 | ||||
-rw-r--r-- | libglusterfs/src/inode.h | 1 |
3 files changed, 8 insertions, 0 deletions
diff --git a/libglusterfs/src/fd.c b/libglusterfs/src/fd.c index 0c3a5262133..2f4afc5e87a 100644 --- a/libglusterfs/src/fd.c +++ b/libglusterfs/src/fd.c @@ -513,6 +513,11 @@ fd_destroy (fd_t *fd) LOCK_DESTROY (&fd->lock); GF_FREE (fd->_ctx); + LOCK (&fd->inode->lock); + { + fd->inode->fd_count--; + } + UNLOCK (&fd->inode->lock); inode_unref (fd->inode); fd->inode = (inode_t *)0xaaaaaaaa; fd_lk_ctx_unref (fd->lk_ctx); @@ -552,6 +557,7 @@ __fd_bind (fd_t *fd) { list_del_init (&fd->inode_list); list_add (&fd->inode_list, &fd->inode->fd_list); + fd->inode->fd_count++; return fd; } diff --git a/libglusterfs/src/inode.c b/libglusterfs/src/inode.c index 886491292a8..6f1c8ec3f25 100644 --- a/libglusterfs/src/inode.c +++ b/libglusterfs/src/inode.c @@ -1624,6 +1624,7 @@ inode_dump (inode_t *inode, char *prefix) { gf_proc_dump_write("gfid", "%s", uuid_utoa (inode->gfid)); gf_proc_dump_write("nlookup", "%ld", inode->nlookup); + gf_proc_dump_write("fd-count", "%u", inode->fd_count); gf_proc_dump_write("ref", "%u", inode->ref); gf_proc_dump_write("ia_type", "%d", inode->ia_type); if (inode->_ctx) { diff --git a/libglusterfs/src/inode.h b/libglusterfs/src/inode.h index 20e28f6820d..199ce44849a 100644 --- a/libglusterfs/src/inode.h +++ b/libglusterfs/src/inode.h @@ -87,6 +87,7 @@ struct _inode { uuid_t gfid; gf_lock_t lock; uint64_t nlookup; + uint32_t fd_count; /* Open fd count */ uint32_t ref; /* reference count on this inode */ ia_type_t ia_type; /* what kind of file */ struct list_head fd_list; /* list of open files on this inode */ |