mirror of
https://github.com/speed47/btrfs-list
synced 2024-09-30 04:43:31 +00:00
Compare commits
3 commits
4564559c85
...
0264500d22
Author | SHA1 | Date | |
---|---|---|---|
0264500d22 | |||
99a6cfdfd1 | |||
f379aeb42f |
46
btrfs-list
46
btrfs-list
|
@ -213,7 +213,7 @@ sub link2real {
|
|||
sub pretty_print {
|
||||
my ($raw, $mode) = @_;
|
||||
|
||||
=cut
|
||||
=comment
|
||||
debug("pretty_print(@_);");
|
||||
my @c = caller(0);
|
||||
debug(Dumper(\@c));
|
||||
|
@ -285,20 +285,20 @@ sub compute_allocatable_for_profile {
|
|||
|
||||
if ($profile eq 'raid1') {
|
||||
last if ($devBytes{$sk[1]} <= $sliceSize); # out of space
|
||||
$unallocFree += $sliceSize;
|
||||
$unallocFree += $sliceSize;
|
||||
$devBytes{$sk[0]} -= $sliceSize;
|
||||
$devBytes{$sk[1]} -= $sliceSize;
|
||||
} ## end if ($profile eq 'raid1')
|
||||
elsif ($profile eq 'raid1c3') {
|
||||
last if ($devBytes{$sk[2]} <= $sliceSize); # out of space
|
||||
$unallocFree += $sliceSize;
|
||||
$unallocFree += $sliceSize;
|
||||
$devBytes{$sk[0]} -= $sliceSize;
|
||||
$devBytes{$sk[1]} -= $sliceSize;
|
||||
$devBytes{$sk[2]} -= $sliceSize;
|
||||
} ## end elsif ($profile eq 'raid1c3')
|
||||
elsif ($profile eq 'raid1c4') {
|
||||
last if ($devBytes{$sk[3]} <= $sliceSize); # out of space
|
||||
$unallocFree += $sliceSize;
|
||||
$unallocFree += $sliceSize;
|
||||
$devBytes{$sk[0]} -= $sliceSize;
|
||||
$devBytes{$sk[1]} -= $sliceSize;
|
||||
$devBytes{$sk[2]} -= $sliceSize;
|
||||
|
@ -306,7 +306,7 @@ sub compute_allocatable_for_profile {
|
|||
} ## end elsif ($profile eq 'raid1c4')
|
||||
elsif ($profile eq 'raid10') {
|
||||
last if ($devBytes{$sk[3]} <= $sliceSize); # out of space
|
||||
$unallocFree += $sliceSize * 2;
|
||||
$unallocFree += $sliceSize * 2;
|
||||
$devBytes{$sk[0]} -= $sliceSize;
|
||||
$devBytes{$sk[1]} -= $sliceSize;
|
||||
$devBytes{$sk[2]} -= $sliceSize;
|
||||
|
@ -394,7 +394,7 @@ if (defined $opt_snap_max_used) {
|
|||
if ($opt_color eq 'never' || ($opt_color eq 'auto' && !-t 1)) { ## no critic(InputOutput::ProhibitInteractiveTest)
|
||||
$ENV{'ANSI_COLORS_DISABLED'} = 1;
|
||||
}
|
||||
if (!$opt_wide && !-t 1) { ## no critic(InputOutput::ProhibitInteractiveTest)
|
||||
if (!$opt_wide && !-t 1) { ## no critic(InputOutput::ProhibitInteractiveTest)
|
||||
|
||||
# wide if STDOUT is NOT a term
|
||||
$opt_wide = 1;
|
||||
|
@ -413,7 +413,7 @@ if ($opt_max_name_len > 0 && $opt_max_name_len < 4) {
|
|||
$opt_max_name_len = 4;
|
||||
}
|
||||
|
||||
$opt_indent //= 4;
|
||||
$opt_indent //= 3;
|
||||
|
||||
if (defined $opt_profile && $opt_profile !~ /^(raid([0156]|1c[34]|10)|single|dup)$/) {
|
||||
print STDERR "FATAL: invalid argument for --profile\n";
|
||||
|
@ -505,7 +505,7 @@ foreach my $mp (@mountPoints) {
|
|||
|
||||
# get filesystems list
|
||||
|
||||
=cut
|
||||
=comment
|
||||
# btrfs filesystem show
|
||||
Label: 'beurre' uuid: 010705d8-430f-4f5b-9315-12df40677e97
|
||||
Total devices 4 FS bytes used 18.23MiB
|
||||
|
@ -607,14 +607,14 @@ my %vol;
|
|||
foreach my $fuuid (keys %filesystems) {
|
||||
my $mp = $filesystems{$fuuid}{'mountpoint'};
|
||||
defined $mp or next;
|
||||
-d $mp or next;
|
||||
-d $mp or next;
|
||||
|
||||
$cmd = run_cmd(silent_stderr => 1, cmd => [qw{ btrfs filesystem usage --raw }, $mp]);
|
||||
if (!@{$cmd->{stdout}} || $cmd->{status}) {
|
||||
$cmd = run_cmd(fatal => 1, cmd => [qw{ btrfs filesystem usage }, $mp]);
|
||||
}
|
||||
my ($seenUnallocated, %devFree, $profile, $mprofile);
|
||||
my ($total, $fssize, $used, $freeEstimated) = (0, 0, 0, 0);
|
||||
my ($total, $fssize, $used, $freeEstimated) = (0, 0, 0, 0);
|
||||
foreach (@{$cmd->{stdout}}) {
|
||||
if (/Device\s+size:\s*(\S+)/) {
|
||||
$fssize = human2raw($1);
|
||||
|
@ -718,8 +718,8 @@ foreach my $fuuid (keys %filesystems) {
|
|||
next;
|
||||
}
|
||||
|
||||
# ID 257 gen 17 cgen 11 parent 5 top level 5 parent_uuid - received_uuid - uuid 9bc4..fd75 path sub1
|
||||
$vol{$fuuid}{$vuuid}{puuid} = PARENT_UUID_NONE; # old btrfsprogs don't have puuid, set a sane default
|
||||
# ID 257 gen 17 cgen 11 parent 5 top level 5 parent_uuid - received_uuid - uuid 9bc4..fd75 path sub1 with spaces
|
||||
$vol{$fuuid}{$vuuid}{puuid} = PARENT_UUID_NONE; # old btrfsprogs don't have puuid, set a sane default
|
||||
/(\s|^)ID (\d+)/ and $vol{$fuuid}{$vuuid}{id} = $2;
|
||||
/(\s|^)gen (\d+)/ and $vol{$fuuid}{$vuuid}{gen} = $2;
|
||||
/(\s|^)cgen (\d+)/ and $vol{$fuuid}{$vuuid}{cgen} = $2;
|
||||
|
@ -727,24 +727,24 @@ foreach my $fuuid (keys %filesystems) {
|
|||
/(\s|^)top level (\d+)/ and $vol{$fuuid}{$vuuid}{top} = $2;
|
||||
/(\s|^)parent_uuid (\S+)/ and $vol{$fuuid}{$vuuid}{puuid} = $2;
|
||||
/(\s|^)received_uuid (\S+)/ and $vol{$fuuid}{$vuuid}{ruuid} = $2;
|
||||
/(\s|^)path (\S+)/ and $vol{$fuuid}{$vuuid}{path} = $2;
|
||||
/(\s|^)path (.+)/ and $vol{$fuuid}{$vuuid}{path} = $2;
|
||||
$vol{$fuuid}{$vuuid}{path} =~ s/^<FS_TREE>\///;
|
||||
$vol{$fuuid}{$vuuid}{type} = 'subvol'; # by default, will be overriden below if applicable
|
||||
$vol{$fuuid}{$vuuid}{mode} = 'rw'; # by default, will be overriden below if applicable
|
||||
$vol{$fuuid}{$vuuid}{type} = 'subvol'; # by default, will be overriden below if applicable
|
||||
$vol{$fuuid}{$vuuid}{mode} = 'rw'; # by default, will be overriden below if applicable
|
||||
$vol{$fuuid}{$vuuid}{rfer} = 0;
|
||||
$vol{$fuuid}{$vuuid}{excl} = 0;
|
||||
$vol{$fuuid}{$vuuid}{mp} = $filesystems{$fuuid}{volmp}{$vol{$fuuid}{$vuuid}{id}};
|
||||
$vol{$fuuid}{$vuuid}{mp} = $filesystems{$fuuid}{volmp}{$vol{$fuuid}{$vuuid}{id}};
|
||||
} ## end foreach (@{$cmd->{stdout}})
|
||||
|
||||
# now, list only snapshots, we also get their otime for free
|
||||
$cmd = run_cmd(cmd => [qw{ btrfs subvolume list -us }, $mp]);
|
||||
|
||||
# ID 694 gen 30002591 cgen 30002589 top level 5 otime 2022-01-02 14:37:14 path test-backup2
|
||||
# ID 694 gen 30002591 cgen 30002589 top level 5 otime 2022-01-02 14:37:14 path test backup2 with spaces
|
||||
foreach (@{$cmd->{stdout}}) {
|
||||
my ($found, $otime);
|
||||
/(\s|^)uuid ([0-9a-f-]+)/ and exists $vol{$fuuid}{$2} and $found = $2;
|
||||
/(\s|^)ID ([0-9]+)/ and exists $vol{$fuuid}{$2} and $found = $2;
|
||||
/(\s|^)otime (\S+ \S+)/ and $otime = $2;
|
||||
/(\s|^)otime (\S+ \S+)/ and $otime = $2;
|
||||
if (defined $found) {
|
||||
if ($opt_hide_snapshots) {
|
||||
delete $vol{$fuuid}{$found};
|
||||
|
@ -769,7 +769,7 @@ foreach my $fuuid (keys %filesystems) {
|
|||
|
||||
# v3.18 (no --raw)
|
||||
|
||||
=cut
|
||||
=comment
|
||||
WARNING: Qgroup data inconsistent, rescan recommended
|
||||
qgroupid rfer excl max_rfer max_excl parent child
|
||||
-------- ---- ---- -------- -------- ------ -----
|
||||
|
@ -779,7 +779,7 @@ qgroupid rfer excl max_rfer max_excl parent child
|
|||
|
||||
# v3.19+ has --raw, and additionally, since v4.1, we get 'none' instead of 0:
|
||||
|
||||
=cut
|
||||
=comment
|
||||
qgroupid rfer excl max_rfer max_excl parent child
|
||||
-------- ---- ---- -------- -------- ------ -----
|
||||
0/5 9848498 8015121 none none --- ---
|
||||
|
@ -789,7 +789,7 @@ qgroupid rfer excl max_rfer max_excl parent child
|
|||
foreach my $fuuid (keys %filesystems) {
|
||||
my $mp = $filesystems{$fuuid}{'mountpoint'};
|
||||
defined $mp or next;
|
||||
-d $mp or next;
|
||||
-d $mp or next;
|
||||
next if $opt_free_space;
|
||||
|
||||
$cmd = run_cmd(silent_stderr => 1, cmd => [qw{ btrfs quota rescan -s }, $mp]);
|
||||
|
@ -931,7 +931,7 @@ foreach my $fuuid (sort keys %filesystems) {
|
|||
foreach my $orphan (sort @orphans) {
|
||||
my $no_known_parent = 1;
|
||||
foreach my $potential_parent (@orphans) {
|
||||
next if $orphan eq $potential_parent; # skip myself
|
||||
next if $orphan eq $potential_parent; # skip myself
|
||||
$no_known_parent = 0 if ($potential_parent eq $vol{$fuuid}{$orphan}{puuid});
|
||||
}
|
||||
debug(">>> orphan loop on $orphan, no known parent: $no_known_parent");
|
||||
|
@ -1002,7 +1002,7 @@ sub longest {
|
|||
|
||||
# loop through all the items
|
||||
foreach my $item (@orderedAll) {
|
||||
my $len = ($useDepth ? (($item->{depth} || 0) * 3) : 0);
|
||||
my $len = ($useDepth ? (($item->{depth} || 0) * $opt_indent) : 0);
|
||||
$len += length($item->{$key} || '');
|
||||
$longest = $len if $len > $longest;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue