Loading drivers/md/raid10.c +65 −62 Original line number Diff line number Diff line Loading @@ -1533,8 +1533,10 @@ static void fix_read_error(conf_t *conf, mddev_t *mddev, r10bio_t *r10_bio) sl--; d = r10_bio->devs[sl].devnum; rdev = rcu_dereference(conf->mirrors[d].rdev); if (rdev && test_bit(In_sync, &rdev->flags)) { if (!rdev || !test_bit(In_sync, &rdev->flags)) continue; atomic_inc(&rdev->nr_pending); rcu_read_unlock(); if (sync_page_io(rdev, Loading @@ -1560,18 +1562,19 @@ static void fix_read_error(conf_t *conf, mddev_t *mddev, r10bio_t *r10_bio) rdev_dec_pending(rdev, mddev); rcu_read_lock(); } } sl = start; while (sl != r10_bio->read_slot) { char b[BDEVNAME_SIZE]; if (sl==0) sl = conf->copies; sl--; d = r10_bio->devs[sl].devnum; rdev = rcu_dereference(conf->mirrors[d].rdev); if (rdev && test_bit(In_sync, &rdev->flags)) { char b[BDEVNAME_SIZE]; if (!rdev || !test_bit(In_sync, &rdev->flags)) continue; atomic_inc(&rdev->nr_pending); rcu_read_unlock(); if (sync_page_io(rdev, Loading @@ -1588,7 +1591,8 @@ static void fix_read_error(conf_t *conf, mddev_t *mddev, r10bio_t *r10_bio) (unsigned long long)( sect + rdev->data_offset), bdevname(rdev->bdev, b)); printk(KERN_NOTICE "md/raid10:%s: %s: failing drive\n", printk(KERN_NOTICE "md/raid10:%s: %s: failing " "drive\n", mdname(mddev), bdevname(rdev->bdev, b)); Loading @@ -1607,7 +1611,6 @@ static void fix_read_error(conf_t *conf, mddev_t *mddev, r10bio_t *r10_bio) rdev_dec_pending(rdev, mddev); rcu_read_lock(); } } rcu_read_unlock(); sectors -= s; Loading Loading
drivers/md/raid10.c +65 −62 Original line number Diff line number Diff line Loading @@ -1533,8 +1533,10 @@ static void fix_read_error(conf_t *conf, mddev_t *mddev, r10bio_t *r10_bio) sl--; d = r10_bio->devs[sl].devnum; rdev = rcu_dereference(conf->mirrors[d].rdev); if (rdev && test_bit(In_sync, &rdev->flags)) { if (!rdev || !test_bit(In_sync, &rdev->flags)) continue; atomic_inc(&rdev->nr_pending); rcu_read_unlock(); if (sync_page_io(rdev, Loading @@ -1560,18 +1562,19 @@ static void fix_read_error(conf_t *conf, mddev_t *mddev, r10bio_t *r10_bio) rdev_dec_pending(rdev, mddev); rcu_read_lock(); } } sl = start; while (sl != r10_bio->read_slot) { char b[BDEVNAME_SIZE]; if (sl==0) sl = conf->copies; sl--; d = r10_bio->devs[sl].devnum; rdev = rcu_dereference(conf->mirrors[d].rdev); if (rdev && test_bit(In_sync, &rdev->flags)) { char b[BDEVNAME_SIZE]; if (!rdev || !test_bit(In_sync, &rdev->flags)) continue; atomic_inc(&rdev->nr_pending); rcu_read_unlock(); if (sync_page_io(rdev, Loading @@ -1588,7 +1591,8 @@ static void fix_read_error(conf_t *conf, mddev_t *mddev, r10bio_t *r10_bio) (unsigned long long)( sect + rdev->data_offset), bdevname(rdev->bdev, b)); printk(KERN_NOTICE "md/raid10:%s: %s: failing drive\n", printk(KERN_NOTICE "md/raid10:%s: %s: failing " "drive\n", mdname(mddev), bdevname(rdev->bdev, b)); Loading @@ -1607,7 +1611,6 @@ static void fix_read_error(conf_t *conf, mddev_t *mddev, r10bio_t *r10_bio) rdev_dec_pending(rdev, mddev); rcu_read_lock(); } } rcu_read_unlock(); sectors -= s; Loading