diff options
author | Lars Ellenberg <lars.ellenberg@linbit.com> | 2011-02-21 07:20:54 -0500 |
---|---|---|
committer | Philipp Reisner <philipp.reisner@linbit.com> | 2011-10-14 10:47:41 -0400 |
commit | 61610420f764acb835af4a450251dbab2ab6d621 (patch) | |
tree | 5f69d311340df80571d6e8655214ead7df598eea | |
parent | 867f57483b1759f8cd76ec31ff1f37abde5ad577 (diff) |
drbd: in drbd_suspend_al, set AL_SUSPENDED before unlocking the activity log
As using an empty activity log is the whole point of the excercise,
make sure it is still empty when setting AL_SUSPENDED.
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
-rw-r--r-- | drivers/block/drbd/drbd_nl.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c index d6832f8d49a5..ae8f42e38e4f 100644 --- a/drivers/block/drbd/drbd_nl.c +++ b/drivers/block/drbd/drbd_nl.c | |||
@@ -901,19 +901,17 @@ static void drbd_suspend_al(struct drbd_conf *mdev) | |||
901 | { | 901 | { |
902 | int s = 0; | 902 | int s = 0; |
903 | 903 | ||
904 | if (lc_try_lock(mdev->act_log)) { | 904 | if (!lc_try_lock(mdev->act_log)) { |
905 | drbd_al_shrink(mdev); | ||
906 | lc_unlock(mdev->act_log); | ||
907 | } else { | ||
908 | dev_warn(DEV, "Failed to lock al in drbd_suspend_al()\n"); | 905 | dev_warn(DEV, "Failed to lock al in drbd_suspend_al()\n"); |
909 | return; | 906 | return; |
910 | } | 907 | } |
911 | 908 | ||
909 | drbd_al_shrink(mdev); | ||
912 | spin_lock_irq(&mdev->tconn->req_lock); | 910 | spin_lock_irq(&mdev->tconn->req_lock); |
913 | if (mdev->state.conn < C_CONNECTED) | 911 | if (mdev->state.conn < C_CONNECTED) |
914 | s = !test_and_set_bit(AL_SUSPENDED, &mdev->flags); | 912 | s = !test_and_set_bit(AL_SUSPENDED, &mdev->flags); |
915 | |||
916 | spin_unlock_irq(&mdev->tconn->req_lock); | 913 | spin_unlock_irq(&mdev->tconn->req_lock); |
914 | lc_unlock(mdev->act_log); | ||
917 | 915 | ||
918 | if (s) | 916 | if (s) |
919 | dev_info(DEV, "Suspended AL updates\n"); | 917 | dev_info(DEV, "Suspended AL updates\n"); |