diff options
Diffstat (limited to 'hw')
-rw-r--r-- | hw/9pfs/9p.c | 12 | ||||
-rw-r--r-- | hw/9pfs/9p.h | 1 |
2 files changed, 7 insertions, 6 deletions
diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c index 9a291d1..5785177 100644 --- a/hw/9pfs/9p.c +++ b/hw/9pfs/9p.c @@ -1596,11 +1596,13 @@ static void coroutine_fn v9fs_getattr(void *opaque) retval = -ENOENT; goto out_nofid; } - /* - * Currently we only support BASIC fields in stat, so there is no - * need to look at request_mask. - */ - retval = v9fs_co_lstat(pdu, &fidp->path, &stbuf); + if ((fidp->fid_type == P9_FID_FILE && fidp->fs.fd != -1) || + (fidp->fid_type == P9_FID_DIR && fidp->fs.dir.stream)) + { + retval = v9fs_co_fstat(pdu, fidp, &stbuf); + } else { + retval = v9fs_co_lstat(pdu, &fidp->path, &stbuf); + } if (retval < 0) { goto out; } diff --git a/hw/9pfs/9p.h b/hw/9pfs/9p.h index a6f59ab..5e041e1 100644 --- a/hw/9pfs/9p.h +++ b/hw/9pfs/9p.h @@ -280,7 +280,6 @@ struct V9fsFidState { uid_t uid; int ref; bool clunked; - QSIMPLEQ_ENTRY(V9fsFidState) next; QSLIST_ENTRY(V9fsFidState) reclaim_next; }; |