diff options
author | David Sterba <dsterba@suse.cz> | 2014-04-29 17:57:01 +0200 |
---|---|---|
committer | David Sterba <dsterba@suse.cz> | 2014-08-28 02:03:33 +0200 |
commit | da5db5596ca3dcdbc6edf3e79534c36610bf6fbb (patch) | |
tree | 5f9944db07c24c588c97b358a72188a2a1e58c51 | |
parent | 5f1313a45d5ed89e7bb7efab3bb7b62a42b7b30f (diff) | |
download | btrfs-progs-da5db5596ca3dcdbc6edf3e79534c36610bf6fbb.tar.gz |
btrfs-progs: read global reserve size from space infos
Kernels >= 3.15 export the global block reserve as a space info presented
by 'btrfs fi df' but would display 'unknown' instead of some meaningful
string.
Signed-off-by: David Sterba <dsterba@suse.cz>
-rw-r--r-- | cmds-filesystem.c | 7 | ||||
-rw-r--r-- | ctree.h | 6 |
2 files changed, 12 insertions, 1 deletions
diff --git a/cmds-filesystem.c b/cmds-filesystem.c index 7e8ca95..0301442 100644 --- a/cmds-filesystem.c +++ b/cmds-filesystem.c @@ -120,7 +120,10 @@ static const char * const cmd_df_usage[] = { static char *group_type_str(u64 flag) { - switch (flag & BTRFS_BLOCK_GROUP_TYPE_MASK) { + u64 mask = BTRFS_BLOCK_GROUP_TYPE_MASK | + BTRFS_SPACE_INFO_GLOBAL_RSV; + + switch (flag & mask) { case BTRFS_BLOCK_GROUP_DATA: return "Data"; case BTRFS_BLOCK_GROUP_SYSTEM: @@ -129,6 +132,8 @@ static char *group_type_str(u64 flag) return "Metadata"; case BTRFS_BLOCK_GROUP_DATA|BTRFS_BLOCK_GROUP_METADATA: return "Data+Metadata"; + case BTRFS_SPACE_INFO_GLOBAL_RSV: + return "GlobalReserve"; default: return "unknown"; } @@ -860,6 +860,12 @@ struct btrfs_csum_item { /* used in struct btrfs_balance_args fields */ #define BTRFS_AVAIL_ALLOC_BIT_SINGLE (1ULL << 48) +/* + * GLOBAL_RSV does not exist as a on-disk block group type and is used + * internally for exporting info about global block reserve from space infos + */ +#define BTRFS_SPACE_INFO_GLOBAL_RSV (1ULL << 49) + #define BTRFS_QGROUP_STATUS_OFF 0 #define BTRFS_QGROUP_STATUS_ON 1 #define BTRFS_QGROUP_STATUS_SCANNING 2 |