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.
They share the same partition, but they’re treated like independent filesystems. They can have different mount options, so on one you can enable compression but not another some you may want to disable Copy-on-Write, etc. That’s also useful so you can rollback a system update without also rolling back your data or vice-versa. You can also store multiple distros each in a subvolume and boot different ones all while sharing the same partition and not wasting space. If you have multiple users it’s worth having a subvolume each so each user can independently rollback their home directory. Maybe you want your projects on a subvolume so you can snapshot and btrfs-send it frequently.
I don’t use btrfs but on ZFS I have tons of datasets: steam library gets large recordsize and light compression, backups are heavily compressed and encrypted, VMs have a dataset tweaked for disk images, my music and movies also have a larger recordsize but no compression. I have one that’s case insensitive that’s shared with Windows machines and Wine stuff. I cap the size of caches and logs.
It’s very versatile.