On Mon, Dec 04 2000, Russell Cattelan wrote:
> I'm going to take a closer look at the scsi_back_merge_fn.
> This may  have more to due with our/Chait's kiobuf modifications than
> anything else.
> 
> 
> 
> XFS (dev: 8/20) mounting with KIOBUFIO
> Start mounting filesystem: sd(8,20)
> Ending clean XFS mount for filesystem: sd(8,20)
> kmem_alloc doing a vmalloc 262144 size & PAGE_SIZE 0 rval=0xe0a10000
> Unable to handle kernel NULL pointer dereference at virtual address
> 00000008
>  printing eip:
> c019f8b5
> *pde = 00000000
> 
> Entering kdb (current=0xc1910000, pid 5) on processor 1 Panic: Oops
> due to panic @ 0xc019f8b5
> eax = 0x00000002 ebx = 0x00000001 ecx = 0x00081478 edx = 0x00000000
> esi = 0xc1957da0 edi = 0xc1923ac8 esp = 0xc1911e94 eip = 0xc019f8b5
> ebp = 0xc1911e9c xss = 0x00000018 xcs = 0x00000010 eflags = 0x00010046
> xds = 0x00000018 xes = 0x00000018 origeax = 0xffffffff &regs = 0xc1911e60
> [1]kdb> bt
>     EBP       EIP         Function(args)
> 0xc1911e9c 0x00000000c019f8b5 scsi_back_merge_fn_c+0x15 (0xc1923a98,
> 0xc1957da0, 0xcfb05780, 0x80)
>                                kernel .text 0xc0100000 0xc019f8a0

Ah, I see what it is now. The elevator is attempting to merge a buffer
head into a kio based request, poof. The attached diff should take
care of that in your tree.

-- 
* Jens Axboe <[EMAIL PROTECTED]>
* SuSE Labs
--- drivers/block/elevator.c~   Tue Dec  5 23:59:01 2000
+++ drivers/block/elevator.c    Tue Dec  5 23:59:41 2000
@@ -39,6 +39,9 @@
        while ((entry = entry->prev) != head) {
                struct request *__rq = blkdev_entry_to_request(entry);
 
+               if (req->kiobuf)
+                       continue;
+
                /*
                 * simply "aging" of requests in queue
                 */
@@ -105,6 +108,8 @@
        while ((entry = entry->prev) != head) {
                struct request *__rq = blkdev_entry_to_request(entry);
 
+               if (req->kiobuf)
+                       continue;
                if (__rq->cmd != rw)
                        continue;
                if (__rq->rq_dev != bh->b_rdev)

Reply via email to