Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: -current tar(1) breakage



On Thu, 1 Apr 2021, Christos Zoulas wrote:

RVP  <rvp%SDF.ORG@localhost> wrote:

Indeed. Bug #56083 is caused by the wrong function being called:

diff -u /usr/src/sys/fs/puffs/puffs_vfsops.c{.orig,}
--- /usr/src/sys/fs/puffs/puffs_vfsops.c.orig   2020-02-27
22:12:53.000000000 +0000
+++ /usr/src/sys/fs/puffs/puffs_vfsops.c        2021-03-30
12:02:35.402544154 +0000
@@ -503,7 +503,7 @@
         */
        copy_statvfs_info(sbp, mp);
        if (!error) {
-               statvfs_to_puffs_statvfs(sbp, &statvfs_msg->pvfsr_sb);
+               puffs_statvfs_to_statvfs(&statvfs_msg->pvfsr_sb, sbp);
        }

This is not exactly right either, I fixed it.

Yes. What I did above is wrong. copy_statvfs_info() should come after
puffs_statvfs_to_statvfs(). Otherwise, you end up with a mount with
empty to and from names--yeesh.

But, there is a problem here, though: copy_statvfs_info() overrides
the FUSE-supplied f_namemax (EXT2_NAME_LEN = 255):

$ ./a.out /mnt/work/dmesg.txt svfs.f_frsize: 4096
svfs.f_iosize: 512
svfs.f_bsize: 4096
svfs.f_namemax: 511     <-- not EXT2_NAME_LEN

The statvfs-filling sequence starting at line 219 doesn't look right
either:

    219         struct statvfs *sb = STATVFSBUF_GET();
    220         puffs_statvfs_to_statvfs(&args->pa_svfsb, sb);
    221         copy_statvfs_info(sb, mp);
    222         STATVFSBUF_PUT(sb);
    223
    224         statvfs_to_puffs_statvfs(&mp->mnt_stat, &args->pa_svfsb);

Why?


Well, because, it seems to me, that the values copied into `sb'
are just discarded. This confused me when I saw it first because
the puffs statvfs copy functions reverse the usual convention of
having a (dest, src) argument order--they have (src, dest).
copy_statvfs_info() has it the usual way.

The question is where does NFS return a 0 namelen...


No idea--didn't look too deeply into this. Are you able to
reproduce this issue?

-RVP


Home | Main Index | Thread Index | Old Index