1. 2.4.20-pre4/ext3: Fix the "dump corrupts filesystems" buffer-cache bug.
Since block-dev-in-page-cache was added in 2.4.10, and the aliasing between
buffered devices and getblk() was restored in 2.4.11, getblk() and friends
can be performing IO on a page cache page without the page cache lock
being held. The page cache IO assumes that the page cache lock is enough
to synchronise things safely, but this breaks if we get aliased IO.
In particular, block_read_full_page() assumes that it is safe to begin IO
on any non-uptodate bh, regardless of the locked status of the bh. To be
safe, we need to test the uptodate state *after* taking the bh lock.
Already in 2.5.
--- linux-ext3-2.4merge/fs/buffer.c.=K0004=.orig Tue Aug 27 23:14:15 2002
}
/* Stage 3: start the IO */
- for (i = 0; i < nr; i++)
- submit_bh(READ, arr[i]);
-
+ for (i = 0; i < nr; i++) {
+ struct buffer_head * bh = arr[i];
+ if (buffer_uptodate(bh))
+ end_buffer_io_async(bh, 1);
+ else
+ submit_bh(READ, bh);
+ }
+
return 0;
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
2. System Fails to Relink Unix Completely
3. 2.4.20-pre4/ext3: Fix "buffer_jdirty" assert failure.
4. shelltool suicide
5. ~2.4.20-pre3 -> 2.4.21 : nfs client read performance "broken"
6. Dell PowerEdge and PERC2/si
7. 2.4.20-pre7 USB 2.0 "ehci-hcd" patches
8. Can I create/activate a 2nd loopback device?
9. Kernel "mem=" parameter - 2.4.18 vs. 2.4.20
10. 2.4.20: problem with "ps -olstart"
11. 2.4.20: hang on "ls -lR / >file"
12. Problem using "make config/xconfig" with 2.4.20 on Redhat 7.3
13. 2.4.20, IRQ 11, and "Texas Instruments PCI1410 PC card Cardbus Controller"