1. 09 Feb, 2011 1 commit
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://neil.brown.name/md · ae8eed2d
      Linus Torvalds authored
      * 'for-linus' of git://neil.brown.name/md:
        FIX: md: process hangs at wait_barrier after 0->10 takeover
        md_make_request: don't touch the bio after calling make_request
        md: Don't allow slot_store while resync/recovery is happening.
        md: don't clear curr_resync_completed at end of resync.
        md: Don't use remove_and_add_spares to remove failed devices from a read-only array
        Add raid1->raid0 takeover support
        md: Remove the AllReserved flag for component devices.
        md: don't abort checking spares as soon as one cannot be added.
        md: fix the test for finding spares in raid5_start_reshape.
        md: simplify some 'if' conditionals in raid5_start_reshape.
        md: revert change to raid_disks on failure.
      ae8eed2d
  2. 08 Feb, 2011 2 commits
    • Krzysztof Wojcik's avatar
      FIX: md: process hangs at wait_barrier after 0->10 takeover · 02214dc5
      Krzysztof Wojcik authored
      Following symptoms were observed:
      1. After raid0->raid10 takeover operation we have array with 2
      missing disks.
      When we add disk for rebuild, recovery process starts as expected
      but it does not finish- it stops at about 90%, md126_resync process
      hangs in "D" state.
      2. Similar behavior is when we have mounted raid0 array and we
      execute takeover to raid10. After this when we try to unmount array-
      it causes process umount hangs in "D"
      
      In scenarios above processes hang at the same function- wait_barrier
      in raid10.c.
      Process waits in macro "wait_event_lock_irq" until the
      "!conf->barrier" condition will be true.
      In scenarios above it never happens.
      
      Reason was that at the end of level_store, after calling pers->run,
      we call mddev_resume. This calls pers->quiesce(mddev, 0) with
      RAID10, that calls lower_barrier.
      However raise_barrier hadn't been called on that 'conf' yet,
      so conf->barrier becomes negative, which is bad.
      
      This patch introduces setting conf->barrier=1 after takeover
      operation. It prevents to become barrier negative after call
      lower_barrier().
      Signed-off-by: default avatarKrzysztof Wojcik <krzysztof.wojcik@intel.com>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      02214dc5
    • Linus Torvalds's avatar
      Linux 2.6.38-rc4 · 100b33c8
      Linus Torvalds authored
      100b33c8
  3. 07 Feb, 2011 29 commits
  4. 06 Feb, 2011 8 commits