http://people.sistina.com/~thornber/patches/2.4-stable/2.4.20/2.4.20-dm-4.tar.bz2 Those of you having trouble activating snapshots should certainly upgrade (see patch 35 for the full story). - Joe Changes since 2.4.20-dm-2 ------------------------- Revision 18: Don't hook the io until after the target->map function has been called. Revision 19: Lift the dm_io allocation out of __map_buffer so that it is outside of the read lock. Hook all io, not just simple mappings. Revision 20: Use a rw_semaphore in dm_target.c rather than a rwlock_t, just to keep in line with dm.c Revision 21: Don't let the ioctl interface drop a suspended device. Revision 22: Call dm_put_target_type() *after* calling the destructor. Revision 23: Fluff Revision 24: printk tgt->error if dm_table_add_target() fails. Revision 25: Just return an error from the error targets map function, rather than erroring the buffer_head. Revision 26: Export dm_table_get_mode() Revision 27: If an alloc_page() call fails in init_pages(), unlock all locked pages before freeing them. [Kevin Corry] Revision 28: The calls to calc_block_sizes() in kcopyd_write_pages() and kcopyd_copy() are redundant, since kcopyd_io() already calls calc_block_sizes(). Revision 29: Remove the line in dispatch_bh() that sets bh->b_dev to B_FREE, since it sets bh->b_dev to job->disk.dev a few lines later. [Kevin Corry] Revision 30: Move a set_bit() into the preceeding assignment statement. [Kevin Corry] Revision 31: Set bh->b_count to 1 in dispatch_bh(). [Kevin Corry] Revision 32: Comment fix in run_pages_job(). [Kevin Corry] Revision 33: In copy_write(), don't need to set job->context = info, since it is already set to that when the function is called. [Kevin Corry] Revision 34: Always halt a copy if the read part failed, not just when there is a notify_fn (fix coding error). [Kevin Corry] Revision 35: 'Persistent' flag checking in the snapshot target constructor had a coding error which meant that it was always invalid.