Linus,
 This isn't a bug fix, just a tidy up.

 Current, md_error - which is called when an underlying device detects
 an error - takes a kdev_t to identify which md array is affected.
 It converts this into a mddev_t structure pointer, and in every case,
 the caller already has the desired structure pointer.

 This patch changes md_error and the callers to pass an mddev_t
 instead of a kdev_t

NeilBrown

--- ./include/linux/raid/md.h   2001/05/16 06:08:41     1.1
+++ ./include/linux/raid/md.h   2001/05/16 06:10:02     1.2
@@ -80,7 +80,7 @@
 extern struct gendisk * find_gendisk (kdev_t dev);
 extern int md_notify_reboot(struct notifier_block *this,
                                        unsigned long code, void *x);
-extern int md_error (kdev_t mddev, kdev_t rdev);
+extern int md_error (mddev_t *mddev, kdev_t rdev);
 extern int md_run_setup(void);
 
 extern void md_print_devices (void);
--- ./drivers/md/raid5.c        2001/05/16 05:27:20     1.3
+++ ./drivers/md/raid5.c        2001/05/16 06:10:02     1.4
@@ -412,7 +412,7 @@
                        spin_lock_irqsave(&conf->device_lock, flags);
                }
        } else {
-               md_error(mddev_to_kdev(conf->mddev), bh->b_dev);
+               md_error(conf->mddev, bh->b_dev);
                clear_bit(BH_Uptodate, &bh->b_state);
        }
        clear_bit(BH_Lock, &bh->b_state);
@@ -440,7 +440,7 @@
 
        md_spin_lock_irqsave(&conf->device_lock, flags);
        if (!uptodate)
-               md_error(mddev_to_kdev(conf->mddev), bh->b_dev);
+               md_error(conf->mddev, bh->b_dev);
        clear_bit(BH_Lock, &bh->b_state);
        set_bit(STRIPE_HANDLE, &sh->state);
        __release_stripe(conf, sh);
--- ./drivers/md/md.c   2001/05/16 06:08:41     1.1
+++ ./drivers/md/md.c   2001/05/16 06:10:03     1.2
@@ -2464,7 +2464,7 @@
        int ret;
 
        fsync_dev(mddev_to_kdev(mddev));
-       ret = md_error(mddev_to_kdev(mddev), dev);
+       ret = md_error(mddev, dev);
        return ret;
 }
 
@@ -2938,13 +2938,11 @@
 }
 
 
-int md_error (kdev_t dev, kdev_t rdev)
+int md_error (mddev_t *mddev, kdev_t rdev)
 {
-       mddev_t *mddev;
        mdk_rdev_t * rrdev;
        int rc;
 
-       mddev = kdev_to_mddev(dev);
 /*     printk("md_error dev:(%d:%d), rdev:(%d:%d), (caller: 
%p,%p,%p,%p).\n",MAJOR(dev),MINOR(dev),MAJOR(rdev),MINOR(rdev), 
__builtin_return_address(0),__builtin_return_address(1),__builtin_return_address(2),__builtin_return_address(3));
  */
        if (!mddev) {
--- ./drivers/md/raid1.c        2001/05/16 05:27:20     1.3
+++ ./drivers/md/raid1.c        2001/05/16 06:10:03     1.4
@@ -388,7 +388,7 @@
         * this branch is our 'one mirror IO has finished' event handler:
         */
        if (!uptodate)
-               md_error (mddev_to_kdev(r1_bh->mddev), bh->b_dev);
+               md_error (r1_bh->mddev, bh->b_dev);
        else
                /*
                 * Set R1BH_Uptodate in our master buffer_head, so that
@@ -1426,7 +1426,7 @@
         * We don't do much here, just schedule handling by raid1d
         */
        if (!uptodate)
-               md_error (mddev_to_kdev(r1_bh->mddev), bh->b_dev);
+               md_error (r1_bh->mddev, bh->b_dev);
        else
                set_bit(R1BH_Uptodate, &r1_bh->state);
        raid1_reschedule_retry(r1_bh);
@@ -1437,7 +1437,7 @@
        struct raid1_bh * r1_bh = (struct raid1_bh *)(bh->b_private);
        
        if (!uptodate)
-               md_error (mddev_to_kdev(r1_bh->mddev), bh->b_dev);
+               md_error (r1_bh->mddev, bh->b_dev);
        if (atomic_dec_and_test(&r1_bh->remaining)) {
                mddev_t *mddev = r1_bh->mddev;
                unsigned long sect = bh->b_blocknr * (bh->b_size>>9);
-
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to [EMAIL PROTECTED]

Reply via email to