Open frantisekhanzlikbl opened 5 days ago
The json output for the subvolume related commands is currently enabled only in the experimental build. The format hasn't been finalized, at least list
does not print complete subvolume information and it still depends on the parameters, the way multiple objects are enumerated in the json is also not unified.
To see the difference run:
$ btrfs subvolume list /mnt
{
"__header": {
"version": "1"
},
"subvolume-list": [
{
"id": 19112,
"generation": 7730702,
"top_level": 5,
"path": "test"
},
{
"id": 19113,
"generation": 7730702,
"top_level": 5,
"path": "test-snap"
}
]
}
and
btrfs --format=json subvol list -pcguqR /mnt
{
"__header": {
"version": "1"
},
"subvolume-list": [
{
"id": 19112,
"generation": 7730702,
"cgeneration": 7730701,
"parent": 5,
"top_level": 5,
"parent_uuid": null,
"received_uuid": null,
"uuid": "dc16dd1b-825f-3245-94a8-557672d6cf85",
"path": "test"
},
{
"id": 19113,
"generation": 7730702,
"cgeneration": 7730702,
"parent": 5,
"top_level": 5,
"parent_uuid": "dc16dd1b-825f-3245-94a8-557672d6cf85",
"received_uuid": null,
"uuid": "91708196-fd07-2242-8b8e-af9375474a09",
"path": "test-snap"
}
]
}
This is still missing the send and receive related transaction ids, times, and maybe other inforamtion that's available and does not have to be conditional like that.
Ohh, I did not realise that, thanks!
Perhaps a note in the error message or in Documentation/dev/dev-json.rst
could be added? It was not clear to me at all as an outsider that there were such things as experimental builds (even though https://github.com/kdave/btrfs-progs/blob/b0e5ef4cf7c8b473119e0d487a26b96058e8f80d/cmds/subvolume-list.c#L1741 should've made that clear. ':)). I'd volunteer to make the changes, but I hardly know reST and would rather not touch any C I don't understand in its entirety.
Either way, it is entirely reasonable that the feature is not on by default if the format is not yet stabilised, even though I really wish it were. The horrendous grep
s I'm doing to at least attempt to handle newlines in filenames and such haunt me in my dreams. :)
Sorry for the false report. Unless you wish to use the issue to track the stabilisation or docs update, feel free to close this.
From my understanding, the three
btrfs subvolume
subcommandslist
,show
, andget-default
should respect the global--format=json
flag. Currently, none of them seem to do so. Instead, all of them printERROR: output format json is unsupported for this command
.btrfs --format=json device stats
seems to work fine, so it's not all JSON output being broken, just the subvolume subcommands.uname -a
Linux tartaros 6.6.32 #1-NixOS SMP PREEMPT_DYNAMIC Sat May 25 14:22:56 UTC 2024 x86_64 GNU/Linux
btrfs --version
btrfs-progs v6.9.2