2005-02-05 16:50:28

by Laurent Riffard

[permalink] [raw]
Subject: 2.6.11-rc3-mm1 : mount UDF CDRW stuck in D state

Hello,

This is kernel 2.6.11-rc3-mm1. I can't mount an UDF-formatted cdrw in packet-writing mode. Mount process gets stuck in D state.

Mounting and writing this media in packet-writing mode works fine with kernel 2.6.11-rc2-mm2.

Mounting and reading this media in normal mode (/dev/hdd on /vol/graveur type udf (ro,noexec,nosuid,nodev,noatime)) works fine with kernel 2.6.11-rc3-mm1 or older.

Note I did not try another media, this one seems good to me. The drive is a LITE-ON LTR-48125S.

below are :
- ps status
- sysreq-T output
- output of /proc/driver/pktcdvd/pktcdvd0
- cdrwtool info

----------------------------------------------------------------------------

laurent$ ps aux | grep mount
root 6782 0.0 0.1 1572 436 ? D 17:34 0:00 /bin/mount -t udf -s -o noatime /dev/pktcdvd/0 /vol/pkt

----------------------------------------------------------------------------

Here is the output of SysRq-T for this process :

mount D C7E81B60 0 6782 6781 (NOTLB)
c7e81b64 00000082 c0381ee4 c7e81b60 00000000 4c667c40 000f4258 c74c05a0
c74c06c4 c7e80000 c7e81bd0 c7e81b80 c7e81bb8 c0280b76 00000000 c74c05a0
c01133a4 00000000 00000000 c021ae65 c1345e30 ffffffff 00000001 c74c05a0
Call Trace:
[wait_for_completion+157/266] wait_for_completion+0x9d/0x10a
[<c0280b76>] wait_for_completion+0x9d/0x10a
[pg0+364799100/1070007296] pkt_generic_packet+0x108/0x134 [pktcdvd]
[<d5f7447c>] pkt_generic_packet+0x108/0x134 [pktcdvd]
[pg0+364804125/1070007296] pkt_get_disc_info+0x3d/0x77 [pktcdvd]
[<d5f7581d>] pkt_get_disc_info+0x3d/0x77 [pktcdvd]
[pg0+364804344/1070007296] pkt_get_last_written+0x15/0x93 [pktcdvd]
[<d5f758f8>] pkt_get_last_written+0x15/0x93 [pktcdvd]
[pg0+364806861/1070007296] pkt_open_dev+0x38/0x12b [pktcdvd]
[<d5f762cd>] pkt_open_dev+0x38/0x12b [pktcdvd]
[pg0+364807294/1070007296] pkt_open+0x61/0xa0 [pktcdvd]
[<d5f7647e>] pkt_open+0x61/0xa0 [pktcdvd]
[do_open+151/803] do_open+0x97/0x323
[<c0151d01>] do_open+0x97/0x323
[blkdev_get+108/119] blkdev_get+0x6c/0x77
[<c0151ff9>] blkdev_get+0x6c/0x77
[open_bdev_excl+55/112] open_bdev_excl+0x37/0x70
[<c01522ee>] open_bdev_excl+0x37/0x70
[get_sb_bdev+22/283] get_sb_bdev+0x16/0x11b
[<c0150e2a>] get_sb_bdev+0x16/0x11b
[pg0+364950912/1070007296] udf_get_sb+0x10/0x12 [udf]
[<d5f99580>] udf_get_sb+0x10/0x12 [udf]
[do_kern_mount+67/186] do_kern_mount+0x43/0xba
[<c015109a>] do_kern_mount+0x43/0xba
[do_new_mount+108/153] do_new_mount+0x6c/0x99
[<c016419d>] do_new_mount+0x6c/0x99
[do_mount+309/332] do_mount+0x135/0x14c
[<c0164827>] do_mount+0x135/0x14c
[sys_mount+106/166] sys_mount+0x6a/0xa6
[<c0164be8>] sys_mount+0x6a/0xa6
[sysenter_past_esp+82/117] sysenter_past_esp+0x52/0x75
[<c0102bf9>] sysenter_past_esp+0x52/0x75

----------------------------------------------------------------------------

laurent$ cat /proc/driver/pktcdvd/pktcdvd0
Writer pktcdvd0 mapped to hdd:

Settings:
packet size: 0kB
write type: Packet
packet type: Variable
link loss: 0
track mode: 0
block mode: Unknown

Statistics:
packets started: 0
packets ended: 0
written: 0kB
read gather: 0kB
read: 0kB

Misc:
reference count: 1
flags: 0x0
read speed: 0kB/s
write speed: 0kB/s
start offset: 0
mode page offset: 0

Queue state:
bios queued: 0
bios pending: 0
current sector: 0x0
state: i:0 ow:0 rw:0 ww:0 rec:0 fin:0

----------------------------------------------------------------------------

[root@antares root]# cdrwtool -i -d /dev/hdd
using device /dev/hdd
1388KB internal buffer
setting write speed to 12x

DISC INFO:
erasable : Yes
border = 3
Disc status = 2
number of first track = 1
number of sessions = 1
number of tracks = 1
status of last track = 1
uru = 0
did_v = 1
dbc_v = 0
disc type = 32
disc_id = 100374
lead_in = 255:255:255 (1166880)
lead_out = 255:255:255 (1166880)
OPC entries = 1

TRACK INFO:

Track 1
track_number = 1
session_number = 1
damage = 0
copy = 0
track_mode = 7
Rt = 1
blank = 0
packet = 1
fp = 1
data_mode = 2
lra_v = 0
nwa_v = 0
track_start = 0
next_writable = 0
last_recorded = 0
free_blocks = 0
packet_size = 32
track_size = 295264 (590528KB)

--
laurent


Attachments:
signature.asc (252.00 B)
OpenPGP digital signature

2005-02-06 00:52:03

by Peter Osterlund

[permalink] [raw]
Subject: Re: 2.6.11-rc3-mm1 : mount UDF CDRW stuck in D state

Laurent Riffard <[email protected]> writes:

> This is kernel 2.6.11-rc3-mm1. I can't mount an UDF-formatted cdrw
> in packet-writing mode. Mount process gets stuck in D state.
>
> Mounting and writing this media in packet-writing mode works fine
> with kernel 2.6.11-rc2-mm2.

I tried to repeat the problem, but I didn't get far, because I get a
kernel panic right after init is started:

Unable to handle kernel NULL pointer dereference at virtual address 00000000
...
PREEMPT
...
EIP is a strncpy_from_user+0x33/0x47
...
Call Trace:
getname+0x69/0xa5
sys_open+0x12/0xc6
sysenter_past_esp+0x52/0x75
...
Kernel panic - not syncing: Attempted to kill init!

--
Peter Osterlund - [email protected]
http://web.telia.com/~u89404340

2005-02-06 01:48:52

by Peter Osterlund

[permalink] [raw]
Subject: Re: 2.6.11-rc3-mm1 : mount UDF CDRW stuck in D state

Peter Osterlund <[email protected]> writes:

> Laurent Riffard <[email protected]> writes:
>
> > This is kernel 2.6.11-rc3-mm1. I can't mount an UDF-formatted cdrw
> > in packet-writing mode. Mount process gets stuck in D state.
> >
> > Mounting and writing this media in packet-writing mode works fine
> > with kernel 2.6.11-rc2-mm2.
>
> I tried to repeat the problem, but I didn't get far, because I get a
> kernel panic right after init is started:

I got around that by disabling preempt, radeon framebuffer, HPET
timer, APIC. Don't know which one caused the panic, will track it down
later.

Anyway, mount hangs for me too if I use an IDE drive, both with native
ide and ide-scsi emulation. It doesn't hang with a USB drive though. I
verified that 2.6.11-rc3 does not have this problem. Reverting
bk-ide-dev does *not* fix the problem.

--
Peter Osterlund - [email protected]
http://web.telia.com/~u89404340

2005-02-06 06:23:16

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.11-rc3-mm1 : mount UDF CDRW stuck in D state

Peter Osterlund <[email protected]> wrote:
>
> Peter Osterlund <[email protected]> writes:
>
> > Laurent Riffard <[email protected]> writes:
> >
> > > This is kernel 2.6.11-rc3-mm1. I can't mount an UDF-formatted cdrw
> > > in packet-writing mode. Mount process gets stuck in D state.
> > >
> > > Mounting and writing this media in packet-writing mode works fine
> > > with kernel 2.6.11-rc2-mm2.
> >
> > I tried to repeat the problem, but I didn't get far, because I get a
> > kernel panic right after init is started:
>
> I got around that by disabling preempt, radeon framebuffer, HPET
> timer, APIC. Don't know which one caused the panic, will track it down
> later.

Please do - the above combo works for me (as usual). I don't recall anyone
else reporting it.

> Anyway, mount hangs for me too if I use an IDE drive, both with native
> ide and ide-scsi emulation. It doesn't hang with a USB drive though. I
> verified that 2.6.11-rc3 does not have this problem. Reverting
> bk-ide-dev does *not* fix the problem.

Bah. sysrq-T output would be helpful.

2005-02-06 08:19:03

by Peter Osterlund

[permalink] [raw]
Subject: Re: 2.6.11-rc3-mm1 : mount UDF CDRW stuck in D state

Andrew Morton <[email protected]> writes:

> Peter Osterlund <[email protected]> wrote:
> >
> > Peter Osterlund <[email protected]> writes:
> >
> > > Laurent Riffard <[email protected]> writes:
> > >
> > > > This is kernel 2.6.11-rc3-mm1. I can't mount an UDF-formatted cdrw
> > > > in packet-writing mode. Mount process gets stuck in D state.
> > > >
> > > > Mounting and writing this media in packet-writing mode works fine
> > > > with kernel 2.6.11-rc2-mm2.
>
> > Anyway, mount hangs for me too if I use an IDE drive, both with native
> > ide and ide-scsi emulation. It doesn't hang with a USB drive though. I
> > verified that 2.6.11-rc3 does not have this problem. Reverting
> > bk-ide-dev does *not* fix the problem.
>
> Bah. sysrq-T output would be helpful.

I was wrong about USB, it doesn't work either. The IDE drive failed
with a non-packet formatted disc, so I didn't bother to check what was
inserted in the USB drive. It turned out it was empty and in that case
the driver doesn't hang.

Anyway, the problem is that the add-struct-request-end_io-callback
patch forgot to update pktcdvd.c. This patch fixes it. It should
probably be merged into the add-struct-request-end_io-callback patch,
because that patch already fixes up other struct request users.

Signed-off-by: Peter Osterlund <[email protected]>
---

linux-petero/drivers/block/pktcdvd.c | 1 +
1 files changed, 1 insertion(+)

diff -puN drivers/block/pktcdvd.c~pktcdvd-endio-fix drivers/block/pktcdvd.c
--- linux/drivers/block/pktcdvd.c~pktcdvd-endio-fix 2005-02-06 08:59:16.000000000 +0100
+++ linux-petero/drivers/block/pktcdvd.c 2005-02-06 09:01:22.000000000 +0100
@@ -375,6 +375,7 @@ static int pkt_generic_packet(struct pkt
rq->ref_count++;
rq->flags |= REQ_NOMERGE;
rq->waiting = &wait;
+ rq->end_io = blk_end_sync_rq;
elv_add_request(q, rq, ELEVATOR_INSERT_BACK, 1);
generic_unplug_device(q);
wait_for_completion(&wait);
_

--
Peter Osterlund - [email protected]
http://web.telia.com/~u89404340

2005-02-06 12:54:18

by Laurent Riffard

[permalink] [raw]
Subject: Re: 2.6.11-rc3-mm1 : mount UDF CDRW stuck in D state


Le 06.02.2005 09:18, Peter Osterlund a ?crit :
[snip]
>
> Anyway, the problem is that the add-struct-request-end_io-callback
> patch forgot to update pktcdvd.c. This patch fixes it. It should
> probably be merged into the add-struct-request-end_io-callback patch,
> because that patch already fixes up other struct request users.
>
> Signed-off-by: Peter Osterlund <[email protected]>
> ---
>
> linux-petero/drivers/block/pktcdvd.c | 1 +
> 1 files changed, 1 insertion(+)
>
> diff -puN drivers/block/pktcdvd.c~pktcdvd-endio-fix drivers/block/pktcdvd.c
> --- linux/drivers/block/pktcdvd.c~pktcdvd-endio-fix 2005-02-06 08:59:16.000000000 +0100
> +++ linux-petero/drivers/block/pktcdvd.c 2005-02-06 09:01:22.000000000 +0100
> @@ -375,6 +375,7 @@ static int pkt_generic_packet(struct pkt
> rq->ref_count++;
> rq->flags |= REQ_NOMERGE;
> rq->waiting = &wait;
> + rq->end_io = blk_end_sync_rq;
> elv_add_request(q, rq, ELEVATOR_INSERT_BACK, 1);
> generic_unplug_device(q);
> wait_for_completion(&wait);
> _
>

Ok, this patch fixed the problem. I'm able to mount the CDRW and write some data.

Thank you.
--
laurent


Attachments:
signature.asc (252.00 B)
OpenPGP digital signature