device-mapper oops (and more!)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi

A status update on my experience with dmraid and the device-mapper.

Topics, ranging from "least serious" (1) to most (4):

  1. 'dmraid' and device-mapper target availability
  2. Error message propagation from device-mapper through dmraid to end user
  3. Assembly of mirrors using dmraid
  4. Oops while using dmraid / device-mapper


--__--__--

Topic 1: 'dmraid' and device-mapper target availability

Dmraid does not check for available targets before trying to assemble arrays.

Example:
If I run 'dmraid -ay', dmraid tries to create device-mapper tables
using the 'mirror' target,
even though dmsetup does not list "mirror" support in 'dmsetup targets'.
(The mirror target is not compiled in and there is no dm-mirror.ko available.)


--__--__--

Topic 2: Error message propagation from device-mapper through dmraid to end user

When the device-mapper fails to do something for dmraid, the error
does not get propagated to the end user.
Sometimes there is a follow-on error from dmraid, sometimes there is
no indication at all that something is wrong.
The device-mapper errors, however, is in the syslog, so it should be
possible to show them to the end user?

Examples of device mapper error messages in attached syslog_{1,2}.txt.
Example of follow-on error message from dmraid:

ERROR: dos: reading /dev/mapper/hpt45x_bbdfhdjicg[2]


--__--__--

Topic 3: Assembly of mirrors using dmraid

'dmraid' does not assembly the mirror on a HPT controller correctly.
An error message is provided in the syslog from device-mapper, saying:

device-mapper: device /dev/mapper/hpt45x_bbdfhdjicg too small for target

It seems that dmraid / the device-mapper (dunno which is responsible)
builds a 40 GB mirror, when in fact it should have been 80 GB.  Dmraid
then proceeds to try and add tables (or what's it called?) for the
first partition, which happens to be 60 GB in size, and device-mapper
reports that it has failed to do this, with good reason I might add.

The resulting /dev/mapper/hpt45x_bbdfhdjicg1 device is 0 bytes in
size, so 'mount' etc. of course fails.

How I found out (forgive me, but I think that it's rather clever :-)):

I have two test setups, one where Linux runs directly on the hardware
and one where it runs in a VMware which emulates physical access to
the disks in the system.  Using the direct approach, dmraid and
device-mapper does disk layout.  Using the emulated approach, access
goes through a BusLogic SCSI driver and the Windows drivers for the
HPT controller, so Linux sees the correct disk layout as physical
disks.

'fdisk -l' output from both test environments is attached; check out
the 40 GB vs. 80 GB difference:

device-mapper / dmraid:  Disk /dev/mapper/hpt45x_bbdfhdjicg: 40.0 GB,
40013178368 bytes
Windows HPT374 driver:   Disk /dev/sda: 80.0 GB, 80023749120 bytes


--__--__--

Topic 4: Oops while using dmraid / device-mapper

I got this oops in kmirrord after activating and deactivating randomly
a couple (3-4) times:

livecd root # dmraid -ay
Oops: 0000 [#1]
EIP:    0060:[<c02a1032>]    Not tainted VLI
EFLAGS: 00010246   (2.6.9)
EIP is at find_next_zero_bit+0x82/0xa4
eax: ffffffff   ebx: f8d35000   ecx: 07fffd10   edx: 00000000
esi: 00000000   edi: f8d35000   ebp: ffffa1f2   esp: f7ccbeb0
ds: 007b   es: 007b   ss: 0068
Process kmirrord/0 (pid: 6721, threadinfo=f7cca000 task=dfc01000)
Stack: 00000000 f8d0f000 0012a1f2 f7dc3480 f7ccbef0 f8ca9a21 f8d0f000 0012a1f2
       00130000 c19dfdb0 c19dfd8c c19dfd80 c19dfd8c f8caa507 f74644e0 f7ccbef0
       0012ffff 00000000 c19dfdb0 c19dfd8c c19dfd80 f74644e0 f8caa5c6 c19dfd8c
Call Trace:
 [<f8ca9a21>] core_get_resync_work+0x31/0x80 [dm_mirror]
 [...]

Above is only a snippet; rest of the oops message is attached separately.


--__--__--

I cross-posted this to two mailing lists, since topics 4 and perhaps 2
is probably relevant for device-mapper folks.  Hope it's ok?
Jan 18 19:28:36 livecd device-mapper: : unknown target type
Jan 18 19:28:36 livecd
Jan 18 19:28:36 livecd device-mapper: error adding target to table
Feb 12 11:28:08 livecd device-mapper: 4.1.0-ioctl (2003-12-10) initialised: dm@xxxxxxxxxxxxxx
Feb 12 11:29:25 livecd device-mapper: device /dev/mapper/hpt45x_bbdfhdjicg too small for target
Feb 12 11:29:25 livecd device-mapper: : dm-linear: Device lookup failed
Feb 12 11:29:25 livecd
Feb 12 11:29:25 livecd device-mapper: error adding target to table
Disk /dev/mapper/hpt45x_bbdfhdjicg: 40.0 GB, 40013178368 bytes
255 heads, 63 sectors/track, 4864 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

                        Device Boot      Start         End      Blocks   Id  System
/dev/mapper/hpt45x_bbdfhdjicg1               1        7833    62918541    c  W95 FAT32 (LBA)
Disk /dev/sda: 80.0 GB, 80023749120 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1        7833    62918541    c  W95 FAT32 (LBA)
livecd root # dmraid -ay
Oops: 0000 [#1]
Modules linked in: dm_mirror dm_mod vfat fat uhci_hcd snd_intel8x0 snd_ac97_codec snd_pcm snd_timer snd_page_alloc gameport snd_mpu401_uart snd_rawmidi snd_seq_device snd intel_agp agpgart tg3 parport_pc parport sbp2 ohci1394 ieee1394 ohci_hcd usb_storage
usbhid ehci_hcd usbcore
CPU:    0
EIP:    0060:[<c02a1032>]    Not tainted VLI
EFLAGS: 00010246   (2.6.9)
EIP is at find_next_zero_bit+0x82/0xa4
eax: ffffffff   ebx: f8d35000   ecx: 07fffd10   edx: 00000000
esi: 00000000   edi: f8d35000   ebp: ffffa1f2   esp: f7ccbeb0
ds: 007b   es: 007b   ss: 0068
Process kmirrord/0 (pid: 6721, threadinfo=f7cca000 task=dfc01000)
Stack: 00000000 f8d0f000 0012a1f2 f7dc3480 f7ccbef0 f8ca9a21 f8d0f000 0012a1f2
       00130000 c19dfdb0 c19dfd8c c19dfd80 c19dfd8c f8caa507 f74644e0 f7ccbef0
       0012ffff 00000000 c19dfdb0 c19dfd8c c19dfd80 f74644e0 f8caa5c6 c19dfd8c
Call Trace:
 [<f8ca9a21>] core_get_resync_work+0x31/0x80 [dm_mirror]
 [<f8caa507>] __rh_recovery_prepare+0x17/0xb0 [dm_mirror]
 [<f8caa5c6>] rh_recovery_prepare+0x26/0x50 [dm_mirror]
 [<f8caa914>] do_recovery+0x14/0x80 [dm_mirror]
 [<f8caae20>] do_work+0x0/0x70 [dm_mirror]
 [<f8caadfe>] do_mirror+0x4e/0x70 [dm_mirror]
 [<f8caae56>] do_work+0x36/0x70 [dm_mirror]
 [<c012c43b>] worker_thread+0x17b/0x220
 [<c011c200>] default_wake_function+0x0/0x20
 [<c03cddbc>] schedule+0x27c/0x480
 [<c011c200>] default_wake_function+0x0/0x20
 [<c012c2c0>] worker_thread+0x0/0x220
 [<c012fd53>] kthread+0xa3/0xb0
 [<c012fcb0>] kthread+0x0/0xb0
 [<c0104265>] kernel_thread_helper+0x5/0x10
Code: 76 00 8d bc 27 00 00 00 00 89 04 24 83 c7 04 89 f8 29 f0 c1 e0 03 31 f6 29 c5 74 25 8d 4d 1f c1 e9 05 89 fb b8 ff ff ff ff 31 d2 <f3> af 74 09 33 47 fc 83 ef 04 0f bc d0 29 df c1 e7 03 01 fa 89
 <4>device-mapper: device /dev/mapper/hpt45x_bbdfhdjicg too small for target
device-mapper: : dm-linear: Device lookup failed

device-mapper: error adding target to table


[Index of Archives]     [Linux RAID]     [Linux Device Mapper]     [Linux IDE]     [Linux SCSI]     [Kernel]     [Linux Books]     [Linux Admin]     [GFS]     [RPM]     [Yosemite Campgrounds]     [AMD 64]

  Powered by Linux