mirror of
https://github.com/kdave/btrfs-progs
synced 2025-01-15 10:11:34 +00:00
Btrfs-progs: try other mirrors on read failure
If we hit a bad disk and the read doesn't work, try other mirrors in case we have other disks with good copies. Thanks, Signed-off-by: Josef Bacik <josef@redhat.com>
This commit is contained in:
parent
9969ea479d
commit
23bfbf0328
@ -245,9 +245,16 @@ again:
|
||||
|
||||
done = pread(dev_fd, inbuf+count, length, dev_bytenr);
|
||||
if (done < length) {
|
||||
ret = -1;
|
||||
fprintf(stderr, "Short read %d\n", errno);
|
||||
goto out;
|
||||
num_copies = btrfs_num_copies(&root->fs_info->mapping_tree,
|
||||
bytenr, length);
|
||||
mirror_num++;
|
||||
if (mirror_num >= num_copies) {
|
||||
ret = -1;
|
||||
fprintf(stderr, "Exhausted mirrors trying to read\n");
|
||||
goto out;
|
||||
}
|
||||
fprintf(stderr, "Trying another mirror\n");
|
||||
goto again;
|
||||
}
|
||||
|
||||
count += length;
|
||||
|
Loading…
Reference in New Issue
Block a user