One for md fix for 4.4-rc

Fix a regression which causes reshape to not start properly
 sometimes.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iQIcBAABCAAGBQJWe2M0AAoJEDnsnt1WYoG5NmEQAIUUMJ632WW98bWzWiuD3tWe
 698jML87O/5JZ796RPF2xVmYqQsJXj8i0157/ncHhmxnszI+yu7iHMnbt5LEesOG
 5/p4dnKXxjao6NnTFHdIWT4SAamj9KsLDb9M+ZCkYZIHJpeNC8uLO7mZB5cszOuy
 rXC5WLs4s4GrkZirnUlYLux89ZG7Xwp/1K7ccYrilbCJGk3mDqk/cLO2Jid6wUHD
 QbK2gw1sg2TK8jy5RX3+BMnk46P/Tlp061eoBjyHeI5oJZiwHuHQKbJ236py7u/k
 erjpfzrWNddrqbsBzVf1xw56KwvxpGoivvXLn4gGDogfeZ0eKarG5PrZ3zN9K6Ij
 gIz1gfIwZYq4N+46wDJpdG+By4tg8BGYzn8YiEHnI8Ouvfts85i/KdmfeeUBQEv1
 sk7yC75duKQOL5xyEPBorouVb/5C5sUpYl8c4B0F+baRYfh+aepD5Jn40dWTzvUC
 eA65NFuvSOe7IYpNdzQZOzcwxLMu4gLqQOpoAzmVJI6s9NLA+f+EHhpHNuTqwWbm
 G5mwnnFyZiwN21AC+ix+Otr/7+WIRvblmcuNqqk/t5QX0yGIGIvykBN1YQ10Cstk
 f2RHGZCtcl0vOhyFwXm4j5rpinkJLoDMU14G1hAYGRJMvItuuDDeG+Vl9KaxKPtE
 t7owWN5Tam5WsQd3qZ+y
 =koo+
 -----END PGP SIGNATURE-----

Merge tag 'md/4.4-rc6-fix' of git://neil.brown.name/md

Pull md bugfix from Neil Brown:
 "One more md fix for 4.4-rc

  Fix a regression which causes reshape to not start properly sometimes"

* tag 'md/4.4-rc6-fix' of git://neil.brown.name/md:
  md: remove check for MD_RECOVERY_NEEDED in action_store.
This commit is contained in:
Linus Torvalds 2015-12-26 20:04:25 -08:00
commit f0cf008f6b

View File

@ -4326,8 +4326,7 @@ action_store(struct mddev *mddev, const char *page, size_t len)
} }
mddev_unlock(mddev); mddev_unlock(mddev);
} }
} else if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) || } else if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery))
test_bit(MD_RECOVERY_NEEDED, &mddev->recovery))
return -EBUSY; return -EBUSY;
else if (cmd_match(page, "resync")) else if (cmd_match(page, "resync"))
clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery);
@ -4340,8 +4339,12 @@ action_store(struct mddev *mddev, const char *page, size_t len)
return -EINVAL; return -EINVAL;
err = mddev_lock(mddev); err = mddev_lock(mddev);
if (!err) { if (!err) {
clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery))
err = mddev->pers->start_reshape(mddev); err = -EBUSY;
else {
clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery);
err = mddev->pers->start_reshape(mddev);
}
mddev_unlock(mddev); mddev_unlock(mddev);
} }
if (err) if (err)