Chaitanya Tumuluri wrote:
I wouldn't dig into this to far.. I'm 90% sure it's the compiler bug.
I chased this for 2 day before I realized that adding a printk to debug the
problem
would actually cause the problem to go away; removing the printk caused
it reappear.
> 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.
|