Can I easily convert an existing directory into a subvolume? (i.e. if I want to make "/home" a separate subvolume can I just go mk_btrfs_subfolder /home (or whatever the command is), instead of having to make a new empty subvolume and copying everything over?
I had a specific version of this problem: I have a couple of top-level btrfs subvolumes on my file system that are snapshotted by a utility called snapper on a particular schedule. Unfortunately this can create quite a lot of bloat when it comes to oft-changing directories, of which I had many that I wanted to exclude.
At initial setup, excluding particular paths from snapshots is easy: just make a new btrfs subvolume at the path in question. Unfortunately, it's a bit more complicated once you have a running system.
I thought this wouldn't be too hard to script, and so I started a little bash script. And of course that little script quickly grew to almost 100 lines, as I started to handle different kinds of input, file locks, permissions, etc.
If you have a similar problem (snapper-managed btrfs filesystem that you'd like to prune), I invite you to use (at your own risk): https://github.com/billwanjohi/snapper-exclude/blob/master/snapper-exclude.sh