Re: Re: fr1-2.16 patch for 2.6.10 kernel

"Peter T. Breuer" <[email protected]>
Newsgroups gmane.linux.enbd.general
Message-ID <[email protected]>
"Also sprach Peter T. Breuer:"
> In article <[email protected]> you wrote:
> > So why p->rdev->bdev is NULL ?
> 
>   rdev->bdev is null?
> 
> Oh. OK. I'll take a look.

It's fairly clear that unlock_rdev() has been run.

static void unlock_rdev(mdk_rdev_t *rdev)
{
        struct block_device *bdev = rdev->bdev;
        rdev->bdev = NULL;
        ^^^^^^^^^^^^^^^^^^^
        if (!bdev)
                MD_BUG();
        bd_release(bdev);
        blkdev_put(bdev, BDEV_RAW);
}

It probably has been run from export_rdev()

static void export_rdev(mdk_rdev_t * rdev)
{
        char b[BDEVNAME_SIZE];
        printk(KERN_INFO "md: export_rdev(%s)\n",
                bdevname(rdev->bdev,b));
        if (rdev->mddev)
                MD_BUG();
        free_disk_sb(rdev);
        list_del_init(&rdev->same_set);
#ifndef MODULE
        md_autodetect_dev(rdev->bdev->bd_dev);
#endif
        unlock_rdev(rdev);
        ^^^^^^^^^^^^^^^^^^
        kfree(rdev);
}

And that could come from many places. In particular
kick_rdev_from_array().


static void kick_rdev_from_array(mdk_rdev_t * rdev)
{
        unbind_rdev_from_array(rdev);
        export_rdev(rdev);
        ^^^^^^^^^^^^^^^^^^^
}


And are you seeing this ONLY after the disk has failed to be recognized
on reinsertion, because of a different UUID?

Humour me .... can you perform your experiment NOT with scsi disks, but
with a pair of loopback devices as mirror components?

   dd if=/dev/zero bs=1k count=4k of=/tmp/core0
   dd if=/dev/zero bs=1k count=4k of=/tmp/core1

   losetup /dev/loop0 /tmp/core0
   losetup /dev/loop1 /tmp/core1

   mdadm -C -l 1 -n 2 -x 0 /dev/md0 /dev/loop{0,1}

??
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.