diff --git a/cmds-device.c b/cmds-device.c index fff05e4c..a8f10f6d 100644 --- a/cmds-device.c +++ b/cmds-device.c @@ -254,7 +254,7 @@ static int cmd_device_scan(int argc, char **argv) ret = btrfs_scan_lblkid(); error_on(ret, "error %d while scanning", ret); ret = btrfs_register_all_devices(); - error_on(ret, "error %d while registering devices", ret); + error_on(ret, "there are %d errors while registering devices", ret); goto out; } diff --git a/utils.c b/utils.c index 7d5537fc..d7ceaa8c 100644 --- a/utils.c +++ b/utils.c @@ -1545,7 +1545,8 @@ int btrfs_register_one_device(const char *fname) */ int btrfs_register_all_devices(void) { - int err; + int err = 0; + int ret = 0; struct btrfs_fs_devices *fs_devices; struct btrfs_device *device; struct list_head *all_uuids; @@ -1554,16 +1555,15 @@ int btrfs_register_all_devices(void) list_for_each_entry(fs_devices, all_uuids, list) { list_for_each_entry(device, &fs_devices->devices, dev_list) { - if (*device->name) { + if (*device->name) err = btrfs_register_one_device(device->name); - if (err < 0) - return err; - if (err > 0) - return -err; - } + + if (err) + ret++; } } - return 0; + + return ret; } int btrfs_device_already_in_root(struct btrfs_root *root, int fd,