diff options
author | Philipp Reisner | 2011-05-03 14:27:15 +0200 |
---|---|---|
committer | Philipp Reisner | 2012-11-08 16:55:42 +0100 |
commit | dc97b70801667ea8b1432b37f5c122405c8d6f96 (patch) | |
tree | 86181fbaa969b64ab4c3cee2ef7ac82f11667aba /drivers/block/drbd/drbd_worker.c | |
parent | drbd: drbd_dew_dev_size() gets the user requests disk_size as argument (diff) | |
download | kernel-qcow2-linux-dc97b70801667ea8b1432b37f5c122405c8d6f96.tar.gz kernel-qcow2-linux-dc97b70801667ea8b1432b37f5c122405c8d6f96.tar.xz kernel-qcow2-linux-dc97b70801667ea8b1432b37f5c122405c8d6f96.zip |
drbd: Split drbd_alter_sa() into drbd_sync_after_valid() and drbd_sync_after_changed()
Preparing RCU for disk_conf
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Diffstat (limited to 'drivers/block/drbd/drbd_worker.c')
-rw-r--r-- | drivers/block/drbd/drbd_worker.c | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/drivers/block/drbd/drbd_worker.c b/drivers/block/drbd/drbd_worker.c index 0da1547bb2d2..5b645e107080 100644 --- a/drivers/block/drbd/drbd_worker.c +++ b/drivers/block/drbd/drbd_worker.c @@ -1401,7 +1401,8 @@ void suspend_other_sg(struct drbd_conf *mdev) write_unlock_irq(&global_state_lock); } -static int sync_after_error(struct drbd_conf *mdev, int o_minor) +/* caller must hold global_state_lock */ +enum drbd_ret_code drbd_sync_after_valid(struct drbd_conf *mdev, int o_minor) { struct drbd_conf *odev; @@ -1425,22 +1426,15 @@ static int sync_after_error(struct drbd_conf *mdev, int o_minor) } } -int drbd_alter_sa(struct drbd_conf *mdev, int na) +/* caller must hold global_state_lock */ +void drbd_sync_after_changed(struct drbd_conf *mdev) { int changes; - int retcode; - write_lock_irq(&global_state_lock); - retcode = sync_after_error(mdev, na); - if (retcode == NO_ERROR) { - mdev->ldev->dc.resync_after = na; - do { - changes = _drbd_pause_after(mdev); - changes |= _drbd_resume_next(mdev); - } while (changes); - } - write_unlock_irq(&global_state_lock); - return retcode; + do { + changes = _drbd_pause_after(mdev); + changes |= _drbd_resume_next(mdev); + } while (changes); } void drbd_rs_controller_reset(struct drbd_conf *mdev) |