mirror of
https://github.com/kdave/btrfs-progs
synced 2025-04-27 21:47:56 +00:00
btrfs-progs: mkfs: output device list in sorted order
list_for_each_entry_reverse() in current code can not output devices in sorted order, because the sequence are broken in btrfs_alloc_chunk(). We can use list_sort() instead. Before patch: # mkfs.btrfs -f /dev/vdd /dev/vde /dev/vdf ... Number of devices: 3 Devices: ID SIZE PATH 3 2.60GiB /dev/vdf 1 2.60GiB /dev/vdd 2 2.60GiB /dev/vde After patch: # mkfs.btrfs -f /dev/vdd /dev/vde /dev/vdf ... Number of devices: 3 Devices: ID SIZE PATH 1 2.60GiB /dev/vdd 2 2.60GiB /dev/vde 3 2.60GiB /dev/vdf Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
c5cb2432bf
commit
568a3743f5
12
mkfs.c
12
mkfs.c
@ -42,6 +42,7 @@
|
|||||||
#include "volumes.h"
|
#include "volumes.h"
|
||||||
#include "transaction.h"
|
#include "transaction.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
#include "list_sort.h"
|
||||||
|
|
||||||
static u64 index_cnt = 2;
|
static u64 index_cnt = 2;
|
||||||
static int verbose = 1;
|
static int verbose = 1;
|
||||||
@ -1146,6 +1147,13 @@ static int is_ssd(const char *file)
|
|||||||
return !atoi((const char *)&rotational);
|
return !atoi((const char *)&rotational);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int _cmp_device_by_id(void *priv, struct list_head *a,
|
||||||
|
struct list_head *b)
|
||||||
|
{
|
||||||
|
return list_entry(a, struct btrfs_device, dev_list)->devid -
|
||||||
|
list_entry(b, struct btrfs_device, dev_list)->devid;
|
||||||
|
}
|
||||||
|
|
||||||
static void list_all_devices(struct btrfs_root *root)
|
static void list_all_devices(struct btrfs_root *root)
|
||||||
{
|
{
|
||||||
struct btrfs_fs_devices *fs_devices;
|
struct btrfs_fs_devices *fs_devices;
|
||||||
@ -1158,12 +1166,14 @@ static void list_all_devices(struct btrfs_root *root)
|
|||||||
list_for_each_entry(device, &fs_devices->devices, dev_list)
|
list_for_each_entry(device, &fs_devices->devices, dev_list)
|
||||||
number_of_devices++;
|
number_of_devices++;
|
||||||
|
|
||||||
|
list_sort(NULL, &fs_devices->devices, _cmp_device_by_id);
|
||||||
|
|
||||||
printf("Number of devices: %d\n", number_of_devices);
|
printf("Number of devices: %d\n", number_of_devices);
|
||||||
/* printf("Total devices size: %10s\n", */
|
/* printf("Total devices size: %10s\n", */
|
||||||
/* pretty_size(total_block_count)); */
|
/* pretty_size(total_block_count)); */
|
||||||
printf("Devices:\n");
|
printf("Devices:\n");
|
||||||
printf(" ID SIZE PATH\n");
|
printf(" ID SIZE PATH\n");
|
||||||
list_for_each_entry_reverse(device, &fs_devices->devices, dev_list) {
|
list_for_each_entry(device, &fs_devices->devices, dev_list) {
|
||||||
char dev_uuid[BTRFS_UUID_UNPARSED_SIZE];
|
char dev_uuid[BTRFS_UUID_UNPARSED_SIZE];
|
||||||
|
|
||||||
uuid_unparse(device->uuid, dev_uuid);
|
uuid_unparse(device->uuid, dev_uuid);
|
||||||
|
Loading…
Reference in New Issue
Block a user