Context
btrfs subvolume list supports --format json, but it's gated behind #if EXPERIMENTAL in btrfs-progs (cmds/subvolume-list.c:1747). Standard nixpkgs builds don't pass --enable-experimental, so the JSON flag is unavailable.
Our parse_btrfs_subvolume_list nom text parser works but is fragile — any change to btrfs-progs text formatting could break it silently.
What to do
When btrfs-progs promotes subvolume list --format json out of experimental:
- Switch
BtrfsSubvolumeList in cmd.rs to pass --format json
- Rewrite
cli/src/parse/btrfs_subvolume_list.rs from nom to serde_json
- Follow the same pattern used for the device stats JSON migration
JSON schema (from current experimental source)
{
"__header": { "version": "1" },
"subvolume-list": [
{
"id": 256,
"generation": 30,
"top_level": 5,
"path": "data"
}
]
}
Field names from cmds/subvolume-list.c rowspec: id (u64), generation (u64), top_level (u64), path (string). Additional fields appear when CLI flags like -u, -p, -g are used.
Tracking
Watch btrfs-progs releases for the #if EXPERIMENTAL guard being removed from subvolume list.
Context
btrfs subvolume listsupports--format json, but it's gated behind#if EXPERIMENTALin btrfs-progs (cmds/subvolume-list.c:1747). Standard nixpkgs builds don't pass--enable-experimental, so the JSON flag is unavailable.Our
parse_btrfs_subvolume_listnom text parser works but is fragile — any change to btrfs-progs text formatting could break it silently.What to do
When btrfs-progs promotes
subvolume list --format jsonout of experimental:BtrfsSubvolumeListincmd.rsto pass--format jsoncli/src/parse/btrfs_subvolume_list.rsfrom nom to serde_jsonJSON schema (from current experimental source)
{ "__header": { "version": "1" }, "subvolume-list": [ { "id": 256, "generation": 30, "top_level": 5, "path": "data" } ] }Field names from
cmds/subvolume-list.crowspec:id(u64),generation(u64),top_level(u64),path(string). Additional fields appear when CLI flags like-u,-p,-gare used.Tracking
Watch btrfs-progs releases for the
#if EXPERIMENTALguard being removed fromsubvolume list.