Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 242885
b: refs/heads/master
c: 794abb7
h: refs/heads/master
i:
  242883: 7b432f8
v: v3
  • Loading branch information
Philipp Reisner committed Mar 10, 2011
1 parent 35ba777 commit 4df52e7
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 40 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: da0a78161d2b2da4819a1f05a38bb1dcbe02d951
refs/heads/master: 794abb753e29e85949b3719dbc2ab6a98711a47e
2 changes: 1 addition & 1 deletion trunk/drivers/block/drbd/drbd_int.h
Original file line number Diff line number Diff line change
Expand Up @@ -1540,7 +1540,7 @@ extern int w_e_end_csum_rs_req(struct drbd_conf *, struct drbd_work *, int);
extern int w_e_end_ov_reply(struct drbd_conf *, struct drbd_work *, int);
extern int w_e_end_ov_req(struct drbd_conf *, struct drbd_work *, int);
extern int w_ov_finished(struct drbd_conf *, struct drbd_work *, int);
extern int w_resync_inactive(struct drbd_conf *, struct drbd_work *, int);
extern int w_resync_timer(struct drbd_conf *, struct drbd_work *, int);
extern int w_resume_next_sg(struct drbd_conf *, struct drbd_work *, int);
extern int w_send_write_hint(struct drbd_conf *, struct drbd_work *, int);
extern int w_send_dblock(struct drbd_conf *, struct drbd_work *, int);
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/block/drbd/drbd_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -2978,7 +2978,7 @@ void drbd_init_set_defaults(struct drbd_conf *mdev)
INIT_LIST_HEAD(&mdev->start_resync_work.list);
INIT_LIST_HEAD(&mdev->bm_io_work.w.list);

mdev->resync_work.cb = w_resync_inactive;
mdev->resync_work.cb = w_resync_timer;
mdev->unplug_work.cb = w_send_write_hint;
mdev->go_diskless.cb = w_go_diskless;
mdev->md_sync_work.cb = w_md_sync;
Expand Down
48 changes: 11 additions & 37 deletions trunk/drivers/block/drbd/drbd_worker.c
Original file line number Diff line number Diff line change
Expand Up @@ -253,13 +253,6 @@ int w_read_retry_remote(struct drbd_conf *mdev, struct drbd_work *w, int cancel)
return w_send_read_req(mdev, w, 0);
}

int w_resync_inactive(struct drbd_conf *mdev, struct drbd_work *w, int cancel)
{
ERR_IF(cancel) return 1;
dev_err(DEV, "resync inactive, but callback triggered??\n");
return 1; /* Simply ignore this! */
}

void drbd_csum_ee(struct drbd_conf *mdev, struct crypto_hash *tfm, struct drbd_epoch_entry *e, void *digest)
{
struct hash_desc desc;
Expand Down Expand Up @@ -389,26 +382,25 @@ static int read_for_csum(struct drbd_conf *mdev, sector_t sector, int size)
return -EAGAIN;
}

void resync_timer_fn(unsigned long data)
int w_resync_timer(struct drbd_conf *mdev, struct drbd_work *w, int cancel)
{
struct drbd_conf *mdev = (struct drbd_conf *) data;
int queue;

queue = 1;
switch (mdev->state.conn) {
case C_VERIFY_S:
mdev->resync_work.cb = w_make_ov_request;
w_make_ov_request(mdev, w, cancel);
break;
case C_SYNC_TARGET:
mdev->resync_work.cb = w_make_resync_request;
w_make_resync_request(mdev, w, cancel);
break;
default:
queue = 0;
mdev->resync_work.cb = w_resync_inactive;
}

/* harmless race: list_empty outside data.work.q_lock */
if (list_empty(&mdev->resync_work.list) && queue)
return 1;
}

void resync_timer_fn(unsigned long data)
{
struct drbd_conf *mdev = (struct drbd_conf *) data;

if (list_empty(&mdev->resync_work.list))
drbd_queue_work(&mdev->data.work, &mdev->resync_work);
}

Expand Down Expand Up @@ -525,15 +517,6 @@ static int w_make_resync_request(struct drbd_conf *mdev,
if (unlikely(cancel))
return 1;

if (unlikely(mdev->state.conn < C_CONNECTED)) {
dev_err(DEV, "Confused in w_make_resync_request()! cstate < Connected");
return 0;
}

if (mdev->state.conn != C_SYNC_TARGET)
dev_err(DEV, "%s in w_make_resync_request\n",
drbd_conn_str(mdev->state.conn));

if (mdev->rs_total == 0) {
/* empty resync? */
drbd_resync_finished(mdev);
Expand All @@ -546,7 +529,6 @@ static int w_make_resync_request(struct drbd_conf *mdev,
to continue resync with a broken disk makes no sense at
all */
dev_err(DEV, "Disk broke down during resync!\n");
mdev->resync_work.cb = w_resync_inactive;
return 1;
}

Expand Down Expand Up @@ -580,7 +562,6 @@ static int w_make_resync_request(struct drbd_conf *mdev,

if (bit == DRBD_END_OF_BITMAP) {
mdev->bm_resync_fo = drbd_bm_bits(mdev);
mdev->resync_work.cb = w_resync_inactive;
put_ldev(mdev);
return 1;
}
Expand Down Expand Up @@ -676,7 +657,6 @@ static int w_make_resync_request(struct drbd_conf *mdev,
* resync data block, and the last bit is cleared.
* until then resync "work" is "inactive" ...
*/
mdev->resync_work.cb = w_resync_inactive;
put_ldev(mdev);
return 1;
}
Expand All @@ -697,17 +677,11 @@ static int w_make_ov_request(struct drbd_conf *mdev, struct drbd_work *w, int ca
if (unlikely(cancel))
return 1;

if (unlikely(mdev->state.conn < C_CONNECTED)) {
dev_err(DEV, "Confused in w_make_ov_request()! cstate < Connected");
return 0;
}

number = drbd_rs_number_requests(mdev);

sector = mdev->ov_position;
for (i = 0; i < number; i++) {
if (sector >= capacity) {
mdev->resync_work.cb = w_resync_inactive;
return 1;
}

Expand Down

0 comments on commit 4df52e7

Please sign in to comment.