xfs
[Top] [All Lists]

Re: CONFIG_KIOBUF_IO broken on IDE

To: Steve Lord <lord@xxxxxxx>
Subject: Re: CONFIG_KIOBUF_IO broken on IDE
From: Chaitanya Tumuluri <chait@xxxxxxxxxxxxxxxxxxxx>
Date: Wed, 31 May 2000 14:30:14 -0700
Cc: "Andi Kleen" <ak@xxxxxxx>, linux-xfs@xxxxxxxxxxx, chait@xxxxxxx
In-reply-to: Your message of "Wed, 31 May 2000 15:37:03 CDT." <200005312037.PAA01805@jen.americas.sgi.com>
Sender: owner-linux-xfs@xxxxxxxxxxx
First off, there is no support for IDE devices in CONFIG_KIOBUF_IO.
That option only works for scsi devices. And the code actually 
checks for that in ll_rw_blk.c, in the function ll_rw_kio():

        /*
         * Only support SCSI disk for now.
         *
         * ENOSYS to indicate caller
         * should try ll_rw_block()
         * for non-SCSI (e.g. IDE) disks.
         */
        if (!SCSI_DISK_MAJOR(MAJOR(dev))){
                *error = -ENOSYS;
                goto end_io;
        }

And the pagebuf_segment_apply() routine should then try the regular
buffer head patch if it gets an ENOSYS from trying a kiobuf-based
I/O request.

See below for further comments.

On Wed, 31 May 2000 15:37:03 CDT, Steve Lord <lord@xxxxxxx> wrote:
>> I updated a XFS kernel with today's tree, created a new file system
>> and tried to unpack a glibc-2.1 source rpm onto it. rpm -bp stopped
>> with EIO on write after writing a few hundred files.
>
>So far my attempts to duplicate this have failed, maybe the issue is more to
>do with what rpm does than kiobuf support - it should fall back to other
>methods if it is used on a device which does not support it.
>
>I need to go dig out a source rpm and give that a whirl.

I will probably do the same thing shortly.

>> The kernel log gave:
>> 
>> start mounting filesystem: ide1(22,5)       
>> Ending clean XFS mount for filesystem: ide1(22,5)
>> blocklog end: 12
>> linvfs_read_super: sb root ino/128 inode/0xc5a011a0 icnt/2 vp/0xc5a012b0
>> attempt to access beyond end of device
>> 16:05: rw=0, want=38781096, limit=8191984
>> end_pg_buffer_io_async not uptodate 0 page 0xc119d150
>> attempt to access beyond end of device
>> 16:05: rw=0, want=38781096, limit=8191984
>> end_pg_buffer_io_async not uptodate 0 page 0xc119d150
>> attempt to access beyond end of device
>> 16:05: rw=0, want=38781096, limit=8191984
>> end_pg_buffer_io_async not uptodate 0 page 0xc119d150

Hmmm..Its actually trying to go after a device with major number 16...that 
should be a cdrom device, unless I'm mistaken. This is definitely not in 
the new CONFIG_KIOBUF_IO codepath. Why should the  requests be generated to 
read past 8MB of the CD device? 

>> fs/page_buf.c is version 1.102
>> fs/page_buf_locking.c is version 1.24
>> 
>> Relevant .config: 
>> 
>> ONFIG_XFS_FS=m
>> CONFIG_PAGE_BUF=y
>> CONFIG_PAGE_BUF_LOCKING=y
>> CONFIG_AVL=y
>> # CONFIG_XFS_VNODE_TRACING is not set
>> CONFIG_KIOBUF_IO=y
>> CONFIG_AVL=y
>> 
>> When CONFIG_KIOBUF_IO is disabled it seems to work. Looks like the support
>> for non SCSI devices (XFS is on a IDE disk) in page_buf.c is broken.

I guess....I'll dig around the code.

-Chait.

<Prev in Thread] Current Thread [Next in Thread>