Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 Feb 2021 01:21:11 +0000
From:      bugzilla-noreply@freebsd.org
To:        bugs@FreeBSD.org
Subject:   [Bug 253424] fusefs: statfs doesn't set f_iosize ("optimal transfer block size")
Message-ID:  <bug-253424-227@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D253424

            Bug ID: 253424
           Summary: fusefs: statfs doesn't set f_iosize ("optimal transfer
                    block size")
           Product: Base System
           Version: 12.2-RELEASE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: kern
          Assignee: bugs@FreeBSD.org
          Reporter: jmillikin@gmail.com

The FUSE_STATFS response includes fields `bsize` and `frsize`, matching the
Linux statfs fields of the same names:

* f_bsize: optimal transfer block size
* f_frsize: fragment size

The FreeBSD `struct statfs' equivalent fields are:

* f_bsize: filesystem fragment size
* f_iosize: optimal transfer block size

The fusefs driver function `fuse_vfsop_statfs()' copies the fragment size
correctly, but doesn't copy the transfer block size. This causes `statfs()'
calls on a FUSE filesystem to return an incorrect `(struct statfs*)->f_iosi=
ze'
value of 65535, instead of whatever the filesystem server returned.

Additionally, during testing, I noticed that the wrapper implementation of
`statvfs()' doesn't propagate `(struct statfs*)->f_namemax' -- it calls
`pathconf(path, _PC_NAME_MAX)' instead, which doesn't return correct values=
 for
FUSE filesystems.

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-253424-227>