Csaba Henk
2018-Mar-21 10:27 UTC
[Gluster-users] Request For Opinions: what to do about the synthetic statfvs "tweak"?
Hi list,
We have an ancient hack that fuse not
just passes on the statvfs data it's getting
from the storage, but tweaks it by setting
f_bsize / f_frsize to values of its own
preference. [1]
The supposed advantage is that f_bsize
serves as a hint to applications for the
preferred io size. (And regarding f_frsize --
in Linux it's a historical workaround for
certain bugs in userspace[2] that f_bsize
and f_frsize are being kept equal.)
However, this has the side effect of
getting slightly different values for total
and used/free space of a volume when
accessed through libgfapi and when through
fuse -- because these values are multiples
of f_frsize, and libgfapi uses the native f_frsize
of the backend (typically 4k), while fuse provides
its synthetic f_frsize (typically 128k). So the
libfgapi provided sizes are more granular.
OTOH, I couldn't find any program in
standard Unix userspace where the
implementation commonly used in GNU/Linux
would rely on the f_bsize hint. It does not
mean there is none -- and then there is of course
the vast space of non-standard userland.
Possibiliities are:
1) retire the whole tweak and just pass on
what we get from storage [3]
2) keep the f_bsize tweak, but drop the
of f_frsize == f_bsize legacy workaround
and take f_frsize from storage
3) keep everything as is, and put up with the
fs stat divergence between transports
+1) make behaviors of 1) to 3) tunable --
but I would not like to go this way in
the spirit of KISS, unless absolutely a
demand
Developers: do you know of any scenario where
we benefit from the f_bsize tweak?
Users:
- do you have any application that relies on f_bsize
and benefits from its custom value?
- do you have any legacy application/stack
where the f_frsize == f_bsize workaround is
still needed (but GlusterFS / RHGS is being kept
up to date, so a change in this regard would hit
your setup)?
Thanks for your thoughts!
Regards,
Csaba
[1]:
https://github.com/gluster/glusterfs/blob/v4.0.0/xlators/mount/fuse/src/fuse-bridge.c#L3177-L3189
[2]: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=11406
[3] practically this will also imply f_frsize == f_bsize, because
Linux filesystems usually adhere to this convention
Raghavendra Talur
2018-Mar-28 01:54 UTC
[Gluster-users] Request For Opinions: what to do about the synthetic statfvs "tweak"?
On Wed 21 Mar, 2018, 3:57 PM Csaba Henk, <chenk at redhat.com> wrote:> Hi list, > > We have an ancient hack that fuse not > just passes on the statvfs data it's getting > from the storage, but tweaks it by setting > f_bsize / f_frsize to values of its own > preference. [1] > > The supposed advantage is that f_bsize > serves as a hint to applications for the > preferred io size. (And regarding f_frsize -- > in Linux it's a historical workaround for > certain bugs in userspace[2] that f_bsize > and f_frsize are being kept equal.) > > However, this has the side effect of > getting slightly different values for total > and used/free space of a volume when > accessed through libgfapi and when through > fuse -- because these values are multiples > of f_frsize, and libgfapi uses the native f_frsize > of the backend (typically 4k), while fuse provides > its synthetic f_frsize (typically 128k). So the > libfgapi provided sizes are more granular. > > OTOH, I couldn't find any program in > standard Unix userspace where the > implementation commonly used in GNU/Linux > would rely on the f_bsize hint. It does not > mean there is none -- and then there is of course > the vast space of non-standard userland. > > Possibiliities are: > > 1) retire the whole tweak and just pass on > what we get from storage [3] >I prefer the above. It makes libgfapi and fuse consistent. 2) keep the f_bsize tweak, but drop the> of f_frsize == f_bsize legacy workaround > and take f_frsize from storage > 3) keep everything as is, and put up with the > fs stat divergence between transports > +1) make behaviors of 1) to 3) tunable -- > but I would not like to go this way in > the spirit of KISS, unless absolutely a > demand > > Developers: do you know of any scenario where > we benefit from the f_bsize tweak? > > Users: > - do you have any application that relies on f_bsize > and benefits from its custom value? > - do you have any legacy application/stack > where the f_frsize == f_bsize workaround is > still needed (but GlusterFS / RHGS is being kept > up to date, so a change in this regard would hit > your setup)? > > Thanks for your thoughts! > > Regards, > Csaba > > [1]: > https://github.com/gluster/glusterfs/blob/v4.0.0/xlators/mount/fuse/src/fuse-bridge.c#L3177-L3189 > [2]: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=11406 > [3] practically this will also imply f_frsize == f_bsize, because > Linux filesystems usually adhere to this convention >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gluster.org/pipermail/gluster-users/attachments/20180328/174fc6fc/attachment.html>