Revision 1: mm1 Revision 2: -mm2 Revision 3: Experimental version of the snapshot and mirror targets for 2.6. Revision 4: Take a space out of a slab name. Revision 5: take note of the tio->io field before freeing tio. Revision 6: A blk_put_queue() was missing on the error path of alloc_dev(). Revision 7: whitespace Revision 8: Set the split io size for the snapshot target. Revision 9: Enable the new code that checks that an exception isn't already being copied. Revision 10: Recheck that the exception hasn't entered the pending table by another thread. Revision 11: 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 12: 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 13: 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 14: Export dm_io_async_bvec so dm-raid1 can find it when built as a module. Revision 15: dm-raid1.c:recover() was assuming that DEFAULT_MIRROR was 0. Revision 16: dm-raid1.c: correct region_shift calculation, ffs defines the least-significant bit as 1, not 0. Revision 17: Use s->chunk_size in snapshot ctr rather than the (modified) chunk_size var. Revision 18: Use ffs to calculate chunk_shift. Revision 19: Import the 2.4 multipath code (no porting as yet). Revision 20: Mainly looking at the null selector. Revision 21: 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 22: Knock out the underscore prefix to static fns. Revision 23: Minor pottering Revision 24: mpath porting Revision 25: Delete null selector. Add a round robin selector to dm-path-selector.c Revision 26: Change dm-daemon.c to use completions rather than semaphores. [Mike Christie] Revision 27: Add in the BIO_RW_FAILFAST flag to the multipath target. [Mike Christie] Revision 28: Bug fixes Revision 29: Change the multipath target interface yet again. Revision 30: List targets ioctl. [Patrick Caulfield] Revision 31: background path testing Revision 32: mpath bug fixes Revision 33: Persistent log for mirroring. Compiles but not run yet. Revision 34: When adding a new ioctl (DM_LIST_VERSIONS), the MINOR version number of the ioctl interface should be incremented. Revision 35: No need to recheck the condition when promoting the write lock in multipath_map(). Revision 36: 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(). Revision 37: Fix broken parameter count checking. [AJ Lewis] Revision 38: Correct typo in dm-log.c:disk_read() [AJ Lewis] Revision 39: For some reason dm_table_create() was allocating GFP_NOIO rather than GFP_KERNEL. Revision 40: multipath_endio(): the call to __resubmit_io() wasn't within the lock. Renamed __resubmit_io() -> __remap_io() Lifted the submit code into multipath_endio() after a successful remap. [Mike Christie] Revision 41: in __bind(), set the md->map _after_ the zero size dev check. [Christophe Saout] Revision 42: Add sanity check to dm_table_add_target() against zero length targets. [Christophe Saout] Revision 43: We can get rid of dm_deferred_io in dm.c. We are doing it elsewhere, others are doing it, so let's also do it. We can save a call to kmalloc (which can even fail). The bio->bi_next field can be used by us as long as we own it, it is set NULL before it is passed down to the next request queue. [Chripstophe Saout] Revision 44: Store deferred ios in a queue so that we preserve ordering and hence don't break write barriers. dm_request is now blocked while deferred ios are resubmitted. [Christophe Saout] Revision 45: Remove redundant spin lock in dec_pending() Revision 46: refridgerator() is indeed needed in dm-daemon.c. [Christophe Saout] Revision 47: This is the dm-crypt target. It uses cryptoapi to achive the same goal as cryptoloop. It uses mempools to ensure not to ever run out of memory and can split large IOs into smaller ones under memory pressure. Tested by some people, also works on a swap device. [Christophe Saout] Revision 48: Coding style changes using suggestions from LKML, no functionality changes. [Christophe Saout] Revision 49: simplify crypt_decode_key using simple_strotul as suggested by Andrew Morton [Christophe Saout] Revision 50: Increase throughput by telling the VM to not be too eager trying to allocate memory and possibly start swapping or flushing just because we need to allocate temporary buffers by dropping PF_MEMALLOC. We've got an emergency pool via mempool for this. [Christophe Saout] Revision 51: Split out the IV generation function so that we can add other ones in the future. The cryptoloop compatible one is too predictable. The -cbc cipher suffix is therefore changed to -plain. [Christophe Saout] Revision 52: o Don't free incomplete pages in crypt_free_buffer_pages o Make sure every encountered error gets seen. o Fix hard to trigger bug in the read path where bi_next was not cleared. [Christophe Saout] Revision 53: Small annotation improvements... [Christophe Saout] Revision 54: Replace problematic bi_idx usage in crypt_free_buffer_pages with a bi_vcnt and bi_size based solution until issues in the kernel code are sorted out. [Christophe Saout] Revision 55: here is a small and stupid bugfix for the flakey target. :) A down interval of one second didn't work. [Christophe Saout] Revision 56: Remove the failure target. Revision 57: Fix a bug in the multipath_map() logic meant that a new path was being chosen for every io. [Mike Christie]