diff options
Diffstat (limited to 'drivers/md')
-rw-r--r-- | drivers/md/dm-target.c | 3 | ||||
-rw-r--r-- | drivers/md/raid1.c | 6 | ||||
-rw-r--r-- | drivers/md/raid10.c | 6 | ||||
-rw-r--r-- | drivers/md/raid5.c | 34 | ||||
-rw-r--r-- | drivers/md/raid6main.c | 29 |
5 files changed, 27 insertions, 51 deletions
diff --git a/drivers/md/dm-target.c b/drivers/md/dm-target.c index aecd9e0c2616..64fd8e79ea4c 100644 --- a/drivers/md/dm-target.c +++ b/drivers/md/dm-target.c | |||
@@ -78,8 +78,7 @@ void dm_put_target_type(struct target_type *t) | |||
78 | if (--ti->use == 0) | 78 | if (--ti->use == 0) |
79 | module_put(ti->tt.module); | 79 | module_put(ti->tt.module); |
80 | 80 | ||
81 | if (ti->use < 0) | 81 | BUG_ON(ti->use < 0); |
82 | BUG(); | ||
83 | up_read(&_lock); | 82 | up_read(&_lock); |
84 | 83 | ||
85 | return; | 84 | return; |
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index 9b374c91db66..6081941de1b3 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c | |||
@@ -1558,8 +1558,7 @@ static int init_resync(conf_t *conf) | |||
1558 | int buffs; | 1558 | int buffs; |
1559 | 1559 | ||
1560 | buffs = RESYNC_WINDOW / RESYNC_BLOCK_SIZE; | 1560 | buffs = RESYNC_WINDOW / RESYNC_BLOCK_SIZE; |
1561 | if (conf->r1buf_pool) | 1561 | BUG_ON(conf->r1buf_pool); |
1562 | BUG(); | ||
1563 | conf->r1buf_pool = mempool_create(buffs, r1buf_pool_alloc, r1buf_pool_free, | 1562 | conf->r1buf_pool = mempool_create(buffs, r1buf_pool_alloc, r1buf_pool_free, |
1564 | conf->poolinfo); | 1563 | conf->poolinfo); |
1565 | if (!conf->r1buf_pool) | 1564 | if (!conf->r1buf_pool) |
@@ -1732,8 +1731,7 @@ static sector_t sync_request(mddev_t *mddev, sector_t sector_nr, int *skipped, i | |||
1732 | !conf->fullsync && | 1731 | !conf->fullsync && |
1733 | !test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) | 1732 | !test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) |
1734 | break; | 1733 | break; |
1735 | if (sync_blocks < (PAGE_SIZE>>9)) | 1734 | BUG_ON(sync_blocks < (PAGE_SIZE>>9)); |
1736 | BUG(); | ||
1737 | if (len > (sync_blocks<<9)) | 1735 | if (len > (sync_blocks<<9)) |
1738 | len = sync_blocks<<9; | 1736 | len = sync_blocks<<9; |
1739 | } | 1737 | } |
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index ab90a6d12020..617012bc107a 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c | |||
@@ -1117,8 +1117,7 @@ static int end_sync_read(struct bio *bio, unsigned int bytes_done, int error) | |||
1117 | for (i=0; i<conf->copies; i++) | 1117 | for (i=0; i<conf->copies; i++) |
1118 | if (r10_bio->devs[i].bio == bio) | 1118 | if (r10_bio->devs[i].bio == bio) |
1119 | break; | 1119 | break; |
1120 | if (i == conf->copies) | 1120 | BUG_ON(i == conf->copies); |
1121 | BUG(); | ||
1122 | update_head_pos(i, r10_bio); | 1121 | update_head_pos(i, r10_bio); |
1123 | d = r10_bio->devs[i].devnum; | 1122 | d = r10_bio->devs[i].devnum; |
1124 | 1123 | ||
@@ -1518,8 +1517,7 @@ static int init_resync(conf_t *conf) | |||
1518 | int buffs; | 1517 | int buffs; |
1519 | 1518 | ||
1520 | buffs = RESYNC_WINDOW / RESYNC_BLOCK_SIZE; | 1519 | buffs = RESYNC_WINDOW / RESYNC_BLOCK_SIZE; |
1521 | if (conf->r10buf_pool) | 1520 | BUG_ON(conf->r10buf_pool); |
1522 | BUG(); | ||
1523 | conf->r10buf_pool = mempool_create(buffs, r10buf_pool_alloc, r10buf_pool_free, conf); | 1521 | conf->r10buf_pool = mempool_create(buffs, r10buf_pool_alloc, r10buf_pool_free, conf); |
1524 | if (!conf->r10buf_pool) | 1522 | if (!conf->r10buf_pool) |
1525 | return -ENOMEM; | 1523 | return -ENOMEM; |
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index dae740adaf65..31843604049c 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c | |||
@@ -73,10 +73,8 @@ static void print_raid5_conf (raid5_conf_t *conf); | |||
73 | static void __release_stripe(raid5_conf_t *conf, struct stripe_head *sh) | 73 | static void __release_stripe(raid5_conf_t *conf, struct stripe_head *sh) |
74 | { | 74 | { |
75 | if (atomic_dec_and_test(&sh->count)) { | 75 | if (atomic_dec_and_test(&sh->count)) { |
76 | if (!list_empty(&sh->lru)) | 76 | BUG_ON(!list_empty(&sh->lru)); |
77 | BUG(); | 77 | BUG_ON(atomic_read(&conf->active_stripes)==0); |
78 | if (atomic_read(&conf->active_stripes)==0) | ||
79 | BUG(); | ||
80 | if (test_bit(STRIPE_HANDLE, &sh->state)) { | 78 | if (test_bit(STRIPE_HANDLE, &sh->state)) { |
81 | if (test_bit(STRIPE_DELAYED, &sh->state)) | 79 | if (test_bit(STRIPE_DELAYED, &sh->state)) |
82 | list_add_tail(&sh->lru, &conf->delayed_list); | 80 | list_add_tail(&sh->lru, &conf->delayed_list); |
@@ -184,10 +182,8 @@ static void init_stripe(struct stripe_head *sh, sector_t sector, int pd_idx, int | |||
184 | raid5_conf_t *conf = sh->raid_conf; | 182 | raid5_conf_t *conf = sh->raid_conf; |
185 | int i; | 183 | int i; |
186 | 184 | ||
187 | if (atomic_read(&sh->count) != 0) | 185 | BUG_ON(atomic_read(&sh->count) != 0); |
188 | BUG(); | 186 | BUG_ON(test_bit(STRIPE_HANDLE, &sh->state)); |
189 | if (test_bit(STRIPE_HANDLE, &sh->state)) | ||
190 | BUG(); | ||
191 | 187 | ||
192 | CHECK_DEVLOCK(); | 188 | CHECK_DEVLOCK(); |
193 | PRINTK("init_stripe called, stripe %llu\n", | 189 | PRINTK("init_stripe called, stripe %llu\n", |
@@ -269,8 +265,7 @@ static struct stripe_head *get_active_stripe(raid5_conf_t *conf, sector_t sector | |||
269 | init_stripe(sh, sector, pd_idx, disks); | 265 | init_stripe(sh, sector, pd_idx, disks); |
270 | } else { | 266 | } else { |
271 | if (atomic_read(&sh->count)) { | 267 | if (atomic_read(&sh->count)) { |
272 | if (!list_empty(&sh->lru)) | 268 | BUG_ON(!list_empty(&sh->lru)); |
273 | BUG(); | ||
274 | } else { | 269 | } else { |
275 | if (!test_bit(STRIPE_HANDLE, &sh->state)) | 270 | if (!test_bit(STRIPE_HANDLE, &sh->state)) |
276 | atomic_inc(&conf->active_stripes); | 271 | atomic_inc(&conf->active_stripes); |
@@ -465,8 +460,7 @@ static int drop_one_stripe(raid5_conf_t *conf) | |||
465 | spin_unlock_irq(&conf->device_lock); | 460 | spin_unlock_irq(&conf->device_lock); |
466 | if (!sh) | 461 | if (!sh) |
467 | return 0; | 462 | return 0; |
468 | if (atomic_read(&sh->count)) | 463 | BUG_ON(atomic_read(&sh->count)); |
469 | BUG(); | ||
470 | shrink_buffers(sh, conf->pool_size); | 464 | shrink_buffers(sh, conf->pool_size); |
471 | kmem_cache_free(conf->slab_cache, sh); | 465 | kmem_cache_free(conf->slab_cache, sh); |
472 | atomic_dec(&conf->active_stripes); | 466 | atomic_dec(&conf->active_stripes); |
@@ -882,8 +876,7 @@ static void compute_parity(struct stripe_head *sh, int method) | |||
882 | ptr[0] = page_address(sh->dev[pd_idx].page); | 876 | ptr[0] = page_address(sh->dev[pd_idx].page); |
883 | switch(method) { | 877 | switch(method) { |
884 | case READ_MODIFY_WRITE: | 878 | case READ_MODIFY_WRITE: |
885 | if (!test_bit(R5_UPTODATE, &sh->dev[pd_idx].flags)) | 879 | BUG_ON(!test_bit(R5_UPTODATE, &sh->dev[pd_idx].flags)); |
886 | BUG(); | ||
887 | for (i=disks ; i-- ;) { | 880 | for (i=disks ; i-- ;) { |
888 | if (i==pd_idx) | 881 | if (i==pd_idx) |
889 | continue; | 882 | continue; |
@@ -896,7 +889,7 @@ static void compute_parity(struct stripe_head *sh, int method) | |||
896 | if (test_and_clear_bit(R5_Overlap, &sh->dev[i].flags)) | 889 | if (test_and_clear_bit(R5_Overlap, &sh->dev[i].flags)) |
897 | wake_up(&conf->wait_for_overlap); | 890 | wake_up(&conf->wait_for_overlap); |
898 | 891 | ||
899 | if (sh->dev[i].written) BUG(); | 892 | BUG_ON(sh->dev[i].written); |
900 | sh->dev[i].written = chosen; | 893 | sh->dev[i].written = chosen; |
901 | check_xor(); | 894 | check_xor(); |
902 | } | 895 | } |
@@ -912,7 +905,7 @@ static void compute_parity(struct stripe_head *sh, int method) | |||
912 | if (test_and_clear_bit(R5_Overlap, &sh->dev[i].flags)) | 905 | if (test_and_clear_bit(R5_Overlap, &sh->dev[i].flags)) |
913 | wake_up(&conf->wait_for_overlap); | 906 | wake_up(&conf->wait_for_overlap); |
914 | 907 | ||
915 | if (sh->dev[i].written) BUG(); | 908 | BUG_ON(sh->dev[i].written); |
916 | sh->dev[i].written = chosen; | 909 | sh->dev[i].written = chosen; |
917 | } | 910 | } |
918 | break; | 911 | break; |
@@ -995,8 +988,7 @@ static int add_stripe_bio(struct stripe_head *sh, struct bio *bi, int dd_idx, in | |||
995 | if (*bip && (*bip)->bi_sector < bi->bi_sector + ((bi->bi_size)>>9)) | 988 | if (*bip && (*bip)->bi_sector < bi->bi_sector + ((bi->bi_size)>>9)) |
996 | goto overlap; | 989 | goto overlap; |
997 | 990 | ||
998 | if (*bip && bi->bi_next && (*bip) != bi->bi_next) | 991 | BUG_ON(*bip && bi->bi_next && (*bip) != bi->bi_next); |
999 | BUG(); | ||
1000 | if (*bip) | 992 | if (*bip) |
1001 | bi->bi_next = *bip; | 993 | bi->bi_next = *bip; |
1002 | *bip = bi; | 994 | *bip = bi; |
@@ -1430,8 +1422,7 @@ static void handle_stripe(struct stripe_head *sh) | |||
1430 | set_bit(STRIPE_HANDLE, &sh->state); | 1422 | set_bit(STRIPE_HANDLE, &sh->state); |
1431 | if (failed == 0) { | 1423 | if (failed == 0) { |
1432 | char *pagea; | 1424 | char *pagea; |
1433 | if (uptodate != disks) | 1425 | BUG_ON(uptodate != disks); |
1434 | BUG(); | ||
1435 | compute_parity(sh, CHECK_PARITY); | 1426 | compute_parity(sh, CHECK_PARITY); |
1436 | uptodate--; | 1427 | uptodate--; |
1437 | pagea = page_address(sh->dev[sh->pd_idx].page); | 1428 | pagea = page_address(sh->dev[sh->pd_idx].page); |
@@ -2096,8 +2087,7 @@ static void raid5d (mddev_t *mddev) | |||
2096 | 2087 | ||
2097 | list_del_init(first); | 2088 | list_del_init(first); |
2098 | atomic_inc(&sh->count); | 2089 | atomic_inc(&sh->count); |
2099 | if (atomic_read(&sh->count)!= 1) | 2090 | BUG_ON(atomic_read(&sh->count)!= 1); |
2100 | BUG(); | ||
2101 | spin_unlock_irq(&conf->device_lock); | 2091 | spin_unlock_irq(&conf->device_lock); |
2102 | 2092 | ||
2103 | handled++; | 2093 | handled++; |
diff --git a/drivers/md/raid6main.c b/drivers/md/raid6main.c index ab64b37e4996..bc69355e0100 100644 --- a/drivers/md/raid6main.c +++ b/drivers/md/raid6main.c | |||
@@ -91,10 +91,8 @@ static void print_raid6_conf (raid6_conf_t *conf); | |||
91 | static void __release_stripe(raid6_conf_t *conf, struct stripe_head *sh) | 91 | static void __release_stripe(raid6_conf_t *conf, struct stripe_head *sh) |
92 | { | 92 | { |
93 | if (atomic_dec_and_test(&sh->count)) { | 93 | if (atomic_dec_and_test(&sh->count)) { |
94 | if (!list_empty(&sh->lru)) | 94 | BUG_ON(!list_empty(&sh->lru)); |
95 | BUG(); | 95 | BUG_ON(atomic_read(&conf->active_stripes)==0); |
96 | if (atomic_read(&conf->active_stripes)==0) | ||
97 | BUG(); | ||
98 | if (test_bit(STRIPE_HANDLE, &sh->state)) { | 96 | if (test_bit(STRIPE_HANDLE, &sh->state)) { |
99 | if (test_bit(STRIPE_DELAYED, &sh->state)) | 97 | if (test_bit(STRIPE_DELAYED, &sh->state)) |
100 | list_add_tail(&sh->lru, &conf->delayed_list); | 98 | list_add_tail(&sh->lru, &conf->delayed_list); |
@@ -202,10 +200,8 @@ static void init_stripe(struct stripe_head *sh, sector_t sector, int pd_idx) | |||
202 | raid6_conf_t *conf = sh->raid_conf; | 200 | raid6_conf_t *conf = sh->raid_conf; |
203 | int disks = conf->raid_disks, i; | 201 | int disks = conf->raid_disks, i; |
204 | 202 | ||
205 | if (atomic_read(&sh->count) != 0) | 203 | BUG_ON(atomic_read(&sh->count) != 0); |
206 | BUG(); | 204 | BUG_ON(test_bit(STRIPE_HANDLE, &sh->state)); |
207 | if (test_bit(STRIPE_HANDLE, &sh->state)) | ||
208 | BUG(); | ||
209 | 205 | ||
210 | CHECK_DEVLOCK(); | 206 | CHECK_DEVLOCK(); |
211 | PRINTK("init_stripe called, stripe %llu\n", | 207 | PRINTK("init_stripe called, stripe %llu\n", |
@@ -284,13 +280,11 @@ static struct stripe_head *get_active_stripe(raid6_conf_t *conf, sector_t sector | |||
284 | init_stripe(sh, sector, pd_idx); | 280 | init_stripe(sh, sector, pd_idx); |
285 | } else { | 281 | } else { |
286 | if (atomic_read(&sh->count)) { | 282 | if (atomic_read(&sh->count)) { |
287 | if (!list_empty(&sh->lru)) | 283 | BUG_ON(!list_empty(&sh->lru)); |
288 | BUG(); | ||
289 | } else { | 284 | } else { |
290 | if (!test_bit(STRIPE_HANDLE, &sh->state)) | 285 | if (!test_bit(STRIPE_HANDLE, &sh->state)) |
291 | atomic_inc(&conf->active_stripes); | 286 | atomic_inc(&conf->active_stripes); |
292 | if (list_empty(&sh->lru)) | 287 | BUG_ON(list_empty(&sh->lru)); |
293 | BUG(); | ||
294 | list_del_init(&sh->lru); | 288 | list_del_init(&sh->lru); |
295 | } | 289 | } |
296 | } | 290 | } |
@@ -353,8 +347,7 @@ static int drop_one_stripe(raid6_conf_t *conf) | |||
353 | spin_unlock_irq(&conf->device_lock); | 347 | spin_unlock_irq(&conf->device_lock); |
354 | if (!sh) | 348 | if (!sh) |
355 | return 0; | 349 | return 0; |
356 | if (atomic_read(&sh->count)) | 350 | BUG_ON(atomic_read(&sh->count)); |
357 | BUG(); | ||
358 | shrink_buffers(sh, conf->raid_disks); | 351 | shrink_buffers(sh, conf->raid_disks); |
359 | kmem_cache_free(conf->slab_cache, sh); | 352 | kmem_cache_free(conf->slab_cache, sh); |
360 | atomic_dec(&conf->active_stripes); | 353 | atomic_dec(&conf->active_stripes); |
@@ -780,7 +773,7 @@ static void compute_parity(struct stripe_head *sh, int method) | |||
780 | if (test_and_clear_bit(R5_Overlap, &sh->dev[i].flags)) | 773 | if (test_and_clear_bit(R5_Overlap, &sh->dev[i].flags)) |
781 | wake_up(&conf->wait_for_overlap); | 774 | wake_up(&conf->wait_for_overlap); |
782 | 775 | ||
783 | if (sh->dev[i].written) BUG(); | 776 | BUG_ON(sh->dev[i].written); |
784 | sh->dev[i].written = chosen; | 777 | sh->dev[i].written = chosen; |
785 | } | 778 | } |
786 | break; | 779 | break; |
@@ -970,8 +963,7 @@ static int add_stripe_bio(struct stripe_head *sh, struct bio *bi, int dd_idx, in | |||
970 | if (*bip && (*bip)->bi_sector < bi->bi_sector + ((bi->bi_size)>>9)) | 963 | if (*bip && (*bip)->bi_sector < bi->bi_sector + ((bi->bi_size)>>9)) |
971 | goto overlap; | 964 | goto overlap; |
972 | 965 | ||
973 | if (*bip && bi->bi_next && (*bip) != bi->bi_next) | 966 | BUG_ON(*bip && bi->bi_next && (*bip) != bi->bi_next); |
974 | BUG(); | ||
975 | if (*bip) | 967 | if (*bip) |
976 | bi->bi_next = *bip; | 968 | bi->bi_next = *bip; |
977 | *bip = bi; | 969 | *bip = bi; |
@@ -1906,8 +1898,7 @@ static void raid6d (mddev_t *mddev) | |||
1906 | 1898 | ||
1907 | list_del_init(first); | 1899 | list_del_init(first); |
1908 | atomic_inc(&sh->count); | 1900 | atomic_inc(&sh->count); |
1909 | if (atomic_read(&sh->count)!= 1) | 1901 | BUG_ON(atomic_read(&sh->count)!= 1); |
1910 | BUG(); | ||
1911 | spin_unlock_irq(&conf->device_lock); | 1902 | spin_unlock_irq(&conf->device_lock); |
1912 | 1903 | ||
1913 | handled++; | 1904 | handled++; |