On Thu, Apr 25, 2019 at 09:18:04PM -0400, J. Bruce Fields wrote: > On Thu, Apr 25, 2019 at 11:14:23PM +0200, Andreas Dilger wrote: > > On Apr 25, 2019, at 10:14 PM, J. Bruce Fields <bfields@xxxxxxxxxxxx> wrote: > > > > > > On Thu, Apr 25, 2019 at 02:04:59PM -0400, Jeff Layton wrote: > > >> More bikeshedding: should we have a "states" file instead of an "opens" > > >> file and print a different set of output for each stateid type? > > > > > > Sure. The format of the file could be something like > > > > > > <stateid> open rw -- <openowner>... > > > <stateid> lock r 0-EOF <lockowner>... > > > <stateid> deleg r > > > > > > I wonder if we could put owners on separate lines and do some > > > heirarchical thing to show owner-stateid relationships? Hm. That's > > > kind of appealing but more work. > > > > My suggestion here would be to use YAML-formatted output rather than > > space/tab separated positional fields. That can still be made human > > readable, but also machine parseable and extensible if formatted properly. > > Well, anything we do will be machine-parseable. But I can believe YAML > would make future extension easier. It doesn't look like it would be > more complicated to generate. It uses C-style escaping (like \x32) so > there'd be no change to how we format binary blobs. > > The field names make it a tad more verbose but I guess it's not too bad. OK, I tried changing "opens" to "states" and using YAML. Example output: - 0x020000006a5fdc5c4ad09d9e01000000: { type: open, access: rw, deny: --, superblock: "fd:10:13649", owner: "open id:\x00\x00\x00&\x00\x00\x00\x00\x00\x0046��QH " } - 0x010000006a5fdc5c4ad09d9e03000000: { type: open, access: r-, deny: --, superblock: "fd:10:13650", owner: "open id:\x00\x00\x00&\x00\x00\x00\x00\x00\x0046��QH" } - 0x010000006a5fdc5c4ad09d9e04000000: { type: deleg, access: r, superblock: "fd:10:13650" } - 0x010000006a5fdc5c4ad09d9e06000000: { type: lock, superblock: "fd:10:13649", owner: "lock id:\x00\x00\x00&\x00\x00\x00\x00\x00\x00\x00\x00" } The parser Andreas suggested (https://yaml-online-parser.appspot.com/) accepts these. It also thinks strings are always in a unicode encoding of some kind, which they aren't. The owners are arbitrary series of bytes but I'd like at least any ascii parts to be human readable, and I'm a little stuck on how to do that. --b.