Your patch seem to solve only some of the xfs issues for me. Before the patch my system hung when booting. This only occured I had xfs compiled into the kernel. After patching things seemed fine, but durning "dbench 32" the system locked. Upon rebooting and attempting to mount the filesystem I got this: XFS mounting filesystem md(9,2) Starting XFS recovery on filesystem: md(9,2) (dev: 9/2) kernel BUG at page_buf.c:578! PS- The results of ksymoops are attached. Andrea Arcangeli wrote: >was a collision between new xfs and new scheduler, you can use this fix >in the meantime: > >--- 2.4.20pre5aa3/fs/xfs/pagebuf/page_buf.c.~1~ Wed Sep 11 05:17:46 2002 >+++ 2.4.20pre5aa3/fs/xfs/pagebuf/page_buf.c Wed Sep 11 06:00:35 2002 >@@ -2055,9 +2055,9 @@ pagebuf_iodone_daemon( > spin_unlock_irq(¤t->sigmask_lock); > > /* Migrate to the right CPU */ >- current->cpus_allowed = 1UL << cpu; >- while (smp_processor_id() != cpu) >- schedule(); >+ set_cpus_allowed(current, 1UL << cpu); >+ if (cpu() != cpu) >+ BUG(); > > sprintf(current->comm, "pagebuf_io_CPU%d", bind_cpu); > INIT_LIST_HEAD(&pagebuf_iodone_tq[cpu]); > >also remeber to apply the O_DIRECT fixes for reiserfs and ext3 (that >were left over after merging the new nfs stuff). all will be fixed in >next -aa of course. > >--- 2.4.19pre3aa1/fs/reiserfs/inode.c.~1~ Tue Mar 12 00:07:18 2002 >+++ 2.4.19pre3aa1/fs/reiserfs/inode.c Tue Mar 12 01:24:21 2002 >@@ -2161,10 +2161,11 @@ > } > } > >-static int reiserfs_direct_io(int rw, struct inode *inode, >+static int reiserfs_direct_io(int rw, struct file * filp, > struct kiobuf *iobuf, unsigned long blocknr, > int blocksize) > { >+ struct inode * inode = filp->f_dentry->d_inode->i_mapping->host; > return generic_direct_IO(rw, inode, iobuf, blocknr, blocksize, > reiserfs_get_block_direct_io) ; > } >--- 2.4.20pre5aa2/fs/ext3/inode.c.~1~ Mon Sep 9 02:38:08 2002 >+++ 2.4.20pre5aa2/fs/ext3/inode.c Tue Sep 10 05:22:18 2002 >@@ -1385,9 +1385,10 @@ static int ext3_releasepage(struct page > } > > static int >-ext3_direct_IO(int rw, struct inode *inode, struct kiobuf *iobuf, >+ext3_direct_IO(int rw, struct file * filp, struct kiobuf *iobuf, > unsigned long blocknr, int blocksize) > { >+ struct inode * inode = filp->f_dentry->d_inode->i_mapping->host; > struct ext3_inode_info *ei = EXT3_I(inode); > handle_t *handle = NULL; > int ret; > >Andrea >- >To unsubscribe from this list: send the line "unsubscribe linux-kernel" in >the body of a message to majordomo@vger.kernel.org >More majordomo info at http://vger.kernel.org/majordomo-info.html >Please read the FAQ at http://www.tux.org/lkml/ > > > >