1. 14 12月, 2006 1 次提交
  2. 11 12月, 2006 11 次提交
  3. 09 12月, 2006 17 次提交
    • A
      c642f9e0
    • J
      [PATCH] dm: raid1: reset sync_search on resume · 88b20a1a
      Jonathan E Brassow 提交于
      Reset sync_search on resume.  The effect is to retry syncing all out-of-sync
      regions when a mirror is resumed, including ones that previously failed.
      Signed-off-by: NJonathan E Brassow <jbrassow@redhat.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>
      88b20a1a
    • J
      [PATCH] dm: log: rename complete_resync_work · f3ee6b2f
      Jonathan E Brassow 提交于
      The complete_resync_work function only provides the ability to change an
      out-of-sync region to in-sync.  This patch enhances the function to allow us
      to change the status from in-sync to out-of-sync as well, something that is
      needed when a mirror write to one of the devices or an initial resync on a
      given region fails.
      Signed-off-by: NJonathan E Brassow <jbrassow@redhat.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>
      f3ee6b2f
    • M
      [PATCH] dm: snapshot: abstract memory release · 31c93a0c
      Milan Broz 提交于
      Move the code that releases memory used by a snapshot into a separate function.
      Signed-off-by: NMilan Broz <mbroz@redhat.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>
      31c93a0c
    • K
      [PATCH] dm: mpath: use noflush suspending · 45e15720
      Kiyoshi Ueda 提交于
      Implement the pushback feature for the multipath target.
      
      The pushback request is used when:
        1) there are no valid paths;
        2) queue_if_no_path was set;
        3) a suspend is being issued with the DMF_NOFLUSH_SUSPENDING flag.
           Otherwise bios are returned to applications with -EIO.
      
      To check whether queue_if_no_path is specified or not, you need to check
      both queue_if_no_path and saved_queue_if_no_path, because presuspend saves
      the original queue_if_no_path value to saved_queue_if_no_path.
      
      The check for 1 already exists in both map_io() and do_end_io().
      So this patch adds __must_push_back() to check 2 and 3.
      
      Test results:
      See the test results in the preceding patch.
      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>
      45e15720
    • K
      [PATCH] dm: suspend: add noflush pushback · 2e93ccc1
      Kiyoshi Ueda 提交于
      In device-mapper I/O is sometimes queued within targets for later processing.
      For example the multipath target can be configured to store I/O when no paths
      are available instead of returning it -EIO.
      
      This patch allows the device-mapper core to instruct a target to transfer the
      contents of any such in-target queue back into the core.  This frees up the
      resources used by the target so the core can replace that target with an
      alternative one and then resend the I/O to it.  Without this patch the only
      way to change the target in such circumstances involves returning the I/O with
      an error back to the filesystem/application.  In the multipath case, this
      patch will let us add new paths for existing I/O to try after all the existing
      paths have failed.
      
          DMF_NOFLUSH_SUSPENDING
          ----------------------
      
      If the DM_NOFLUSH_FLAG ioctl option is specified at suspend time, the
      DMF_NOFLUSH_SUSPENDING flag is set in md->flags during dm_suspend().  It
      is always cleared before dm_suspend() returns.
      
      The flag must be visible while the target is flushing pending I/Os so it
      is set before presuspend where the flush starts and unset after the wait
      for md->pending where the flush ends.
      
      Target drivers can check this flag by calling dm_noflush_suspending().
      
          DM_MAPIO_REQUEUE / DM_ENDIO_REQUEUE
          -----------------------------------
      
      A target's map() function can now return DM_MAPIO_REQUEUE to request the
      device mapper core queue the bio.
      
      Similarly, a target's end_io() function can return DM_ENDIO_REQUEUE to request
      the same.  This has been labelled 'pushback'.
      
      The __map_bio() and clone_endio() functions in the core treat these return
      values as errors and call dec_pending() to end the I/O.
      
          dec_pending
          -----------
      
      dec_pending() saves the pushback request in struct dm_io->error.  Once all
      the split clones have ended, dec_pending() will put the original bio on
      the md->pushback list.  Note that this supercedes any I/O errors.
      
      It is possible for the suspend with DM_NOFLUSH_FLAG to be aborted while
      in progress (e.g. by user interrupt).  dec_pending() checks for this and
      returns -EIO if it happened.
      
          pushdback list and pushback_lock
          --------------------------------
      
      The bio is queued on md->pushback temporarily in dec_pending(), and after
      all pending I/Os return, md->pushback is merged into md->deferred in
      dm_suspend() for re-issuing at resume time.
      
      md->pushback_lock protects md->pushback.
      The lock should be held with irq disabled because dec_pending() can be
      called from interrupt context.
      
      Queueing bios to md->pushback in dec_pending() must be done atomically
      with the check for DMF_NOFLUSH_SUSPENDING flag.  So md->pushback_lock is
      held when checking the flag.  Otherwise dec_pending() may queue a bio to
      md->pushback after the interrupted dm_suspend() flushes md->pushback.
      Then the bio would be left in md->pushback.
      
      Flag setting in dm_suspend() can be done without md->pushback_lock because
      the flag is checked only after presuspend and the set value is already
      made visible via the target's presuspend function.
      
      The flag can be checked without md->pushback_lock (e.g. the first part of
      the dec_pending() or target drivers), because the flag is checked again
      with md->pushback_lock held when the bio is really queued to md->pushback
      as described above.  So even if the flag is cleared after the lockless
      checkings, the bio isn't left in md->pushback but returned to applications
      with -EIO.
      
          Other notes on the current patch
          --------------------------------
      
      - md->pushback is added to the struct mapped_device instead of using
        md->deferred directly because md->io_lock which protects md->deferred is
        rw_semaphore and can't be used in interrupt context like dec_pending(),
        and md->io_lock protects the DMF_BLOCK_IO flag of md->flags too.
      
      - Don't issue lock_fs() in dm_suspend() if the DM_NOFLUSH_FLAG
        ioctl option is specified, because I/Os generated by lock_fs() would be
        pushed back and never return if there were no valid devices.
      
      - If an error occurs in dm_suspend() after the DMF_NOFLUSH_SUSPENDING
        flag is set, md->pushback must be flushed because I/Os may be queued to
        the list already.  (flush_and_out label in dm_suspend())
      
          Test results
          ------------
      
      I have tested using multipath target with the next patch.
      
      The following tests are for regression/compatibility:
        - I/Os succeed when valid paths exist;
        - I/Os fail when there are no valid paths and queue_if_no_path is not
          set;
        - I/Os are queued in the multipath target when there are no valid paths and
          queue_if_no_path is set;
        - The queued I/Os above fail when suspend is issued without the
          DM_NOFLUSH_FLAG ioctl option.  I/Os spanning 2 multipath targets also
          fail.
      
      The following tests are for the normal code path of new pushback feature:
        - Queued I/Os in the multipath target are flushed from the target
          but don't return when suspend is issued with the DM_NOFLUSH_FLAG
          ioctl option;
        - The I/Os above are queued in the multipath target again when
          resume is issued without path recovery;
        - The I/Os above succeed when resume is issued after path recovery
          or table load;
        - Queued I/Os in the multipath target succeed when resume is issued
          with the DM_NOFLUSH_FLAG ioctl option after table load. I/Os
          spanning 2 multipath targets also succeed.
      
      The following tests are for the error paths of the new pushback feature:
        - When the bdget_disk() fails in dm_suspend(), the
          DMF_NOFLUSH_SUSPENDING flag is cleared and I/Os already queued to the
          pushback list are flushed properly.
        - When suspend with the DM_NOFLUSH_FLAG ioctl option is interrupted,
            o I/Os which had already been queued to the pushback list
              at the time don't return, and are re-issued at resume time;
            o I/Os which hadn't been returned at the time return with EIO.
      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>
      2e93ccc1
    • K
      [PATCH] dm: ioctl: add noflush suspend · 81fdb096
      Kiyoshi Ueda 提交于
      Provide a dm ioctl option to request noflush suspending.  (See next patch for
      what this is for.) As the interface is extended, the version number is
      incremented.
      
      Other than accepting the new option through the interface, There is no change
      to existing behaviour.
      
      Test results:
      Confirmed the option is given from user-space correctly.
      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>
      81fdb096
    • K
      [PATCH] dm: map and endio symbolic return codes · d2a7ad29
      Kiyoshi Ueda 提交于
      Update existing targets to use the new symbols for return values from target
      map and end_io functions.
      
      There is no effect on behaviour.
      
      Test results:
      Done build test without errors.
      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>
      d2a7ad29
    • 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
    • K
      [PATCH] dm: suspend: parameter change · a3d77d35
      Kiyoshi Ueda 提交于
      Change the interface of dm_suspend() so that we can pass several options
      without increasing the number of parameters.  The existing 'do_lockfs' integer
      parameter is replaced by a flag DM_SUSPEND_LOCKFS_FLAG.
      
      There is no functional change to the code.
      
      Test results:
      I have tested 'dmsetup suspend' command with/without the '--nolockfs'
      option and confirmed the do_lockfs value is correctly 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>
      a3d77d35
    • K
      [PATCH] dm: tidy core formatting · 74859364
      Kiyoshi Ueda 提交于
      Remove unnecessary spaces in dm.c.
      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>
      74859364
    • H
      [PATCH] dm io: fix bi_max_vecs · f00b16ad
      Heinz Mauelshagen 提交于
      The existing code allocates an extra slot in bi_io_vec[] and uses it to store
      the region number.
      
      This patch hides the extra slot from bio_add_page() so the region number can't
      get overwritten.
      
      Also remove a hard-coded SECTOR_SHIFT and fix a typo in a comment.
      Signed-off-by: NHeinz Mauelshagen <hjm@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      Cc: Milan Broz <mbroz@redhat.com>
      Cc: dm-devel@redhat.com
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      f00b16ad
    • D
      [PATCH] LOG2: Implement a general integer log2 facility in the kernel · f0d1b0b3
      David Howells 提交于
      This facility provides three entry points:
      
      	ilog2()		Log base 2 of unsigned long
      	ilog2_u32()	Log base 2 of u32
      	ilog2_u64()	Log base 2 of u64
      
      These facilities can either be used inside functions on dynamic data:
      
      	int do_something(long q)
      	{
      		...;
      		y = ilog2(x)
      		...;
      	}
      
      Or can be used to statically initialise global variables with constant values:
      
      	unsigned n = ilog2(27);
      
      When performing static initialisation, the compiler will report "error:
      initializer element is not constant" if asked to take a log of zero or of
      something not reducible to a constant.  They treat negative numbers as
      unsigned.
      
      When not dealing with a constant, they fall back to using fls() which permits
      them to use arch-specific log calculation instructions - such as BSR on
      x86/x86_64 or SCAN on FRV - if available.
      
      [akpm@osdl.org: MMC fix]
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Herbert Xu <herbert@gondor.apana.org.au>
      Cc: David Howells <dhowells@redhat.com>
      Cc: Wojtek Kaniewski <wojtekka@toxygen.net>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      f0d1b0b3
    • J
      [PATCH] struct path: convert md · c649bb9c
      Josef Sipek 提交于
      Signed-off-by: NJosef Sipek <jsipek@fsl.cs.sunysb.edu>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      c649bb9c
    • J
      [PATCH] struct path: rename DM's struct path · c922d5f7
      Josef "Jeff" Sipek 提交于
      Rename DM's struct path to struct dm_path to prevent name collision between it
      and struct path from fs/namei.c.
      Signed-off-by: NJosef "Jeff" Sipek <jsipek@cs.sunysb.edu>
      Acked-by: NAlasdair G Kergon <agk@redhat.com>
      Cc: <reiserfs-dev@namesys.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      c922d5f7
    • N
      [PATCH] lockdep: avoid lockdep warning in md · d63a5a74
      NeilBrown 提交于
      md_open takes ->reconfig_mutex which causes lockdep to complain.  This
      (normally) doesn't have deadlock potential as the possible conflict is with a
      reconfig_mutex in a different device.
      
      I say "normally" because if a loop were created in the array->member hierarchy
      a deadlock could happen.  However that causes bigger problems than a deadlock
      and should be fixed independently.
      
      So we flag the lock in md_open as a nested lock.  This requires defining
      mutex_lock_interruptible_nested.
      
      Cc: Ingo Molnar <mingo@elte.hu>
      Acked-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
      Acked-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NNeil Brown <neilb@suse.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      d63a5a74
    • P
      [PATCH] remove the old bd_mutex lockdep annotation · 2e7b651d
      Peter Zijlstra 提交于
      Remove the old complex and crufty bd_mutex annotation.
      Signed-off-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Neil Brown <neilb@cse.unsw.edu.au>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Arjan van de Ven <arjan@linux.intel.com>
      Cc: Jason Baron <jbaron@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      2e7b651d
  4. 08 12月, 2006 2 次提交
  5. 07 12月, 2006 3 次提交
  6. 22 11月, 2006 1 次提交
  7. 09 11月, 2006 5 次提交