On Sun, 22 Jul 2012, Sasha Levin wrote:
> This is something we can calculate on the fly, and doesn't justify the 
> overhead
> of tracking it all over fid transitions.
> 
> Signed-off-by: Sasha Levin <[email protected]>

What kind of overhead are you talking about?

> ---
>  tools/kvm/include/kvm/virtio-9p.h |    1 -
>  tools/kvm/virtio/9p.c             |   16 +++++++++++-----
>  2 files changed, 11 insertions(+), 6 deletions(-)
> 
> diff --git a/tools/kvm/include/kvm/virtio-9p.h 
> b/tools/kvm/include/kvm/virtio-9p.h
> index 186fe05..cb590d1 100644
> --- a/tools/kvm/include/kvm/virtio-9p.h
> +++ b/tools/kvm/include/kvm/virtio-9p.h
> @@ -26,7 +26,6 @@ struct p9_msg {
>  struct p9_fid {
>       u32                     fid;
>       u32                     uid;
> -     u8                      is_dir;
>       char                    abs_path[PATH_MAX];
>       char                    *path;
>       DIR                     *dir;
> diff --git a/tools/kvm/virtio/9p.c b/tools/kvm/virtio/9p.c
> index c663dab..2cf99a0 100644
> --- a/tools/kvm/virtio/9p.c
> +++ b/tools/kvm/virtio/9p.c
> @@ -228,6 +228,15 @@ static int virtio_p9_openflags(int flags)
>       return flags;
>  }
>  
> +static bool is_dir(struct p9_fid *fid)
> +{
> +     struct stat st;
> +
> +     stat(fid->abs_path, &st);
> +
> +     return S_ISDIR(st.st_mode);
> +}
> +
>  static void virtio_p9_open(struct p9_dev *p9dev,
>                          struct p9_pdu *pdu, u32 *outlen)
>  {
> @@ -245,7 +254,7 @@ static void virtio_p9_open(struct p9_dev *p9dev,
>  
>       stat2qid(&st, &qid);
>  
> -     if (new_fid->is_dir) {
> +     if (is_dir(new_fid)) {
>               new_fid->dir = opendir(new_fid->abs_path);
>               if (!new_fid->dir)
>                       goto err_out;
> @@ -394,7 +403,6 @@ static void virtio_p9_walk(struct p9_dev *p9dev,
>                               goto err_out;
>  
>                       stat2qid(&st, &wqid);
> -                     new_fid->is_dir = S_ISDIR(st.st_mode);
>                       strcpy(new_fid->path, tmp);
>                       new_fid->uid = fid->uid;
>                       nwqid++;
> @@ -406,7 +414,6 @@ static void virtio_p9_walk(struct p9_dev *p9dev,
>                */
>               pdu->write_offset += sizeof(u16);
>               old_fid = get_fid(p9dev, fid_val);
> -             new_fid->is_dir = old_fid->is_dir;
>               strcpy(new_fid->path, old_fid->path);
>               new_fid->uid    = old_fid->uid;
>       }
> @@ -445,7 +452,6 @@ static void virtio_p9_attach(struct p9_dev *p9dev,
>  
>       fid = get_fid(p9dev, fid_val);
>       fid->uid = uid;
> -     fid->is_dir = 1;
>       strcpy(fid->path, "/");
>  
>       virtio_p9_pdu_writef(pdu, "Q", &qid);
> @@ -547,7 +553,7 @@ static void virtio_p9_readdir(struct p9_dev *p9dev,
>       virtio_p9_pdu_readf(pdu, "dqd", &fid_val, &offset, &count);
>       fid = get_fid(p9dev, fid_val);
>  
> -     if (!fid->is_dir) {
> +     if (!is_dir(fid)) {
>               errno = EINVAL;
>               goto err_out;
>       }
> -- 
> 1.7.8.6
> 
> 
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to