Messages in this thread Patch in this message | | | Date | Tue, 6 Apr 2004 06:16:46 +0100 | From | Christoph Hellwig <> | Subject | Re: [RFC][PATCH 1/3] radix priority search tree - objrmap complexity fix |
| |
On Tue, Apr 06, 2004 at 06:22:22AM +0200, Andrea Arcangeli wrote: > What really happens is that you get errors with my tree because xfs in > some unlikely case is messing with set_bit on the page->private of slab > pages of order > 0.
Yes, that case would be a filesystem with blocksize < PAGE_SIZE and a buffer with a size of > PAGE_SIZE && < MAX_SLAB_SIZE.
Can you try the patch below (testing it now, but I'm pretty sure it'll fix it) instead of all the kmalloc changes?:
--- linux-2.5/fs/xfs/linux/xfs_buf.c 2004-04-02 20:10:56.000000000 +0200 +++ linux-2.6.5-aa3/fs/xfs/linux/xfs_buf.c 2004-04-06 09:13:05.275317568 +0200 @@ -448,7 +448,8 @@ _pagebuf_lookup_pages( if (flags & PBF_READ) pb->pb_locked = 1; good_pages--; - } else if (!PagePrivate(page)) { + } else if ((pb->pb_flags & _PBF_PAGECACHE) && + !PagePrivate(page)) { unsigned long i, range; /* @@ -1289,7 +1290,8 @@ bio_end_io_pagebuf( SetPageError(page); } else if (blocksize == PAGE_CACHE_SIZE) { SetPageUptodate(page); - } else if (!PagePrivate(page)) { + } else if ((pb->pb_flags & _PBF_PAGECACHE) && + !PagePrivate(page)) { unsigned int j, range; ASSERT(blocksize < PAGE_CACHE_SIZE); - 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/
| |