Message ID | 1408699341-6126-1-git-send-email-mjt@msgid.tls.msk.ru |
---|---|
State | New |
Headers | show |
Michael Tokarev <mjt@tls.msk.ru> writes: > From: Bastian Blank <waldi@debian.org> > > When using mapped mode in 9pfs, readdir implementation > should not return file type in d_type from the host > readdir, instead, it should use the type stored in > the extended attributes. Since d_type is optional > and reading ext attrs for every readdir is expensive, > it should be sufficient to just set d_type to DT_UNKNOWN, > so guest will know to look it up separately. > > This is a -stable material. > > Signed-off-by: Michael Tokarev <mjt@tls.msk.ru> > > --- qemu-2.0.0+dfsg.orig/hw/9pfs/virtio-9p-local.c > +++ qemu-2.0.0+dfsg/hw/9pfs/virtio-9p-local.c > @@ -396,12 +396,16 @@ static int local_readdir_r(FsContext *ct > > again: > ret = readdir_r(fs->dir, entry, result); > - if (ctx->export_flags & V9FS_SM_MAPPED_FILE) { > + if (ctx->export_flags & V9FS_SM_MAPPED) { > + entry->d_type = DT_UNKNOWN; > + } > + else if (ctx->export_flags & V9FS_SM_MAPPED_FILE) { > if (!ret && *result != NULL && > !strcmp(entry->d_name, VIRTFS_META_DIR)) { > /* skp the meta data directory */ > goto again; > } > + entry->d_type = DT_UNKNOWN; > } > return ret; > } Hi Bastian, Can I add your signed-off-by to this patch ? -aneesh
On Wed, Sep 03, 2014 at 04:39:35PM -0500, Aneesh Kumar K.V wrote: > Michael Tokarev <mjt@tls.msk.ru> writes: > > From: Bastian Blank <waldi@debian.org> > > > > When using mapped mode in 9pfs, readdir implementation > > should not return file type in d_type from the host > > readdir, instead, it should use the type stored in > > the extended attributes. Since d_type is optional > > and reading ext attrs for every readdir is expensive, > > it should be sufficient to just set d_type to DT_UNKNOWN, > > so guest will know to look it up separately. > > > > This is a -stable material. > > > > Signed-off-by: Michael Tokarev <mjt@tls.msk.ru> Signed-off-by: Bastian Blank <waldi@debian.org> > > > > --- qemu-2.0.0+dfsg.orig/hw/9pfs/virtio-9p-local.c > > +++ qemu-2.0.0+dfsg/hw/9pfs/virtio-9p-local.c > > @@ -396,12 +396,16 @@ static int local_readdir_r(FsContext *ct > > > > again: > > ret = readdir_r(fs->dir, entry, result); > > - if (ctx->export_flags & V9FS_SM_MAPPED_FILE) { > > + if (ctx->export_flags & V9FS_SM_MAPPED) { > > + entry->d_type = DT_UNKNOWN; > > + } > > + else if (ctx->export_flags & V9FS_SM_MAPPED_FILE) { > > if (!ret && *result != NULL && > > !strcmp(entry->d_name, VIRTFS_META_DIR)) { > > /* skp the meta data directory */ > > goto again; > > } > > + entry->d_type = DT_UNKNOWN; > > } > > return ret; > > } > > Can I add your signed-off-by to this patch ? Sure. Bastian --
--- qemu-2.0.0+dfsg.orig/hw/9pfs/virtio-9p-local.c +++ qemu-2.0.0+dfsg/hw/9pfs/virtio-9p-local.c @@ -396,12 +396,16 @@ static int local_readdir_r(FsContext *ct again: ret = readdir_r(fs->dir, entry, result); - if (ctx->export_flags & V9FS_SM_MAPPED_FILE) { + if (ctx->export_flags & V9FS_SM_MAPPED) { + entry->d_type = DT_UNKNOWN; + } + else if (ctx->export_flags & V9FS_SM_MAPPED_FILE) { if (!ret && *result != NULL && !strcmp(entry->d_name, VIRTFS_META_DIR)) { /* skp the meta data directory */ goto again; } + entry->d_type = DT_UNKNOWN; } return ret; }