As usual the latest udm tree is available via http://people.sistina.com/~thornber/dm/ Core dm ------- Christophe Saout spotted and fixed some problems with us reordering deferred ios among other things. We need to come up with a way of handling write barriers for targets like snapshot and mirror. Crypt ----- Christophe Saout's dm-crypt target is included; this seems very clean to me compared to loop-crypt-thingy. Multipath --------- Mike Christie has been testing and debugging the multipath target, it seems to be working in as far as it goes. So I guess the SCSI layer people should take a look. I'd really like to get an IO error code back that differentiates between path and media failure. Feedback from people with real multipath hardware would be appreciated, especially regarding the cost of switching paths; we need heuristics for calculating multipath->min_io or a way of removing it altogether. Status code still needs to be added. Mirror ------ AJ Lewis has been debugging/testing the persistent log code, but it's still not ready for use yet. Also we still need to track failed regions, so the mirror set can degrade gracefully (until the userland tools do something to fix the problem) Snapshot -------- No changes. Some reports that it is working fine. However both Kevin Corry and I are not happy with the code ATM, so it will probably undergo another set of changes before it's ready for the stable tree/-mm. Detailed changes since 2.6.0-test10-udm3 ---------------------------------------- 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]