http://people.sistina.com/~thornber/patches/2.4-stable/2.4.20/2.4.20-dm-10.tar.bz2 Changes since 2.4.20-dm-9 ------------------------- Revision 50: Revert patches 44, 45 and 47 - will be re-integrated later. [Alasdair Kergon] Revision 51: Support for more architectures (parisc, mips64, ppc64, s390x, sparc64, x86_64) [Alasdair Kergon] Revision 52: In persistent_prepare(), the "enough-room-left" check only verifies that the start of the next-free chunk is within the cow device. If the cow device is not an even multiple of the chunk-size, the snapshot code will eventually try to write off the end of the cow device. Check that the entire next-free chunk is within the cow device. [Kevin Corry] Revision 53: In dm_create_persistent(), when setting up an existing snapshot, if the valid bit from the snapshot header is not set, refuse to activate the snapshot. [Kevin Corry] Revision 54: In __map_buffer(), the call to dm_table_find_target() will never return a NULL pointer (provided every DM device table has a valid "targets" array, which should be the case). It may, however, return a pointer to a blank target record (since there are always a KEYS_PER_NODE-multiple of target records in the B-tree, but not all of these target records are necessarily used). This will occur when DM receives an I/O request past the end of a device. (You'd think this shouldn't happen, but it does - generic_make_request() will allow an I/O one sector past the end of a device with an even number of sectors.) Instead of checking for a NULL return from dm_table_find_target(), check for a valid "type" field in the returned target. [Kevin Corry] Revision 55: Whitespace tweaking. [Alasdair Kergon] Revision 56: Tidy some DMWARNs. [Alasdair Kergon] Revision 57: Update version number. [Alasdair Kergon]