summaryrefslogtreecommitdiffstats
path: root/drivers/block/drbd/drbd_worker.c
diff options
context:
space:
mode:
authorAndreas Gruenbacher2011-05-12 11:15:34 +0200
committerPhilipp Reisner2012-11-08 16:55:51 +0100
commit95f8efd08bcce65df994049a292b94e56c7ada67 (patch)
treea4a943aea52b65adc4ddabf736a30f66f83f6ed0 /drivers/block/drbd/drbd_worker.c
parentdrbd: Refer to connect-int consistently throughout the code (diff)
downloadkernel-qcow2-linux-95f8efd08bcce65df994049a292b94e56c7ada67.tar.gz
kernel-qcow2-linux-95f8efd08bcce65df994049a292b94e56c7ada67.tar.xz
kernel-qcow2-linux-95f8efd08bcce65df994049a292b94e56c7ada67.zip
drbd: Fix the upper limit of resync-after
The 32-bit resync_after netlink field takes a device minor number as parameter, which is no longer limited to 255. We cannot statically verify which device numbers are valid, so set the ummer limit to the highest possible signed 32-bit integer. 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.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/drivers/block/drbd/drbd_worker.c b/drivers/block/drbd/drbd_worker.c
index ec8f4245ef9a..6410c55831e0 100644
--- a/drivers/block/drbd/drbd_worker.c
+++ b/drivers/block/drbd/drbd_worker.c
@@ -57,7 +57,7 @@ static int w_make_ov_request(struct drbd_work *w, int cancel);
/* About the global_state_lock
Each state transition on an device holds a read lock. In case we have
- to evaluate the sync after dependencies, we grab a write lock, because
+ to evaluate the resync after dependencies, we grab a write lock, because
we need stable states on all devices for that. */
rwlock_t global_state_lock;
@@ -1340,17 +1340,17 @@ int w_restart_disk_io(struct drbd_work *w, int cancel)
static int _drbd_may_sync_now(struct drbd_conf *mdev)
{
struct drbd_conf *odev = mdev;
- int ra;
+ int resync_after;
while (1) {
if (!odev->ldev)
return 1;
rcu_read_lock();
- ra = rcu_dereference(odev->ldev->disk_conf)->resync_after;
+ resync_after = rcu_dereference(odev->ldev->disk_conf)->resync_after;
rcu_read_unlock();
- if (ra == -1)
+ if (resync_after == -1)
return 1;
- odev = minor_to_mdev(ra);
+ odev = minor_to_mdev(resync_after);
if (!expect(odev))
return 1;
if ((odev->state.conn >= C_SYNC_SOURCE &&
@@ -1426,36 +1426,36 @@ void suspend_other_sg(struct drbd_conf *mdev)
}
/* caller must hold global_state_lock */
-enum drbd_ret_code drbd_sync_after_valid(struct drbd_conf *mdev, int o_minor)
+enum drbd_ret_code drbd_resync_after_valid(struct drbd_conf *mdev, int o_minor)
{
struct drbd_conf *odev;
- int ra;
+ int resync_after;
if (o_minor == -1)
return NO_ERROR;
if (o_minor < -1 || minor_to_mdev(o_minor) == NULL)
- return ERR_SYNC_AFTER;
+ return ERR_RESYNC_AFTER;
/* check for loops */
odev = minor_to_mdev(o_minor);
while (1) {
if (odev == mdev)
- return ERR_SYNC_AFTER_CYCLE;
+ return ERR_RESYNC_AFTER_CYCLE;
rcu_read_lock();
- ra = rcu_dereference(odev->ldev->disk_conf)->resync_after;
+ resync_after = rcu_dereference(odev->ldev->disk_conf)->resync_after;
rcu_read_unlock();
/* dependency chain ends here, no cycles. */
- if (ra == -1)
+ if (resync_after == -1)
return NO_ERROR;
/* follow the dependency chain */
- odev = minor_to_mdev(ra);
+ odev = minor_to_mdev(resync_after);
}
}
/* caller must hold global_state_lock */
-void drbd_sync_after_changed(struct drbd_conf *mdev)
+void drbd_resync_after_changed(struct drbd_conf *mdev)
{
int changes;