diff options
Diffstat (limited to 'fs/btrfs/extent_io.c')
-rw-r--r-- | fs/btrfs/extent_io.c | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c index 856bc2b2192c..014beaa9458c 100644 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c | |||
@@ -1952,11 +1952,6 @@ static int free_io_failure(struct inode *inode, struct io_failure_record *rec, | |||
1952 | return err; | 1952 | return err; |
1953 | } | 1953 | } |
1954 | 1954 | ||
1955 | static void repair_io_failure_callback(struct bio *bio, int err) | ||
1956 | { | ||
1957 | complete(bio->bi_private); | ||
1958 | } | ||
1959 | |||
1960 | /* | 1955 | /* |
1961 | * this bypasses the standard btrfs submit functions deliberately, as | 1956 | * this bypasses the standard btrfs submit functions deliberately, as |
1962 | * the standard behavior is to write all copies in a raid setup. here we only | 1957 | * the standard behavior is to write all copies in a raid setup. here we only |
@@ -1973,7 +1968,6 @@ int repair_io_failure(struct btrfs_fs_info *fs_info, u64 start, | |||
1973 | { | 1968 | { |
1974 | struct bio *bio; | 1969 | struct bio *bio; |
1975 | struct btrfs_device *dev; | 1970 | struct btrfs_device *dev; |
1976 | DECLARE_COMPLETION_ONSTACK(compl); | ||
1977 | u64 map_length = 0; | 1971 | u64 map_length = 0; |
1978 | u64 sector; | 1972 | u64 sector; |
1979 | struct btrfs_bio *bbio = NULL; | 1973 | struct btrfs_bio *bbio = NULL; |
@@ -1989,8 +1983,6 @@ int repair_io_failure(struct btrfs_fs_info *fs_info, u64 start, | |||
1989 | bio = btrfs_io_bio_alloc(GFP_NOFS, 1); | 1983 | bio = btrfs_io_bio_alloc(GFP_NOFS, 1); |
1990 | if (!bio) | 1984 | if (!bio) |
1991 | return -EIO; | 1985 | return -EIO; |
1992 | bio->bi_private = &compl; | ||
1993 | bio->bi_end_io = repair_io_failure_callback; | ||
1994 | bio->bi_size = 0; | 1986 | bio->bi_size = 0; |
1995 | map_length = length; | 1987 | map_length = length; |
1996 | 1988 | ||
@@ -2011,10 +2003,8 @@ int repair_io_failure(struct btrfs_fs_info *fs_info, u64 start, | |||
2011 | } | 2003 | } |
2012 | bio->bi_bdev = dev->bdev; | 2004 | bio->bi_bdev = dev->bdev; |
2013 | bio_add_page(bio, page, length, start - page_offset(page)); | 2005 | bio_add_page(bio, page, length, start - page_offset(page)); |
2014 | btrfsic_submit_bio(WRITE_SYNC, bio); | ||
2015 | wait_for_completion(&compl); | ||
2016 | 2006 | ||
2017 | if (!test_bit(BIO_UPTODATE, &bio->bi_flags)) { | 2007 | if (btrfsic_submit_bio_wait(WRITE_SYNC, bio)) { |
2018 | /* try to remap that extent elsewhere? */ | 2008 | /* try to remap that extent elsewhere? */ |
2019 | bio_put(bio); | 2009 | bio_put(bio); |
2020 | btrfs_dev_stat_inc_and_print(dev, BTRFS_DEV_STAT_WRITE_ERRS); | 2010 | btrfs_dev_stat_inc_and_print(dev, BTRFS_DEV_STAT_WRITE_ERRS); |