Commit d1932913 authored by Xiao Ni's avatar Xiao Ni Committed by Song Liu

md: Factor out is_md_suspended helper

This helper function will be used in next patch. It's easy for
understanding.
Signed-off-by: default avatarXiao Ni <xni@redhat.com>
Signed-off-by: default avatarSong Liu <song@kernel.org>
parent 1d1f25bf
...@@ -380,6 +380,13 @@ EXPORT_SYMBOL_GPL(md_new_event); ...@@ -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); ...@@ -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) ...@@ -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); ...@@ -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) ...@@ -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) ...@@ -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)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment