Bug 1858535 - btrfs stops incrementing inode version counter after a remount
Summary: btrfs stops incrementing inode version counter after a remount
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: kernel
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: fedora-kernel-btrfs
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: 1851166
TreeView+ depends on / blocked
 
Reported: 2020-07-18 22:24 UTC by Eric Sandeen
Modified: 2020-10-05 04:07 UTC (History)
22 users (show)

Fixed In Version: 5.9
Clone Of:
Environment:
Last Closed: 2020-10-05 04:07:47 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Eric Sandeen 2020-07-18 22:24:36 UTC
1. Please describe the problem:

btrfs sets SB_I_VERSION by default in btrfs_fill_super() at mount time, which implements inode change counters necessary for proper NFSV4 operation.  (see documentation in include/linux/iversion.h)

However, a remount of a btrfs filesystem loses the flag unless "iversion" is explicitly added to the remount options, and the change counter stops incrementing, which will interfere with proper NFSV4 operations on an exported btrfs filesystem.

2. What is the Version-Release number of the kernel:

kernel-5.8.0-0.rc3.1.fc33

3. Did it work previously in Fedora? If so, what kernel version did the issue
   *first* appear?  Old kernels are available for download at
   https://koji.fedoraproject.org/koji/packageinfo?packageID=8 :

Unknown

4. Can you reproduce this issue? If so, please provide the steps to reproduce
   the issue below:

instrument kernel to show SB_I_VERSION status.  Or, use wireshark etc to trace NFS operations.

Mount a btrfs filesystem, observe SB_I_VERSION is set and/or observe proper version increments over the wire.

mount -o remount the mountpoint, observe no SB_I_VERSION set and/or observe no further increments.

Unfortunately statx does not yet show the version counter and AFAIK there is no btrfs disk debugger which can be used to investigate or demonstrate this behavior.

5. Does this problem occur with the latest Rawhide kernel? To install the
   Rawhide kernel, run ``sudo dnf install fedora-repos-rawhide`` followed by
   ``sudo dnf update --enablerepo=rawhide kernel``:

It occurs with upstream 5.8.0-rc3 so I assume that it does.

6. Are you running any modules that not shipped with directly Fedora's kernel?:

no

7. Please attach the kernel logs. You can get the complete kernel log
   for a boot with ``journalctl --no-hostname -k > dmesg.txt``. If the
   issue occurred on a previous boot, use the journalctl ``-b`` flag.

Output of instrumented kernel with extra printks in show_sb_opts():

[172388.212788] BTRFS: device fsid 3985d580-0145-4685-90d2-0bdd55d63502 devid 1 transid 5 /dev/pmem0p1 scanned by mkfs.btrfs (17535)
[172392.913417] BTRFS info (device pmem0p1): disk space caching is enabled
[172392.920812] BTRFS info (device pmem0p1): has skinny extents
[172392.927147] BTRFS info (device pmem0p1): flagging fs with big metadata feature
[172392.936216] BTRFS info (device pmem0p1): enabling ssd optimizations
[172392.943368] BTRFS info (device pmem0p1): checking UUID tree
[172393.063052] pmem0p1 iversion
<remount>
[172410.834731] BTRFS info (device pmem0p1): disk space caching is enabled
[172410.954965] pmem0p1 no iversion

Comment 1 Chris Murphy 2020-10-05 04:07:47 UTC
Fixed by

commit faa008899a4db21a2df99833cb4ff6fa67009a20
Author: Josef Bacik <josef>
Date:   Thu Jul 30 11:18:09 2020 -0400

    btrfs: make sure SB_I_VERSION doesn't get unset by remount


Note You need to log in before you can comment on or make changes to this bug.