From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
To: qemu-devel@nongnu.org
Cc: aliguori@us.ibm.com,
"Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
Subject: [Qemu-devel] [PATCH -V3 6/8] hw/9pfs: Add directory reclaim support
Date: Sat, 5 Mar 2011 23:22:11 +0530 [thread overview]
Message-ID: <1299347533-17047-6-git-send-email-aneesh.kumar@linux.vnet.ibm.com> (raw)
In-Reply-To: <1299347533-17047-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
---
hw/9pfs/virtio-9p.c | 21 +++++++++++++++++++--
1 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/hw/9pfs/virtio-9p.c b/hw/9pfs/virtio-9p.c
index 1fa7256..293a562 100644
--- a/hw/9pfs/virtio-9p.c
+++ b/hw/9pfs/virtio-9p.c
@@ -142,7 +142,12 @@ static int v9fs_do_open(V9fsState *s, V9fsString *path, int flags)
static DIR *v9fs_do_opendir(V9fsState *s, V9fsString *path)
{
- return s->ops->opendir(&s->ctx, path->data);
+ DIR *dir;
+ dir = s->ops->opendir(&s->ctx, path->data);
+ if (dirfd(dir) > P9_FD_RECLAIM_THRES) {
+ v9fs_reclaim_fd(s);
+ }
+ return dir;
}
static void v9fs_do_rewinddir(V9fsState *s, DIR *dir)
@@ -484,6 +489,10 @@ static V9fsFidState *lookup_fid(V9fsState *s, int32_t fid)
f->fsmap.fs.fd = v9fs_do_open(s, &f->fsmap.path,
f->fsmap.open_flags);
}
+ } else if (f->fsmap.fid_type == P9_FID_DIR) {
+ if (f->fsmap.fs.dir == NULL) {
+ f->fsmap.fs.dir = v9fs_do_opendir(s, &f->fsmap.path);
+ }
}
/*
* Mark the fid as referenced so that the LRU
@@ -550,6 +559,12 @@ static void v9fs_reclaim_fd(V9fsState *s)
f->fsmap.fs.fd = -1;
reclaim_count++;
}
+ } else if (f->fsmap.fid_type == P9_FID_DIR) {
+ if (f->fsmap.fs.dir != NULL) {
+ v9fs_do_closedir(s, f->fsmap.fs.dir);
+ f->fsmap.fs.dir = NULL;
+ reclaim_count++;
+ }
}
if (reclaim_count >= P9_FD_RECLAIM_THRES/2) {
break;
@@ -633,7 +648,9 @@ static int free_fid(V9fsState *s, int32_t fid)
v9fs_do_close(s, fidp->fsmap.fs.fd);
}
} else if (fidp->fsmap.fid_type == P9_FID_DIR) {
- v9fs_do_closedir(s, fidp->fsmap.fs.dir);
+ if (fidp->fsmap.fs.dir != NULL) {
+ v9fs_do_closedir(s, fidp->fsmap.fs.dir);
+ }
} else if (fidp->fsmap.fid_type == P9_FID_XATTR) {
retval = v9fs_xattr_fid_clunk(s, fidp);
}
--
1.7.1
next prev parent reply other threads:[~2011-03-05 17:52 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-05 17:52 [Qemu-devel] [PATCH -V3 1/8] hw/9pfs: Add V9fsfidmap in preparation for adding fd reclaim Aneesh Kumar K.V
2011-03-05 17:52 ` [Qemu-devel] [PATCH -V3 2/8] hw/9pfs: Add file descriptor reclaim support Aneesh Kumar K.V
2011-03-13 16:08 ` Stefan Hajnoczi
2011-03-13 18:57 ` Aneesh Kumar K. V
2011-03-14 10:13 ` Stefan Hajnoczi
2011-03-15 8:35 ` Aneesh Kumar K. V
2011-03-05 17:52 ` [Qemu-devel] [PATCH -V3 3/8] hw/9pfs: Use v9fs_do_close instead of close Aneesh Kumar K.V
2011-03-13 16:10 ` Stefan Hajnoczi
2011-03-13 18:58 ` Aneesh Kumar K. V
2011-03-05 17:52 ` [Qemu-devel] [PATCH -V3 4/8] hw/9pfs: Implement syncfs Aneesh Kumar K.V
2011-03-13 16:24 ` Stefan Hajnoczi
2011-03-13 18:59 ` Aneesh Kumar K. V
2011-03-05 17:52 ` [Qemu-devel] [PATCH -V3 5/8] hw/9pfs: Add open flag to fid Aneesh Kumar K.V
2011-03-13 16:38 ` Stefan Hajnoczi
2011-03-13 19:01 ` Aneesh Kumar K. V
2011-03-05 17:52 ` Aneesh Kumar K.V [this message]
2011-03-13 16:42 ` [Qemu-devel] [PATCH -V3 6/8] hw/9pfs: Add directory reclaim support Stefan Hajnoczi
2011-03-13 19:02 ` Aneesh Kumar K. V
2011-03-05 17:52 ` [Qemu-devel] [PATCH -V3 7/8] hw/9pfs: Add new virtfs option cache=none to skip host page cache Aneesh Kumar K.V
2011-03-13 17:23 ` Stefan Hajnoczi
2011-03-13 19:04 ` Aneesh Kumar K. V
2011-03-13 20:57 ` Stefan Hajnoczi
2011-03-15 8:36 ` Aneesh Kumar K. V
2011-03-14 10:20 ` Stefan Hajnoczi
2011-03-15 9:19 ` Aneesh Kumar K. V
2011-03-15 11:11 ` Stefan Hajnoczi
2011-03-15 12:30 ` Aneesh Kumar K. V
2011-03-16 8:59 ` Stefan Hajnoczi
2011-03-05 17:52 ` [Qemu-devel] [PATCH -V3 8/8] hw/9pfs: Skip file system sync if we have specified cache=none option Aneesh Kumar K.V
2011-03-13 15:46 ` [Qemu-devel] [PATCH -V3 1/8] hw/9pfs: Add V9fsfidmap in preparation for adding fd reclaim Stefan Hajnoczi
2011-03-13 19:06 ` Aneesh Kumar K. V
2011-03-13 20:53 ` Stefan Hajnoczi
2011-03-14 10:23 ` Stefan Hajnoczi
2011-03-15 9:20 ` Aneesh Kumar K. V
2011-03-15 10:38 ` Stefan Hajnoczi
2011-03-15 12:27 ` Aneesh Kumar K. V
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1299347533-17047-6-git-send-email-aneesh.kumar@linux.vnet.ibm.com \
--to=aneesh.kumar@linux.vnet.ibm.com \
--cc=aliguori@us.ibm.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).