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>
diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c
index 843d0af..bfe6975 100644
--- a/drivers/block/drbd/drbd_main.c
+++ b/drivers/block/drbd/drbd_main.c
@@ -208,7 +208,7 @@
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 @@
*/
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 @@
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;