On Freitag, 22. November 2019 21:00:34 CET Dan Schatzberg wrote: > Some filesystems may return 0s in statfs (trivially, a FUSE filesystem > can do so). QEMU should handle this gracefully and just behave the > same as if statfs failed.
Is that actually legal in non-error cases? Shouldn't a driver without a block size concept return 512 according to POSIX? > Signed-off-by: Dan Schatzberg <dschatzb...@fb.com> > --- > hw/9pfs/9p.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c > index 37abcdb71e..520177f40c 100644 > --- a/hw/9pfs/9p.c > +++ b/hw/9pfs/9p.c > @@ -1834,8 +1834,10 @@ static int32_t coroutine_fn get_iounit(V9fsPDU *pdu, > V9fsPath *path) * and as well as less than (client msize - P9_IOHDRSZ)) > */ > if (!v9fs_co_statfs(pdu, path, &stbuf)) { > - iounit = stbuf.f_bsize; > - iounit *= (s->msize - P9_IOHDRSZ)/stbuf.f_bsize; > + if (stbuf.f_bsize) { > + iounit = stbuf.f_bsize; > + iounit *= (s->msize - P9_IOHDRSZ) / stbuf.f_bsize; > + } > } > if (!iounit) { > iounit = s->msize - P9_IOHDRSZ; Nevertheless, since that will leave iounit initialized with zero and since there is already an !ionunit case handling there ... Acked-by: Christian Schoenebeck <qemu_...@crudebyte.com> Best regards, Christian Schoenebeck