lkml.org 
[lkml]   [2003]   [Jun]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
Subject[PATCH] Update gendisk devfs handler in lvrename
From
tags 189650 pending
quit

On Sat, May 31, 2003 at 09:10:04AM +0100, Alan Chandler wrote:
>
> I was able to reproduce with this simple test (some lines from command
> history)
>
> 462 lvcreate -L 100M -n testb vg1
> 463 lvcreate -L 100M -n testa vg1
> 464 mkreiserfs /dev/vg1/testa
> 465 mkreiserfs /dev/vg1/testb
> 466 ls
> 467 lvcreate -L 100M -n testc vg1
> 468 lvcreate -L 100M -n testd vg1
> 469 mkreiserfs /dev/vg1/testc
> 470 mkreiserfs /dev/vg1/testd
> 471 lvremove /dev/vg1/testa
> 472 lvrename vg testb testa
> 473 lvrename vg1 testb testa
> 474 lvrename vg1 testc testb
> 475 lvrename vg1 testd testc
> 476 lvcreate -L 100M -n testd vg1
>
> At this point the lvcreate segfaulted.

...

> Unable to handle kernel paging request at virtual address 0000101c
> c015c1a0
> *pde = 00000000
> Oops: 0000
> CPU: 0
> EIP: 0010:[<c015c1a0>] Tainted: P
> Using defaults from ksymoops -t elf32-i386 -a i386
> EFLAGS: 00010246
> eax: 00000000 ebx: 00001000 ecx: 00000000 edx: 00000040
> esi: d5458b05 edi: dc649f67 ebp: 0000003f esp: dc649ea4
> ds: 0018 es: 0018 ss: 0018
> Process lvcreate (pid: 2468, stackpage=dc649000)
> Stack: 00000008 dc649f28 00000000 e095c67f c0155504 d5458ac0 dc649f28 00000040
> e095eb20 e095dc00 00000008 00000220 c017e9a5 e095dc00 00000008 dc649f28
> 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
> Call Trace: [<e095c67f>] [<c0155504>] [<e095eb20>] [<e095dc00>]
> [<c017e9a5>]
> [<e095dc00>] [<e095eb20>] [<e095dc00>] [<e095dc00>] [<e095dc00>]
> [<c0126c7a>]
> [<c014bb7b>] [<e095dc00>] [<c01358f6>] [<c0108837>]
> Code: 83 7b 1c 00 75 9f 89 e8 5b 5e 5f 5d c3 8d 76 00 53 8b 5c 24
>
>
> >>EIP; c015c1a0 <devfs_generate_path+d0/e0> <=====
>
> >>esi; d5458b05 <_end+151be915/20572e70>
> >>edi; dc649f67 <_end+1c3afd77/20572e70>
> >>esp; dc649ea4 <_end+1c3afcb4/20572e70>
>
> Trace; e095c67f <[lvm-mod]__module_author+3f/40>
> Trace; c0155504 <disk_name+54/210>
> Trace; e095eb20 <[lvm-mod]lvm_hd_struct+220/4400>
> Trace; e095dc00 <[lvm-mod]lvm_gendisk+0/30>
> Trace; c017e9a5 <part_show+105/150>
> Trace; e095dc00 <[lvm-mod]lvm_gendisk+0/30>
> Trace; e095eb20 <[lvm-mod]lvm_hd_struct+220/4400>
> Trace; e095dc00 <[lvm-mod]lvm_gendisk+0/30>
> Trace; e095dc00 <[lvm-mod]lvm_gendisk+0/30>
> Trace; e095dc00 <[lvm-mod]lvm_gendisk+0/30>
> Trace; c0126c7a <do_mmap_pgoff+41a/4d0>
> Trace; c014bb7b <seq_read+db/270>
> Trace; e095dc00 <[lvm-mod]lvm_gendisk+0/30>
> Trace; c01358f6 <sys_read+96/f0>
> Trace; c0108837 <system_call+33/38>
>
> Code; c015c1a0 <devfs_generate_path+d0/e0>
> 00000000 <_EIP>:
> Code; c015c1a0 <devfs_generate_path+d0/e0> <=====
> 0: 83 7b 1c 00 cmpl $0x0,0x1c(%ebx) <=====
> Code; c015c1a4 <devfs_generate_path+d4/e0>
> 4: 75 9f jne ffffffa5 <_EIP+0xffffffa5>
> Code; c015c1a6 <devfs_generate_path+d6/e0>
> 6: 89 e8 mov %ebp,%eax
> Code; c015c1a8 <devfs_generate_path+d8/e0>
> 8: 5b pop %ebx
> Code; c015c1a9 <devfs_generate_path+d9/e0>
> 9: 5e pop %esi
> Code; c015c1aa <devfs_generate_path+da/e0>
> a: 5f pop %edi
> Code; c015c1ab <devfs_generate_path+db/e0>
> b: 5d pop %ebp
> Code; c015c1ac <devfs_generate_path+dc/e0>
> c: c3 ret
> Code; c015c1ad <devfs_generate_path+dd/e0>
> d: 8d 76 00 lea 0x0(%esi),%esi
> Code; c015c1b0 <devfs_get_ops+0/80>
> 10: 53 push %ebx
> Code; c015c1b1 <devfs_get_ops+1/80>
> 11: 8b 5c 24 00 mov 0x0(%esp,1),%ebx
>
>
> 7 warnings issued. Results may not be reliable.

OK, lvrename is not updating the devfs handler in gendisks. This
patch fixes it.
--
Debian GNU/Linux 3.0 is out! ( http://www.debian.org/ )
Email: Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Index: kernel-source-2.4/drivers/md/lvm.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.4/drivers/md/lvm.c,v
retrieving revision 1.1.1.12
diff -u -r1.1.1.12 lvm.c
--- kernel-source-2.4/drivers/md/lvm.c 1 Jun 2003 03:06:25 -0000 1.1.1.12
+++ kernel-source-2.4/drivers/md/lvm.c 29 Jun 2003 05:09:15 -0000
@@ -2697,7 +2697,8 @@
{
lvm_fs_remove_lv(vg_ptr, lv_ptr);
strncpy(lv_ptr->lv_name, lv_req->lv_name, NAME_LEN);
- lvm_fs_create_lv(vg_ptr, lv_ptr);
+ lvm_gendisk.part[MINOR(lv_ptr->lv_dev)].de =
+ lvm_fs_create_lv(vg_ptr, lv_ptr);
break;
}
}
\
 
 \ /
  Last update: 2005-03-22 13:38    [W:0.186 / U:0.352 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site