btrfs-progs: check btrfs_scan_one_device in btrfs_scan_lblkid()

Even if it's "definitely" btrfs at this point,
btrfs_scan_one_device could fail for other reasons.

Check the return value, warn if it fails, and skip
the device register.

Resolves-Coverity-CID: 1125925
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
reviewed-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
master
Eric Sandeen 2013-11-06 17:15:52 -06:00 committed by Chris Mason
parent 18800f4a31
commit e11712a146
1 changed files with 8 additions and 1 deletions

View File

@ -1960,6 +1960,7 @@ int test_skip_this_disk(char *path)
int btrfs_scan_lblkid(int update_kernel)
{
int fd = -1;
int ret;
u64 num_devices;
struct btrfs_fs_devices *tmp_devices;
blkid_dev_iterate iter = NULL;
@ -1988,8 +1989,14 @@ int btrfs_scan_lblkid(int update_kernel)
printf("ERROR: could not open %s\n", path);
continue;
}
btrfs_scan_one_device(fd, path, &tmp_devices,
ret = btrfs_scan_one_device(fd, path, &tmp_devices,
&num_devices, BTRFS_SUPER_INFO_OFFSET);
if (ret) {
printf("ERROR: could not scan %s\n", path);
close (fd);
continue;
}
close(fd);
if (update_kernel)
btrfs_register_one_device(path);