diff options
| author | Ingo Molnar <mingo@kernel.org> | 2017-08-25 05:04:51 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2017-08-25 05:04:51 -0400 |
| commit | 10c9850cb2ced2ce528e5b692c639974213a64ec (patch) | |
| tree | f8063beac0ba1dab069d25661845c5b7ef9a67c7 /fs/btrfs/raid56.c | |
| parent | 0c2364791343e4b04cd1f097ff2abc2799062448 (diff) | |
| parent | 90a6cd503982bfd33ce8c70eb49bd2dd33bc6325 (diff) | |
Merge branch 'linus' into locking/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'fs/btrfs/raid56.c')
| -rw-r--r-- | fs/btrfs/raid56.c | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/fs/btrfs/raid56.c b/fs/btrfs/raid56.c index 208638384cd2..2cf6ba40f7c4 100644 --- a/fs/btrfs/raid56.c +++ b/fs/btrfs/raid56.c | |||
| @@ -905,7 +905,7 @@ static void raid_write_end_io(struct bio *bio) | |||
| 905 | if (!atomic_dec_and_test(&rbio->stripes_pending)) | 905 | if (!atomic_dec_and_test(&rbio->stripes_pending)) |
| 906 | return; | 906 | return; |
| 907 | 907 | ||
| 908 | err = 0; | 908 | err = BLK_STS_OK; |
| 909 | 909 | ||
| 910 | /* OK, we have read all the stripes we need to. */ | 910 | /* OK, we have read all the stripes we need to. */ |
| 911 | max_errors = (rbio->operation == BTRFS_RBIO_PARITY_SCRUB) ? | 911 | max_errors = (rbio->operation == BTRFS_RBIO_PARITY_SCRUB) ? |
| @@ -1324,7 +1324,7 @@ write_data: | |||
| 1324 | return; | 1324 | return; |
| 1325 | 1325 | ||
| 1326 | cleanup: | 1326 | cleanup: |
| 1327 | rbio_orig_end_io(rbio, -EIO); | 1327 | rbio_orig_end_io(rbio, BLK_STS_IOERR); |
| 1328 | } | 1328 | } |
| 1329 | 1329 | ||
| 1330 | /* | 1330 | /* |
| @@ -1475,7 +1475,7 @@ static void raid_rmw_end_io(struct bio *bio) | |||
| 1475 | 1475 | ||
| 1476 | cleanup: | 1476 | cleanup: |
| 1477 | 1477 | ||
| 1478 | rbio_orig_end_io(rbio, -EIO); | 1478 | rbio_orig_end_io(rbio, BLK_STS_IOERR); |
| 1479 | } | 1479 | } |
| 1480 | 1480 | ||
| 1481 | static void async_rmw_stripe(struct btrfs_raid_bio *rbio) | 1481 | static void async_rmw_stripe(struct btrfs_raid_bio *rbio) |
| @@ -1579,7 +1579,7 @@ static int raid56_rmw_stripe(struct btrfs_raid_bio *rbio) | |||
| 1579 | return 0; | 1579 | return 0; |
| 1580 | 1580 | ||
| 1581 | cleanup: | 1581 | cleanup: |
| 1582 | rbio_orig_end_io(rbio, -EIO); | 1582 | rbio_orig_end_io(rbio, BLK_STS_IOERR); |
| 1583 | return -EIO; | 1583 | return -EIO; |
| 1584 | 1584 | ||
| 1585 | finish: | 1585 | finish: |
| @@ -1795,12 +1795,12 @@ static void __raid_recover_end_io(struct btrfs_raid_bio *rbio) | |||
| 1795 | void **pointers; | 1795 | void **pointers; |
| 1796 | int faila = -1, failb = -1; | 1796 | int faila = -1, failb = -1; |
| 1797 | struct page *page; | 1797 | struct page *page; |
| 1798 | int err; | 1798 | blk_status_t err; |
| 1799 | int i; | 1799 | int i; |
| 1800 | 1800 | ||
| 1801 | pointers = kcalloc(rbio->real_stripes, sizeof(void *), GFP_NOFS); | 1801 | pointers = kcalloc(rbio->real_stripes, sizeof(void *), GFP_NOFS); |
| 1802 | if (!pointers) { | 1802 | if (!pointers) { |
| 1803 | err = -ENOMEM; | 1803 | err = BLK_STS_RESOURCE; |
| 1804 | goto cleanup_io; | 1804 | goto cleanup_io; |
| 1805 | } | 1805 | } |
| 1806 | 1806 | ||
| @@ -1856,7 +1856,7 @@ static void __raid_recover_end_io(struct btrfs_raid_bio *rbio) | |||
| 1856 | * a bad data or Q stripe. | 1856 | * a bad data or Q stripe. |
| 1857 | * TODO, we should redo the xor here. | 1857 | * TODO, we should redo the xor here. |
| 1858 | */ | 1858 | */ |
| 1859 | err = -EIO; | 1859 | err = BLK_STS_IOERR; |
| 1860 | goto cleanup; | 1860 | goto cleanup; |
| 1861 | } | 1861 | } |
| 1862 | /* | 1862 | /* |
| @@ -1882,7 +1882,7 @@ static void __raid_recover_end_io(struct btrfs_raid_bio *rbio) | |||
| 1882 | if (rbio->bbio->raid_map[failb] == RAID6_Q_STRIPE) { | 1882 | if (rbio->bbio->raid_map[failb] == RAID6_Q_STRIPE) { |
| 1883 | if (rbio->bbio->raid_map[faila] == | 1883 | if (rbio->bbio->raid_map[faila] == |
| 1884 | RAID5_P_STRIPE) { | 1884 | RAID5_P_STRIPE) { |
| 1885 | err = -EIO; | 1885 | err = BLK_STS_IOERR; |
| 1886 | goto cleanup; | 1886 | goto cleanup; |
| 1887 | } | 1887 | } |
| 1888 | /* | 1888 | /* |
| @@ -1954,13 +1954,13 @@ pstripe: | |||
| 1954 | } | 1954 | } |
| 1955 | } | 1955 | } |
| 1956 | 1956 | ||
| 1957 | err = 0; | 1957 | err = BLK_STS_OK; |
| 1958 | cleanup: | 1958 | cleanup: |
| 1959 | kfree(pointers); | 1959 | kfree(pointers); |
| 1960 | 1960 | ||
| 1961 | cleanup_io: | 1961 | cleanup_io: |
| 1962 | if (rbio->operation == BTRFS_RBIO_READ_REBUILD) { | 1962 | if (rbio->operation == BTRFS_RBIO_READ_REBUILD) { |
| 1963 | if (err == 0) | 1963 | if (err == BLK_STS_OK) |
| 1964 | cache_rbio_pages(rbio); | 1964 | cache_rbio_pages(rbio); |
| 1965 | else | 1965 | else |
| 1966 | clear_bit(RBIO_CACHE_READY_BIT, &rbio->flags); | 1966 | clear_bit(RBIO_CACHE_READY_BIT, &rbio->flags); |
| @@ -1968,7 +1968,7 @@ cleanup_io: | |||
| 1968 | rbio_orig_end_io(rbio, err); | 1968 | rbio_orig_end_io(rbio, err); |
| 1969 | } else if (rbio->operation == BTRFS_RBIO_REBUILD_MISSING) { | 1969 | } else if (rbio->operation == BTRFS_RBIO_REBUILD_MISSING) { |
| 1970 | rbio_orig_end_io(rbio, err); | 1970 | rbio_orig_end_io(rbio, err); |
| 1971 | } else if (err == 0) { | 1971 | } else if (err == BLK_STS_OK) { |
| 1972 | rbio->faila = -1; | 1972 | rbio->faila = -1; |
| 1973 | rbio->failb = -1; | 1973 | rbio->failb = -1; |
| 1974 | 1974 | ||
| @@ -2005,7 +2005,7 @@ static void raid_recover_end_io(struct bio *bio) | |||
| 2005 | return; | 2005 | return; |
| 2006 | 2006 | ||
| 2007 | if (atomic_read(&rbio->error) > rbio->bbio->max_errors) | 2007 | if (atomic_read(&rbio->error) > rbio->bbio->max_errors) |
| 2008 | rbio_orig_end_io(rbio, -EIO); | 2008 | rbio_orig_end_io(rbio, BLK_STS_IOERR); |
| 2009 | else | 2009 | else |
| 2010 | __raid_recover_end_io(rbio); | 2010 | __raid_recover_end_io(rbio); |
| 2011 | } | 2011 | } |
| @@ -2104,7 +2104,7 @@ out: | |||
| 2104 | cleanup: | 2104 | cleanup: |
| 2105 | if (rbio->operation == BTRFS_RBIO_READ_REBUILD || | 2105 | if (rbio->operation == BTRFS_RBIO_READ_REBUILD || |
| 2106 | rbio->operation == BTRFS_RBIO_REBUILD_MISSING) | 2106 | rbio->operation == BTRFS_RBIO_REBUILD_MISSING) |
| 2107 | rbio_orig_end_io(rbio, -EIO); | 2107 | rbio_orig_end_io(rbio, BLK_STS_IOERR); |
| 2108 | return -EIO; | 2108 | return -EIO; |
| 2109 | } | 2109 | } |
| 2110 | 2110 | ||
| @@ -2431,7 +2431,7 @@ submit_write: | |||
| 2431 | nr_data = bio_list_size(&bio_list); | 2431 | nr_data = bio_list_size(&bio_list); |
| 2432 | if (!nr_data) { | 2432 | if (!nr_data) { |
| 2433 | /* Every parity is right */ | 2433 | /* Every parity is right */ |
| 2434 | rbio_orig_end_io(rbio, 0); | 2434 | rbio_orig_end_io(rbio, BLK_STS_OK); |
| 2435 | return; | 2435 | return; |
| 2436 | } | 2436 | } |
| 2437 | 2437 | ||
| @@ -2451,7 +2451,7 @@ submit_write: | |||
| 2451 | return; | 2451 | return; |
| 2452 | 2452 | ||
| 2453 | cleanup: | 2453 | cleanup: |
| 2454 | rbio_orig_end_io(rbio, -EIO); | 2454 | rbio_orig_end_io(rbio, BLK_STS_IOERR); |
| 2455 | } | 2455 | } |
| 2456 | 2456 | ||
| 2457 | static inline int is_data_stripe(struct btrfs_raid_bio *rbio, int stripe) | 2457 | static inline int is_data_stripe(struct btrfs_raid_bio *rbio, int stripe) |
| @@ -2519,7 +2519,7 @@ static void validate_rbio_for_parity_scrub(struct btrfs_raid_bio *rbio) | |||
| 2519 | return; | 2519 | return; |
| 2520 | 2520 | ||
| 2521 | cleanup: | 2521 | cleanup: |
| 2522 | rbio_orig_end_io(rbio, -EIO); | 2522 | rbio_orig_end_io(rbio, BLK_STS_IOERR); |
| 2523 | } | 2523 | } |
| 2524 | 2524 | ||
| 2525 | /* | 2525 | /* |
| @@ -2633,7 +2633,7 @@ static void raid56_parity_scrub_stripe(struct btrfs_raid_bio *rbio) | |||
| 2633 | return; | 2633 | return; |
| 2634 | 2634 | ||
| 2635 | cleanup: | 2635 | cleanup: |
| 2636 | rbio_orig_end_io(rbio, -EIO); | 2636 | rbio_orig_end_io(rbio, BLK_STS_IOERR); |
| 2637 | return; | 2637 | return; |
| 2638 | 2638 | ||
| 2639 | finish: | 2639 | finish: |
