patch-2.4.0-test7 linux/drivers/block/raid5.c
Next file: linux/drivers/block/xor.c
Previous file: linux/drivers/block/raid1.c
Back to the patch index
Back to the overall index
- Lines: 93
- Date:
Mon Aug 14 08:26:34 2000
- Orig file:
v2.4.0-test6/linux/drivers/block/raid5.c
- Orig date:
Wed Aug 9 19:19:50 2000
diff -u --recursive --new-file v2.4.0-test6/linux/drivers/block/raid5.c linux/drivers/block/raid5.c
@@ -863,8 +863,7 @@
if (!sh->bh_copy[i])
sh->bh_copy[i] = raid5_alloc_buffer(sh, sh->size);
raid5_build_block(sh, sh->bh_copy[i], i);
- if (atomic_set_buffer_clean(sh->bh_new[i]))
- atomic_set_buffer_dirty(sh->bh_copy[i]);
+ atomic_set_buffer_dirty(sh->bh_copy[i]);
memcpy(sh->bh_copy[i]->b_data, sh->bh_new[i]->b_data, sh->size);
}
if (sh->bh_copy[pd_idx] == NULL) {
@@ -995,28 +994,12 @@
}
-static int is_stripe_allclean(struct stripe_head *sh, int disks)
-{
- int i;
-
- return 0;
- for (i = 0; i < disks; i++) {
- if (sh->bh_new[i])
- if (test_bit(BH_Dirty, &sh->bh_new[i]))
- return 0;
- if (sh->bh_old[i])
- if (test_bit(BH_Dirty, &sh->bh_old[i]))
- return 0;
- }
- return 1;
-}
-
static void handle_stripe_write (mddev_t *mddev , raid5_conf_t *conf,
struct stripe_head *sh, int nr_write, int * operational, int disks,
int parity, int parity_failed, int nr_cache, int nr_cache_other,
int nr_failed_other, int nr_cache_overwrite, int nr_failed_overwrite)
{
- int i, allclean;
+ int i;
unsigned int block;
struct buffer_head *bh;
int method1 = INT_MAX, method2 = INT_MAX;
@@ -1068,7 +1051,6 @@
PRINTK("handle_stripe(), sector %lu, nr_write %d, method1 %d, method2 %d\n", sh->sector, nr_write, method1, method2);
if (!method1 || !method2) {
- allclean = is_stripe_allclean(sh, disks);
sh->phase = PHASE_WRITE;
compute_parity(sh, method1 <= method2 ? RECONSTRUCT_WRITE : READ_MODIFY_WRITE);
@@ -1087,24 +1069,11 @@
PRINTK("writing spare %d\n", i);
atomic_inc(&sh->nr_pending);
bh->b_dev = bh->b_rdev = conf->spare->dev;
- generic_make_request(WRITERAW, bh);
+ generic_make_request(WRITE, bh);
} else {
-#if 0
atomic_inc(&sh->nr_pending);
bh->b_dev = bh->b_rdev = conf->disks[i].dev;
- generic_make_request(WRITERAW, bh);
-#else
- if (!allclean || (i==sh->pd_idx)) {
- PRINTK("writing dirty %d\n", i);
- atomic_inc(&sh->nr_pending);
- bh->b_dev = bh->b_rdev = conf->disks[i].dev;
- generic_make_request(WRITERAW, bh);
- } else {
- PRINTK("not writing clean %d\n", i);
- raid5_end_request(bh, 1);
- sh->new[i] = 0;
- }
-#endif
+ generic_make_request(WRITE, bh);
}
atomic_dec(&bh->b_count);
}
@@ -1282,7 +1251,7 @@
atomic_inc(&sh->nr_pending);
lock_get_bh(bh);
bh->b_dev = bh->b_rdev = conf->spare->dev;
- generic_make_request(WRITERAW, bh);
+ generic_make_request(WRITE, bh);
md_sync_acct(bh->b_rdev, bh->b_size/512);
atomic_dec(&bh->b_count);
PRINTK("handle_stripe_sync() %lu, phase WRITE, pending %d buffers\n", sh->sector, md_atomic_read(&sh->nr_pending));
@@ -1308,7 +1277,7 @@
lock_get_bh(bh);
atomic_inc(&sh->nr_pending);
bh->b_dev = bh->b_rdev = conf->disks[pd_idx].dev;
- generic_make_request(WRITERAW, bh);
+ generic_make_request(WRITE, bh);
md_sync_acct(bh->b_rdev, bh->b_size/512);
atomic_dec(&bh->b_count);
PRINTK("handle_stripe_sync() %lu phase WRITE, pending %d buffers\n",
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)