Re: Re: fr1-2.16 patch for 2.6.10 kernel

denis bonnenfant <[email protected]>
Newsgroups gmane.linux.enbd.general
Message-ID <[email protected]>
> 
> Can you bemore explicit?
> 

I quickly hacked this instead of the test :


		p=conf->mirrors+mirror;
		printk(KERN_INFO "raid1 %d: ** p=%p mirror=%d\n", __LINE__, p, mirror);
		if ( !p->rdev) {
			p->rdev = rdev;
		goto suite;
		}
		printk(KERN_INFO "raid1 %d: ** p->rdev=%p rdev=%p \n", __LINE__, p->rdev, rdev);
		if (p->rdev == rdev){
				printk(KERN_INFO "raid1 %d: ** %p \n", __LINE__, p->rdev->bdev);
				printk(KERN_INFO "raid1 %d: ** %p \n", __LINE__, p->rdev->bdev->bd_inode);
				printk(KERN_INFO "raid1 %d: ** %d \n", __LINE__, p->rdev->bdev->bd_inode->i_rdev);
				printk(KERN_INFO "raid1 %d: ** %p \n", __LINE__, rdev->bdev);
				printk(KERN_INFO "raid1 %d: ** %p \n", __LINE__, rdev->bdev->bd_inode);
				printk(KERN_INFO "raid1 %d: ** %d \n", __LINE__, rdev->bdev->bd_inode->i_rdev);		
				goto suite;
		}
				printk(KERN_INFO "raid1 %d: ** %p \n", __LINE__, p->rdev->bdev);
				printk(KERN_INFO "raid1 %d: ** %p \n", __LINE__, p->rdev->bdev->bd_inode);
				printk(KERN_INFO "raid1 %d: ** %d \n", __LINE__, p->rdev->bdev->bd_inode->i_rdev);
				printk(KERN_INFO "raid1 %d: ** %p \n", __LINE__, rdev->bdev);
				printk(KERN_INFO "raid1 %d: ** %p \n", __LINE__, rdev->bdev->bd_inode);
				printk(KERN_INFO "raid1 %d: ** %d \n", __LINE__, rdev->bdev->bd_inode->i_rdev);		

         if ( p->rdev->bdev->bd_inode->i_rdev == rdev->bdev->bd_inode->i_rdev) {
				printk(KERN_INFO "raid1 %d: ** p=%p rdev=%p mirror=%d\n", __LINE__, p, rdev, mirror);
suite:				
				
				/*#else
		if ( !(p=conf->mirrors+mirror)->rdev) {
			p->rdev = rdev;
*/
#endif /* CONFIG_MD_FR1 */

			blk_queue_stack_limits(mddev->queue,
					       rdev->bdev->bd_disk->queue);

and then i got  :

md 3885: ** mddev=f7fc8480 rdev=f7ff96c0
md 3886: ** mddev->pers=f88a8de0
md 3887: ** mddev->pers->hot_add_disk=f88a5388
raid1 1055: ** p=f798ac00 mirror=0
raid1 1060: ** p->rdev=f71dd100 rdev=f7ff96c0
raid1 1070: ** 00000000

it's this line  : printk(KERN_INFO "raid1 %d: ** %p \n", __LINE__, p->rdev->bdev);
It's just before the third if (

Unable to handle kernel NULL pointer dereference at virtual address 00000004
  printing eip:
f88a54bb
*pde = 00000000
Oops: 0000 [#1]



So why p->rdev->bdev is NULL ?
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.