mirror of
https://github.com/speed47/btrfs-list
synced 2024-09-30 04:43:31 +00:00
chore: update README
This commit is contained in:
parent
93f58739e5
commit
0b566c655f
|
@ -1,6 +1,6 @@
|
||||||
# Overview
|
# Overview
|
||||||
|
|
||||||
Btrfs is a great filesystem, but its userland tools are not very user-frienfly yet.
|
Btrfs is a great filesystem, but its userland tools are not very user-friendly yet.
|
||||||
As a long-time user, I've developed `btrfs-list` as a wrapper to make sense out of the `btrfs sub list` and `btrfs qgroup show` commands.
|
As a long-time user, I've developed `btrfs-list` as a wrapper to make sense out of the `btrfs sub list` and `btrfs qgroup show` commands.
|
||||||
|
|
||||||
You need `btrfs-list` if either:
|
You need `btrfs-list` if either:
|
||||||
|
@ -28,7 +28,8 @@ If no mountpoints are specified, display info for all btrfs filesystems.
|
||||||
|
|
||||||
-h, --help display this message
|
-h, --help display this message
|
||||||
--debug enable debug output
|
--debug enable debug output
|
||||||
-q, --quiet silence the quota disabled & quota rescan warnings
|
-q, --quiet silence quota disabled & quota rescan warnings,
|
||||||
|
repeat to silence all other warnings.
|
||||||
--version display version info
|
--version display version info
|
||||||
--color WHEN colorize the output; WHEN can be 'never',
|
--color WHEN colorize the output; WHEN can be 'never',
|
||||||
'always', or 'auto' (default is:
|
'always', or 'auto' (default is:
|
||||||
|
@ -50,6 +51,7 @@ If no mountpoints are specified, display info for all btrfs filesystems.
|
||||||
--snap-max-excl SIZE hide snapshots whose exclusively allocated extents
|
--snap-max-excl SIZE hide snapshots whose exclusively allocated extents
|
||||||
take up more space than SIZE
|
take up more space than SIZE
|
||||||
-f, --free-space only show free space on the filesystem
|
-f, --free-space only show free space on the filesystem
|
||||||
|
-u, --used display used space instead of free space
|
||||||
|
|
||||||
-p, --profile PROFILE override data profile detection and consider it
|
-p, --profile PROFILE override data profile detection and consider it
|
||||||
as 'dup', 'single', 'raid0', 'raid1',
|
as 'dup', 'single', 'raid0', 'raid1',
|
||||||
|
|
25
btrfs-list
25
btrfs-list
|
@ -51,7 +51,8 @@ If no mountpoints are specified, display info for all btrfs filesystems.
|
||||||
|
|
||||||
-h, --help display this message
|
-h, --help display this message
|
||||||
--debug enable debug output
|
--debug enable debug output
|
||||||
-q, --quiet silence warnings
|
-q, --quiet silence quota disabled & quota rescan warnings,
|
||||||
|
repeat to silence all other warnings.
|
||||||
--version display version info
|
--version display version info
|
||||||
--color WHEN colorize the output; WHEN can be 'never',
|
--color WHEN colorize the output; WHEN can be 'never',
|
||||||
'always', or 'auto' (default is:
|
'always', or 'auto' (default is:
|
||||||
|
@ -110,7 +111,7 @@ GetOptions(
|
||||||
'version' => \my $opt_version,
|
'version' => \my $opt_version,
|
||||||
'ignore-version-check' => \my $opt_ignore_version_check,
|
'ignore-version-check' => \my $opt_ignore_version_check,
|
||||||
'ignore-root-check' => \my $opt_ignore_root_check,
|
'ignore-root-check' => \my $opt_ignore_root_check,
|
||||||
'q|quiet' => \my $opt_quiet,
|
'q|quiet+' => \my $opt_quiet,
|
||||||
's|hide-snap' => \my $opt_hide_snapshots,
|
's|hide-snap' => \my $opt_hide_snapshots,
|
||||||
'S|snap-only' => \my $opt_only_snapshots,
|
'S|snap-only' => \my $opt_only_snapshots,
|
||||||
'f|free-space' => \my $opt_free_space,
|
'f|free-space' => \my $opt_free_space,
|
||||||
|
@ -150,6 +151,13 @@ sub debug {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub warning {
|
||||||
|
my ($level, @lines) = @_;
|
||||||
|
return if ($level <= $opt_quiet);
|
||||||
|
print STDERR "WARNING: $_\n" for @lines;
|
||||||
|
return;
|
||||||
|
} ## end sub warning
|
||||||
|
|
||||||
sub run_cmd {
|
sub run_cmd {
|
||||||
my %params = @_;
|
my %params = @_;
|
||||||
my $cmd = $params{'cmd'};
|
my $cmd = $params{'cmd'};
|
||||||
|
@ -170,13 +178,13 @@ sub run_cmd {
|
||||||
while (<$_stdout>) {
|
while (<$_stdout>) {
|
||||||
chomp;
|
chomp;
|
||||||
debug("stdout: " . $_);
|
debug("stdout: " . $_);
|
||||||
/WARNING:/ and print STDERR $_ . "\n";
|
/WARNING: (.+)/ and warning(2, "btrfs-progs: $1");
|
||||||
push @stdout, $_;
|
push @stdout, $_;
|
||||||
} ## end while (<$_stdout>)
|
} ## end while (<$_stdout>)
|
||||||
while (<$_stderr>) {
|
while (<$_stderr>) {
|
||||||
chomp;
|
chomp;
|
||||||
debug("stderr: " . $_);
|
debug("stderr: " . $_);
|
||||||
/WARNING: (?!RAID56 detected, not implemented)/ and print STDERR $_ . "\n";
|
/WARNING: (RAID56 detected, not implemented)/ and warning(2, "btrfs-progs: $1");
|
||||||
if (!$silent_stderr) {
|
if (!$silent_stderr) {
|
||||||
print join(' ', @$cmd) . ": stderr: " . $_ . "\n";
|
print join(' ', @$cmd) . ": stderr: " . $_ . "\n";
|
||||||
}
|
}
|
||||||
|
@ -690,7 +698,7 @@ foreach my $fuuid (keys %filesystems) {
|
||||||
$profile = $opt_profile if defined $opt_profile;
|
$profile = $opt_profile if defined $opt_profile;
|
||||||
|
|
||||||
if (!$profile) {
|
if (!$profile) {
|
||||||
print STDERR "WARNING: No profile found, assuming single\n";
|
warning(2, "No profile found, assuming single");
|
||||||
$profile = "single";
|
$profile = "single";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -838,7 +846,7 @@ foreach my $fuuid (keys %filesystems) {
|
||||||
|
|
||||||
$cmd = run_cmd(silent_stderr => 1, cmd => [qw{ btrfs quota rescan -s }, $mp]);
|
$cmd = run_cmd(silent_stderr => 1, cmd => [qw{ btrfs quota rescan -s }, $mp]);
|
||||||
if ($cmd->{stdout}->[0] && $cmd->{stdout}->[0] =~ /operation running|current key/) {
|
if ($cmd->{stdout}->[0] && $cmd->{stdout}->[0] =~ /operation running|current key/) {
|
||||||
print STDERR "WARNING: a quota rescan is running, size information is not correct yet\n" if not $opt_quiet;
|
warning(1, "a quota rescan is running, size information is not correct yet");
|
||||||
}
|
}
|
||||||
|
|
||||||
$cmd = run_cmd(silent_stderr => 1, cmd => [qw{ btrfs qgroup show -pcre --raw }, $mp]);
|
$cmd = run_cmd(silent_stderr => 1, cmd => [qw{ btrfs qgroup show -pcre --raw }, $mp]);
|
||||||
|
@ -847,8 +855,7 @@ foreach my $fuuid (keys %filesystems) {
|
||||||
# btrfs-progs v3.18 doesn't support --raw
|
# btrfs-progs v3.18 doesn't support --raw
|
||||||
$cmd = run_cmd(silent_stderr => 1, cmd => [qw{ btrfs qgroup show -pcre }, $mp]);
|
$cmd = run_cmd(silent_stderr => 1, cmd => [qw{ btrfs qgroup show -pcre }, $mp]);
|
||||||
if ($cmd->{status} || !@{$cmd->{stdout}}) {
|
if ($cmd->{status} || !@{$cmd->{stdout}}) {
|
||||||
print STDERR "WARNING: to get refer/excl size information, please enable qgroups (btrfs quota enable $mp)\n"
|
warning(1, "to get refer/excl size information, please enable qgroups (btrfs quota enable $mp)");
|
||||||
if not $opt_quiet;
|
|
||||||
$vol{$fuuid}{df}{noquota} = 1;
|
$vol{$fuuid}{df}{noquota} = 1;
|
||||||
}
|
}
|
||||||
} ## end if ($cmd->{status} || ...)
|
} ## end if ($cmd->{status} || ...)
|
||||||
|
@ -1009,7 +1016,7 @@ foreach my $fuuid (sort keys %filesystems) {
|
||||||
# do we still have unseen volumes? (we shouldn't)
|
# do we still have unseen volumes? (we shouldn't)
|
||||||
foreach my $vuuid (keys %{$vol{$fuuid}}) {
|
foreach my $vuuid (keys %{$vol{$fuuid}}) {
|
||||||
next if $seen{$vuuid};
|
next if $seen{$vuuid};
|
||||||
print STDERR "WARN: we shouldn't have orphaned volumne $vuuid\n";
|
warning(2, "we shouldn't have orphaned volumne $vuuid");
|
||||||
push @ordered, $vuuid;
|
push @ordered, $vuuid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue