diff options
author | Lars Ellenberg <lars.ellenberg@linbit.com> | 2011-11-17 11:49:46 +0100 |
---|---|---|
committer | Philipp Reisner <philipp.reisner@linbit.com> | 2012-11-08 16:58:33 +0100 |
commit | b379c41ed78e83c4443fca4dbfbc358c19e4f24c (patch) | |
tree | 4e5a3d472c67835406e4c511ada0277b97798c26 /drivers/block/drbd/drbd_main.c | |
parent | drbd: rename drbd_restart_write to drbd_restart_request (diff) | |
download | linux-b379c41ed78e83c4443fca4dbfbc358c19e4f24c.tar.xz linux-b379c41ed78e83c4443fca4dbfbc358c19e4f24c.zip |
drbd: transfer log epoch numbers are now per resource
cherry-picked from drbd 9 devel branch.
In preparation of multiple connections, the "barrier number" or
"epoch number" needs to be tracked per-resource, not per connection.
The sequence number space will not be reset anymore.
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_main.c')
-rw-r--r-- | drivers/block/drbd/drbd_main.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c index 843d0af68f96..bfe6975ef94c 100644 --- a/drivers/block/drbd/drbd_main.c +++ b/drivers/block/drbd/drbd_main.c @@ -208,7 +208,7 @@ static int tl_init(struct drbd_tconn *tconn) INIT_LIST_HEAD(&b->requests); INIT_LIST_HEAD(&b->w.list); b->next = NULL; - b->br_number = 4711; + b->br_number = atomic_inc_return(&tconn->current_tle_nr); b->n_writes = 0; b->w.cb = NULL; /* if this is != NULL, we need to dec_ap_pending in tl_clear */ @@ -241,16 +241,13 @@ static void tl_cleanup(struct drbd_tconn *tconn) */ void _tl_add_barrier(struct drbd_tconn *tconn, struct drbd_tl_epoch *new) { - struct drbd_tl_epoch *newest_before; - INIT_LIST_HEAD(&new->requests); INIT_LIST_HEAD(&new->w.list); new->w.cb = NULL; /* if this is != NULL, we need to dec_ap_pending in tl_clear */ new->next = NULL; new->n_writes = 0; - newest_before = tconn->newest_tle; - new->br_number = newest_before->br_number+1; + new->br_number = atomic_inc_return(&tconn->current_tle_nr); if (tconn->newest_tle != new) { tconn->newest_tle->next = new; tconn->newest_tle = new; @@ -406,7 +403,7 @@ void _tl_restart(struct drbd_tconn *tconn, enum drbd_req_event what) list_splice(&carry_reads, &b->requests); INIT_LIST_HEAD(&b->w.list); b->w.cb = NULL; - b->br_number = net_random(); + b->br_number = atomic_inc_return(&tconn->current_tle_nr); b->n_writes = 0; *pn = b; |