LES on 2023-07-03: I thought it would be nice if we had a [file is subvolume] option in the file command so I made my own:
proc issubvolume {path} {
set path [file normalize $path]
if {![file exists $path]} {puts 0; return}
if {[catch {exec btrfs subvolume show $path} error]} {
#puts $error
if {[regexp "not a subvolume" $error]} {
puts 0; return
} else {puts 1; return}
} else {puts 1; return}
}Note that you need to be root to run btrfs subvolume show $path, but my code works around that. It works for regular users too.
Problem: it may generate incorrect output if you don't have btrfs-progs installed, which is possible. I am not quite sure of how to handle that.
I (or you?) may contribute other Btrfs related procs in the future. Dealing with snapshots seems to be the most obvious candidate to me.