Revision 1: 2.6.0-test10-mm1 Revision 2: Experimental version of the snapshot and mirror targets for 2.6. Revision 3: Take a space out of a slab name. Revision 4: take note of the tio->io field before freeing tio. Revision 5: A blk_put_queue() was missing on the error path of alloc_dev(). Revision 6: whitespace Revision 7: Set the split io size for the snapshot target. Revision 8: Enable the new code that checks that an exception isn't already being copied. Revision 9: Recheck that the exception hasn't entered the pending table by another thread. Revision 10: Set the ti->split_io field for the origin to the smallest chunk-size of its snapshots. This is done each time the origin is resumed, since new snapshots (with smaller chunk-sizes) could have been added. [Kevin Corry] Revision 11: In the "else" section of __clone_and_map(), we're splitting a page from the bio into two pages and mapping each part separately. Therefore, we need another tio structure to track the second part of the page. [Kevin Corry] Revision 12: In order to properly build snapshot as its own kernel module, dm-snapshot.c and dm-snapshot.h must be renamed to dm-snap.c and dm-snap.h. The dm_vcalloc function must also be exported from dm-table.c so the snapshot module can find it. [Kevin Corry] Revision 13: Export dm_io_async_bvec so dm-raid1 can find it when built as a module. Revision 14: dm-raid1.c:recover() was assuming that DEFAULT_MIRROR was 0. Revision 15: dm-raid1.c: correct region_shift calculation, ffs defines the least-significant bit as 1, not 0. Revision 16: Use s->chunk_size in snapshot ctr rather than the (modified) chunk_size var. Revision 17: Use ffs to calculate chunk_shift. Revision 18: Import the 2.4 multipath code (no porting as yet). Revision 19: Mainly looking at the null selector. Revision 20: Change multipath daemon to use dm-daemon.c. Declare a jiffy_t type in dm.h. Let daemon work functions return a sleep duration hint (interface change only, hint not acted upon yet). Revision 21: Knock out the underscore prefix to static fns. Revision 22: Minor pottering Revision 23: mpath porting Revision 24: Delete null selector. Add a round robin selector to dm-path-selector.c Revision 25: Change dm-daemon.c to use completions rather than semaphores. [Mike Christie] Revision 26: Add in the BIO_RW_FAILFAST flag to the multipath target. [Mike Christie] Revision 27: Bug fixes Revision 28: Change the multipath target interface yet again. Revision 29: List targets ioctl. [Patrick Caulfield] Revision 30: background path testing Revision 31: mpath bug fixes Revision 32: Persistent log for mirroring. Compiles but not run yet. Revision 33: When adding a new ioctl (DM_LIST_VERSIONS), the MINOR version number of the ioctl interface should be incremented. Revision 34: No need to recheck the condition when promoting the write lock in multipath_map(). Revision 35: Change m->path_lock from a rw semaphore to spinlock, since it sometimes needs to be locked from irq context. NOTE: test_path() is safe to be called from within a spinlock since it uses down_trylock() rather than down().