mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-08 15:04:45 +00:00
md: Factor out is_md_suspended helper
This helper function will be used in next patch. It's easy for understanding. Signed-off-by: Xiao Ni <xni@redhat.com> Signed-off-by: Song Liu <song@kernel.org>
This commit is contained in:
parent
1d1f25bfda
commit
d19329133d
@ -380,6 +380,13 @@ EXPORT_SYMBOL_GPL(md_new_event);
|
|||||||
static LIST_HEAD(all_mddevs);
|
static LIST_HEAD(all_mddevs);
|
||||||
static DEFINE_SPINLOCK(all_mddevs_lock);
|
static DEFINE_SPINLOCK(all_mddevs_lock);
|
||||||
|
|
||||||
|
static bool is_md_suspended(struct mddev *mddev)
|
||||||
|
{
|
||||||
|
if (mddev->suspended)
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
/* Rather than calling directly into the personality make_request function,
|
/* Rather than calling directly into the personality make_request function,
|
||||||
* IO requests come here first so that we can check if the device is
|
* IO requests come here first so that we can check if the device is
|
||||||
* being suspended pending a reconfiguration.
|
* being suspended pending a reconfiguration.
|
||||||
@ -389,7 +396,7 @@ static DEFINE_SPINLOCK(all_mddevs_lock);
|
|||||||
*/
|
*/
|
||||||
static bool is_suspended(struct mddev *mddev, struct bio *bio)
|
static bool is_suspended(struct mddev *mddev, struct bio *bio)
|
||||||
{
|
{
|
||||||
if (mddev->suspended)
|
if (is_md_suspended(mddev))
|
||||||
return true;
|
return true;
|
||||||
if (bio_data_dir(bio) != WRITE)
|
if (bio_data_dir(bio) != WRITE)
|
||||||
return false;
|
return false;
|
||||||
@ -434,7 +441,7 @@ void md_handle_request(struct mddev *mddev, struct bio *bio)
|
|||||||
goto check_suspended;
|
goto check_suspended;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (atomic_dec_and_test(&mddev->active_io) && mddev->suspended)
|
if (atomic_dec_and_test(&mddev->active_io) && is_md_suspended(mddev))
|
||||||
wake_up(&mddev->sb_wait);
|
wake_up(&mddev->sb_wait);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(md_handle_request);
|
EXPORT_SYMBOL(md_handle_request);
|
||||||
@ -6219,7 +6226,7 @@ EXPORT_SYMBOL_GPL(md_stop_writes);
|
|||||||
static void mddev_detach(struct mddev *mddev)
|
static void mddev_detach(struct mddev *mddev)
|
||||||
{
|
{
|
||||||
md_bitmap_wait_behind_writes(mddev);
|
md_bitmap_wait_behind_writes(mddev);
|
||||||
if (mddev->pers && mddev->pers->quiesce && !mddev->suspended) {
|
if (mddev->pers && mddev->pers->quiesce && !is_md_suspended(mddev)) {
|
||||||
mddev->pers->quiesce(mddev, 1);
|
mddev->pers->quiesce(mddev, 1);
|
||||||
mddev->pers->quiesce(mddev, 0);
|
mddev->pers->quiesce(mddev, 0);
|
||||||
}
|
}
|
||||||
@ -8531,7 +8538,7 @@ bool md_write_start(struct mddev *mddev, struct bio *bi)
|
|||||||
return true;
|
return true;
|
||||||
wait_event(mddev->sb_wait,
|
wait_event(mddev->sb_wait,
|
||||||
!test_bit(MD_SB_CHANGE_PENDING, &mddev->sb_flags) ||
|
!test_bit(MD_SB_CHANGE_PENDING, &mddev->sb_flags) ||
|
||||||
mddev->suspended);
|
is_md_suspended(mddev));
|
||||||
if (test_bit(MD_SB_CHANGE_PENDING, &mddev->sb_flags)) {
|
if (test_bit(MD_SB_CHANGE_PENDING, &mddev->sb_flags)) {
|
||||||
percpu_ref_put(&mddev->writes_pending);
|
percpu_ref_put(&mddev->writes_pending);
|
||||||
return false;
|
return false;
|
||||||
@ -9259,7 +9266,7 @@ void md_check_recovery(struct mddev *mddev)
|
|||||||
wake_up(&mddev->sb_wait);
|
wake_up(&mddev->sb_wait);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mddev->suspended)
|
if (is_md_suspended(mddev))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (mddev->bitmap)
|
if (mddev->bitmap)
|
||||||
|
Loading…
Reference in New Issue
Block a user