[dm-devel] unstable devmapper release: 2.6.0-udm1

Joe Thornber thornber at sistina.com
Fri Jan 2 08:17:01 UTC 2004


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]





More information about the dm-devel mailing list