btrbk: adaptions for btrfs-progs >= 4.1: different output for "btrfs subvolume show"

pull/30/head
Axel Burri 2015-06-21 13:45:23 +02:00
parent 360deca5f2
commit 76f15624f3
1 changed files with 23 additions and 14 deletions

37
btrbk
View File

@ -651,22 +651,31 @@ sub btrfs_subvolume_detail($)
elsif($ret =~ /^$real_path/) { elsif($ret =~ /^$real_path/) {
TRACE "btr_detail: found btrfs subvolume: $vol->{PRINT}"; TRACE "btr_detail: found btrfs subvolume: $vol->{PRINT}";
my %trans = ( my %trans = (
name => "Name", "Name" => "name",
uuid => "uuid", "uuid" => "uuid",
parent_uuid => "Parent uuid", "UUID" => "uuid", # btrfs-progs >= 4.1
creation_time => "Creation time", "Parent uuid" => "parent_uuid",
id => "Object ID", "Parent UUID" => "parent_uuid", # btrfs-progs >= 4.1
gen => "Generation \\(Gen\\)", "Received UUID" => "received_uuid", # btrfs-progs >= 4.1
cgen => "Gen at creation", "Creation time" => "creation_time",
parent_id => "Parent", "Object ID" => "id",
top_level => "Top Level", "Subvolume ID" => "id", # btrfs-progs >= 4.1
flags => "Flags", "Generation (Gen)" => "gen",
"Generation" => "gen", # btrfs-progs >= 4.1
"Gen at creation" => "cgen",
"Parent" => "parent_id",
"Parent ID" => "parent_id", # btrfs-progs >= 4.1
"Top Level" => "top_level",
"Top level ID" => "top_level", # btrfs-progs >= 4.1
"Flags" => "flags",
); );
foreach (keys %trans) { foreach (split("\n", $ret)) {
if($ret =~ /^\s+$trans{$_}:\s+(.*)$/m) { next unless /^\s+(.+):\s+(.*)$/;
$detail{$_} = $1; my ($key, $value) = ($1, $2);
if($trans{$key}) {
$detail{$trans{$key}} = $value;
} else { } else {
WARN "Failed to parse subvolume detail \"$trans{$_}\": $ret"; WARN "Failed to parse subvolume detail \"$key: $value\" for: $vol->{PRINT}";
} }
} }
DEBUG "Parsed " . scalar(keys %detail) . " subvolume detail items: $vol->{PRINT}"; DEBUG "Parsed " . scalar(keys %detail) . " subvolume detail items: $vol->{PRINT}";