diff options
author | Lars Ellenberg <lars.ellenberg@linbit.com> | 2012-05-07 13:53:08 +0400 |
---|---|---|
committer | Philipp Reisner <philipp.reisner@linbit.com> | 2012-11-08 19:58:27 +0400 |
commit | 07be15b12c41dbc5ceae130be2e0b655f7611691 (patch) | |
tree | afe16c611f46a62fa9ed50fa138ddf00e8f7f547 /drivers/block/drbd/drbd_int.h | |
parent | 3ea35df83fe5e081c793a65361f912ec0835213b (diff) | |
download | linux-07be15b12c41dbc5ceae130be2e0b655f7611691.tar.xz |
drbd: fix resend/resubmit of frozen IO
DRBD can freeze IO, due to fencing policy (fencing resource-and-stonith),
or because we lost access to data (on-no-data-accessible suspend-io).
Resuming from there (re-connect, or re-attach, or explicit admin
intervention) should "just work".
Unfortunately, if the re-attach/re-connect did not happen within
the timeout, since the commit
drbd: Implemented real timeout checking for request processing time
if so configured, the request_timer_fn() would timeout and
detach/disconnect virtually immediately.
This change tracks the most recent attach and connect, and does not
timeout within <configured timeout interval> after attach/connect.
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_int.h')
-rw-r--r-- | drivers/block/drbd/drbd_int.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/block/drbd/drbd_int.h b/drivers/block/drbd/drbd_int.h index 4fad3f565aba..976e78cadd3e 100644 --- a/drivers/block/drbd/drbd_int.h +++ b/drivers/block/drbd/drbd_int.h @@ -859,6 +859,7 @@ struct drbd_tconn { /* is a resource from the config file */ unsigned int epochs; enum write_ordering_e write_ordering; + unsigned long last_reconnect_jif; struct drbd_thread receiver; struct drbd_thread worker; struct drbd_thread asender; @@ -881,6 +882,7 @@ struct drbd_conf { struct block_device *this_bdev; struct gendisk *vdisk; + unsigned long last_reattach_jif; struct drbd_work resync_work, unplug_work, go_diskless, |