According to the archwiki article on a swapfile on btrfs: https://wiki.archlinux.org/title/Btrfs#Swap_file

Tip: Consider creating the subvolume directly below the top-level subvolume, e.g. @swap. Then, make sure the subvolume is mounted to /swap (or any other accessible location).

But… why? I’ve been researching for a bit now, and I still don’t understand the benefit of a subvolume directly below the top level subvolume, as opposed to a nested subvolume.

At first I thought this might be because nested subvolumes are included in snapshots, but that doesn’t seem to be the case, according to a reddit post… but I can’t find anything about this on the arch wiki, gentoo wiki, or the btrfs readthedocs page.

Any ideas? I feel like the tip wouldn’t just be there just because.

  • @[email protected]
    link
    fedilink
    315 days ago

    I think it is so that the subvolume can be mounted with different options. You can of course have a mixed layout which might be more convenient, so that say root and home subvolumes mount with the same options, but swap mounts with different options. And the top level never gets mounted at all.

    toplevel (not mounted)
    +-- @ (subvolume mounted on /)
        +-- home (subvolume, looks like a folder, same mount options as @)
        +-- usr (folder, gets snapshotted by @)
        +-- ...
    +-- @swap (subvolume with different options, mounted on /swap)
    

    I set mine up with a purely flat layout so I haven’t verified this is true, but it sounds reasonable.

    Here’s the documentation I was looking at:

    https://web.archive.org/web/20220103010302/https://btrfs.wiki.kernel.org/index.php/SysadminGuide#Flat