Revision 1:
  [upstream]
  
  Small tidy-ups:
  - Use unsigned consistently
  - Simplify crypt_iv_plain memset
  - Use DMEMIT macro
   
  Signed-Off-By: Alasdair G Kergon <agk@redhat.com>
  Signed-Off-By: Christophe Saout <christophe@saout.de>

Revision 2:
  [upstream]
  
  Create crypt_iv_operations structure with generator method
  and move the plain iv generator into this structure.
   
  Optionally accept an extended <sector format> syntax:
    <cipher>-<chaining mode>-<iv mode>
  
  This also makes it ready to support chaining modes other than CBC 
  mode, such as CMC (not implemented in cryptoapi yet), 
  The problems outlined by Adam J. Richter in
    http://article.gmane.org/gmane.linux.kernel.device-mapper.dm-crypt/454
  would be fixed by switching to CMC chaining mode. 
  
  Example of a valid target line:
    0 200 crypt aes-cbc-plain 00000000000000000000000000000000 0 /dev/loop/5 0
   
  Signed-Off-By: Alasdair G Kergon <agk@redhat.com>
  Signed-Off-By: Christophe Saout <christophe@saout.de>

Revision 3:
  [upstream]
  
  This patch adds a new IV mode, I baptise ''encrypted sector|salt IV''
  I describe ESSIV in
    http://article.gmane.org/gmane.linux.kernel.device-mapper.dm-crypt/472
  
  To use ESSIV, set the ivmode (using the new syntax) to "essiv:<hash>".
  "hash" should be a valid cryptoapi hash.
  
  This, for example, is a valid dm-target line:
  
  0 200 crypt aes-cbc-essiv:sha256 00000000000000000000000000000000 0 /dev/loop/5
  0
   
  Signed-Off-By: Alasdair G Kergon <agk@redhat.com>
  Signed-Off-By: Christophe Saout <christophe@saout.de>
  Signed-Off-By: Fruhwirth Clemens <clemens@endorphin.org>

Revision 4:
  [upstream]
  
  Remove stray semicolon.
  
  I've found the most severe bug report ever! ;-)
  
  You got a stray semicolon in dm.c, around :809
  +       atomic_inc(&md->event_nr);;
  
  Signed-Off-By: Alasdair G Kergon <agk@redhat.com>
  From: Lars Marowsky-Bree <lmb@suse.de>

Revision 5:
  [upstream]
  
  Remove duplicate kfree in dm_register_target error path.
  
  Signed-Off-By: Alasdair G Kergon <agk@redhat.com>

Revision 6:
  dm-crypt fix for zero-length key.
  
  Signed-Off-By: Alasdair G Kergon <agk@redhat.com>

Revision 7:
  Use %llu not %Lu in sscanf/printf format strings.
  
  Signed-Off-By: Alasdair G Kergon <agk@redhat.com>

Revision 8:
  DM_TARGET_MSG ioctl to send a message to a dm target instance

Revision 9:
  Ioctl interface accepts refs by device number, not just name or uuid.
  
  Signed-Off-By: Alasdair G Kergon <agk@redhat.com>

Revision 10:
  Fix some DMERR strings.
  
  Signed-Off-By: Alasdair G Kergon <agk@redhat.com>

Revision 11:
  Multipath (udm1)

Revision 12:
  Round-robin path selector (udm1).

Revision 13:
  Add hardware handler framework (udm1).

Revision 14:
  EMC hw_handler (udm1).

Revision 15:
  Fill out mpath suspend/resume functions so queued I/O without a path is errored.

Revision 16:
  Tidy bypass_pg_num

Revision 17:
  Validate supplied priority group count.

Revision 18:
  Don't change PG until it runs out of paths.

Revision 19:
  Add switch_group message.

Revision 20:
  Tidy pgpath in choosing funcs.

Revision 21:
  Always clear m->next.

Revision 22:
  Tidy do_end_io.

Revision 23:
  Try a ps_end_io_fn

Revision 24:
  Remove a stray path_lookup from rr.

Revision 25:
  Add path selector args.

Revision 26:
  add ps args to arg comment

Revision 27:
  Add new ps args to status/table output.

Revision 28:
  Add initial PG number to table.

Revision 29:
  Add next_pg to table output.

Revision 30:
  Fix status line.

Revision 31:
  Split target suspend hook into presuspend and postsuspend.

Revision 32:
  Move the pre-suspend.

Revision 33:
  Avoid endio references to invalid pgpath.

Revision 34:
  Flakey target.

Revision 35:
  mm kgdb