Skip to contentSkip to conversation

Issue remounting from compress-force to compress

DISCUSSION Roman Mamedov 2 participants 2 messages Oct 14, 2024 Btrfs file system

lore
Share & tools
lore
#0 lore raw

Hello,

Just faced this when trying to change a mounted FS from compress-force to just compress.

Initial state:

  # mount | grep btrfs
  /dev/mapper/wd-p1 on /mnt/p1 type btrfs (rw,relatime,compress-force=zstd:9,discard=async,space_cache=v2,subvolid=5,subvol=/)

Remounting:

  # mount /mnt/p1 -o remount,compress=zstd:9

But no effect:

  # mount | grep btrfs
  /dev/mapper/wd-p1 on /mnt/p1 type btrfs (rw,relatime,compress-force=zstd:9,discard=async,space_cache=v2,subvolid=5,subvol=/)

OK, remounting to no compression:

  # mount /mnt/p1 -o remount,compress-force=none

Success:

  # mount | grep btrfs
  /dev/mapper/wd-p1 on /mnt/p1 type btrfs (rw,relatime,discard=async,space_cache=v2,subvolid=5,subvol=/)

Now, I expect to enable just compress:

  # mount /mnt/p1 -o remount,compress=zstd:9

But suddenly, compress-force is enabled again instead:

  # mount | grep btrfs
  /dev/mapper/wd-p1 on /mnt/p1 type btrfs (rw,relatime,compress-force=zstd:9,discard=async,space_cache=v2,subvolid=5,subvol=/)

This is unexpected and seems like a bug.

The only way to achieve what I wanted was:

  # mount /mnt/p1 -o remount,compress-force=none,compress=zstd:9
  # mount | grep btrfs
  /dev/mapper/wd-p1 on /mnt/p1 type btrfs (rw,relatime,compress=zstd:9,discard=async,space_cache=v2,subvolid=5,subvol=/)

Kernel version is 6.8.12-2-pve (Proxmox).

Signature · 2 lines
With respect,
Roman
#1 lore raw
Quoted 10 lines · Roman Mamedov

Hello,

Just faced this when trying to change a mounted FS from compress-force to just compress.

Initial state:

  # mount | grep btrfs
  /dev/mapper/wd-p1 on /mnt/p1 type btrfs (rw,relatime,compress-force=zstd:9,discard=async,space_cache=v2,subvolid=5,subvol=/)
Quoted 8 lines

Remounting:

  # mount /mnt/p1 -o remount,compress=zstd:9

But no effect:

  # mount | grep btrfs
  /dev/mapper/wd-p1 on /mnt/p1 type btrfs (rw,relatime,compress-force=zstd:9,discard=async,space_cache=v2,subvolid=5,subvol=/)

It turns out we had an unexpected change in semantics with kernel 6.8+ due to the migration to use fs context, as compress-force is not disabled anymore when specifying only compress.
I've sent a patch to bring back the old semantics:

https://lore.kernel.org/linux-btrfs/4d68f9e1e230dba0dfa70fb664540a962e0ae055.1728920737.git.fdmanana@suse.com/

Thanks.

Quoted 34 lines

OK, remounting to no compression:

  # mount /mnt/p1 -o remount,compress-force=none

Success:

  # mount | grep btrfs
  /dev/mapper/wd-p1 on /mnt/p1 type btrfs (rw,relatime,discard=async,space_cache=v2,subvolid=5,subvol=/)

Now, I expect to enable just compress:

  # mount /mnt/p1 -o remount,compress=zstd:9

But suddenly, compress-force is enabled again instead:

  # mount | grep btrfs
  /dev/mapper/wd-p1 on /mnt/p1 type btrfs (rw,relatime,compress-force=zstd:9,discard=async,space_cache=v2,subvolid=5,subvol=/)

This is unexpected and seems like a bug.

The only way to achieve what I wanted was:

  # mount /mnt/p1 -o remount,compress-force=none,compress=zstd:9
  # mount | grep btrfs
  /dev/mapper/wd-p1 on /mnt/p1 type btrfs (rw,relatime,compress=zstd:9,discard=async,space_cache=v2,subvolid=5,subvol=/)

Kernel version is 6.8.12-2-pve (Proxmox).

--
With respect,
Roman