xfs
[Top] [All Lists]

CONFIG_KIOBUF_IO broken on IDE

To: linux-xfs@xxxxxxxxxxx
Subject: CONFIG_KIOBUF_IO broken on IDE
From: "Andi Kleen" <ak@xxxxxxx>
Date: Wed, 31 May 2000 21:05:44 +0200
Sender: owner-linux-xfs@xxxxxxxxxxx
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.

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

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.

Now when trying to remove the directory tree created in the failed unpack
above after a reboot gives funny effects too: 

rm -rf glibc-2.1
rm: cannot remove directory `glibc-2.1/db': File exists
rm: cannot remove directory `glibc-2.1/db2/progs': File exists
rm: cannot remove directory `glibc-2.1/db2': File exists
rm: cannot remove directory `glibc-2.1': File exists
> find glibc-2.1 -ls
8388736    1 drwxr-xr-x   6 ak       users          46 Jun  1 04:44 glibc-2.1
find: glibc-2.1/argp: No such file or directory
12583042    1 drwxr-xr-x   3 ak       users          18 Jun  1 04:43 
glibc-2.1/db
find: glibc-2.1/db/btree: No such file or directory
4194458    1 drwxr-xr-x   5 ak       users          40 Jun  1 04:43 
glibc-2.1/db2
find: glibc-2.1/db2/common: No such file or directory
find: glibc-2.1/db2/mp: No such file or directory
29360271    1 drwxr-xr-x   3 ak       users          23 Jun  1 04:43 
glibc-2.1/db2/progs
find: glibc-2.1/db2/progs/db_dump185: No such file or directory
find: glibc-2.1/elf: No such file or directory

Looks like the disk structure is corrupted now. It gets now 
new messages in the system log [after executing the commands above]:

ttempt to access beyond end of device
16:05: rw=0, want=38779324, limit=8191984
end_pg_buffer_io_async not uptodate 0 page 0xc11e5720
attempt to access beyond end of device
16:05: rw=0, want=38779324, limit=8191984
end_pg_buffer_io_async not uptodate 0 page 0xc11e5720
attempt to access beyond end of device
16:05: rw=0, want=38779324, limit=8191984
end_pg_buffer_io_async not uptodate 0 page 0xc11e5720
attempt to access beyond end of device
16:05: rw=0, want=38779324, limit=8191984
end_pg_buffer_io_async not uptodate 0 page 0xc11e5720
attempt to access beyond end of device
16:05: rw=0, want=38779324, limit=8191984
end_pg_buffer_io_async not uptodate 0 page 0xc11e5720
attempt to access beyond end of device
16:05: rw=0, want=38779324, limit=8191984
end_pg_buffer_io_async not uptodate 0 page 0xc11e5720

The tree cannot be removed anymore.

When I recompile without CONFIG_KIOBUF_IO the scary messages do not appear
anymore, but it is still impossible to remove the tree. The libc unpack
works now too.

I would run fsck on it, but it seems to be impossible to umount a XFS 
file system now (umount gives EBUSY even when lsof shows nothing) 


-Andi


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