• K
    [PATCH] dm: map and endio return code clarification · 45cbcd79
    Kiyoshi Ueda 提交于
    Tighten the use of return values from the target map and end_io functions.
    Values of 2 and above are now explictly reserved for future use.  There are no
    existing targets using such values.
    
    The patch has no effect on existing behaviour.
    
    o Reserve return values of 2 and above from target map functions.
      Any positive value currently indicates "mapping complete", but all
      existing drivers use the value 1.  We now make that a requirement
      so we can assign new meaning to higher values in future.
    
      The new definition of return values from target map functions is:
          < 0 : error
          = 0 : The target will handle the io (DM_MAPIO_SUBMITTED).
          = 1 : Mapping completed (DM_MAPIO_REMAPPED).
          > 1 : Reserved (undefined).  Previously this was the same as '= 1'.
    
    o Reserve return values of 2 and above from target end_io functions
      for similar reasons.
      DM_ENDIO_INCOMPLETE is introduced for a return value of 1.
    
    Test results:
    
      I have tested by using the multipath target.
    
      I/Os succeed when valid paths exist.
    
      I/Os are queued in the multipath target when there are no valid paths and
    queue_if_no_path is set.
    
      I/Os fail when there are no valid paths and queue_if_no_path is not set.
    Signed-off-by: NKiyoshi Ueda <k-ueda@ct.jp.nec.com>
    Signed-off-by: NJun'ichi Nomura <j-nomura@ce.jp.nec.com>
    Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
    Cc: dm-devel@redhat.com
    Signed-off-by: NAndrew Morton <akpm@osdl.org>
    Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
    45cbcd79
dm.c 28.7 KB