<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/block/drbd, branch v3.9</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/drivers/block/drbd?h=v3.9</id>
<link rel='self' href='https://git.amat.us/linux/atom/drivers/block/drbd?h=v3.9'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2013-02-28T03:10:15Z</updated>
<entry>
<title>drbd: convert to idr_alloc()</title>
<updated>2013-02-28T03:10:15Z</updated>
<author>
<name>Tejun Heo</name>
<email>tj@kernel.org</email>
</author>
<published>2013-02-28T01:04:01Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=56de210245487ef1f1416c8ec9e581ebdd0d32ec'/>
<id>urn:sha1:56de210245487ef1f1416c8ec9e581ebdd0d32ec</id>
<content type='text'>
Convert to the much saner new idr interface.

Signed-off-by: Tejun Heo &lt;tj@kernel.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>drbd: fix potential protocol error and resulting disconnect/reconnect</title>
<updated>2013-01-21T21:58:36Z</updated>
<author>
<name>Lars Ellenberg</name>
<email>lars.ellenberg@linbit.com</email>
</author>
<published>2013-01-21T14:43:41Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2681f7f6ce6c7416eb619d0fb19422bcc68bd9e1'/>
<id>urn:sha1:2681f7f6ce6c7416eb619d0fb19422bcc68bd9e1</id>
<content type='text'>
When we notice a disk failure on the receiving side,
we stop sending it new incoming writes.

Depending on exact timing of various events, the same transfer log epoch
could end up containing both replicated (before we noticed the failure)
and local-only requests (after we noticed the failure).

The sanity checks in tl_release(), called when receiving a
P_BARRIER_ACK, check that the ack'ed transfer log epoch matches
the expected epoch, and the number of contained writes matches
the number of ack'ed writes.

In this case, they counted both replicated and local-only writes,
but the peer only acknowledges those it has seen.  We get a mismatch,
resulting in a protocol error and disconnect/reconnect cycle.

Messages logged are
  "BAD! BarrierAck #%u received with n_writes=%u, expected n_writes=%u!\n"

A similar issue can also be triggered when starting a resync while
having a healthy replication link, by invalidating one side, forcing a
full sync, or attaching to a diskless node.

Fix this by closing the current epoch if the state changes in a way
that would cause the replication intent of the next write.

Epochs now contain either only non-replicated,
or only replicated writes.

Signed-off-by: Philipp Reisner &lt;philipp.reisner@linbit.com&gt;
Signed-off-by: Lars Ellenberg &lt;lars.ellenberg@linbit.com&gt;
</content>
</entry>
<entry>
<title>drbd: update Kconfig to match current dependencies</title>
<updated>2012-12-06T12:08:29Z</updated>
<author>
<name>Lars Ellenberg</name>
<email>lars.ellenberg@linbit.com</email>
</author>
<published>2012-12-06T10:11:04Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d2ec180c23a5a1bfe34d8638b0342a47c00cf70f'/>
<id>urn:sha1:d2ec180c23a5a1bfe34d8638b0342a47c00cf70f</id>
<content type='text'>
We no longer need the connector.
But we need libcrc32c.

Signed-off-by: Philipp Reisner &lt;philipp.reisner@linbit.com&gt;
Signed-off-by: Lars Ellenberg &lt;lars.ellenberg@linbit.com&gt;
</content>
</entry>
<entry>
<title>drbd: Fix drbdsetup wait-connect, wait-sync etc... commands</title>
<updated>2012-12-06T12:04:34Z</updated>
<author>
<name>Philipp Reisner</name>
<email>philipp.reisner@linbit.com</email>
</author>
<published>2012-12-06T09:34:34Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=ef86b77957a97315d43ff72c9b83361ba1a07963'/>
<id>urn:sha1:ef86b77957a97315d43ff72c9b83361ba1a07963</id>
<content type='text'>
This was introduces when moving the code over from the 8.3 codebase
with commit 328e0f125bf41f4f33f684db22015f92cb44fe56

Signed-off-by: Philipp Reisner &lt;philipp.reisner@linbit.com&gt;
Signed-off-by: Lars Ellenberg &lt;lars.ellenberg@linbit.com&gt;
</content>
</entry>
<entry>
<title>drbd: close race between drbd_set_role and drbd_connect</title>
<updated>2012-12-06T12:00:33Z</updated>
<author>
<name>Philipp Reisner</name>
<email>philipp.reisner@linbit.com</email>
</author>
<published>2012-11-22T16:06:00Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=13c76aba7846647f86d479293ae0a0adc1ca840a'/>
<id>urn:sha1:13c76aba7846647f86d479293ae0a0adc1ca840a</id>
<content type='text'>
drbd_set_role(, R_PRIMARY, ) does the state change to Primary,
some more housekeeping, and possibly generates a new UUID set.

All of this holding the "state_mutex".

The connection handshake involves sending of various state information,
including the current data generation UUID set, and two connection
state changes from C_WF_CONNECTION to C_WF_REPORT_PARAMS further to
a number of different outcomes, resync being one of them.

If the connection handshake happens between the state change to Primary
and the generation of the new UUIDs, the resync decision based on the
old UUID set may be confused, depending on circumstances.

Make sure that, before we do the handshake, any promotion to Primary
role will either be complete (including the housekeeping stuff), or can
see, and serialize with, the ongoing handshake, based on the
"STATE_SENT" bit, which is set when we start the handshake, and cleared
only when we leave C_WF_REPORT_PARAMS again.

Signed-off-by: Philipp Reisner &lt;philipp.reisner@linbit.com&gt;
Signed-off-by: Lars Ellenberg &lt;lars.ellenberg@linbit.com&gt;
</content>
</entry>
<entry>
<title>drbd: respect no-md-barriers setting also when changed online via disk-options</title>
<updated>2012-12-06T12:00:04Z</updated>
<author>
<name>Lars Ellenberg</name>
<email>lars.ellenberg@linbit.com</email>
</author>
<published>2012-10-25T22:41:50Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=691631c0652bc47e6d20b0d981e23a9025fd794e'/>
<id>urn:sha1:691631c0652bc47e6d20b0d981e23a9025fd794e</id>
<content type='text'>
We need to propagate the configuration into the flag bits,
or it won't be effective.

Signed-off-by: Philipp Reisner &lt;philipp.reisner@linbit.com&gt;
Signed-off-by: Lars Ellenberg &lt;lars.ellenberg@linbit.com&gt;
</content>
</entry>
<entry>
<title>drbd: Remove obsolete check</title>
<updated>2012-12-06T11:09:55Z</updated>
<author>
<name>Philipp Reisner</name>
<email>philipp.reisner@linbit.com</email>
</author>
<published>2012-11-16T11:27:41Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=298307ed1d2ac4815b0ce9a5f1c9cc643f4a9aca'/>
<id>urn:sha1:298307ed1d2ac4815b0ce9a5f1c9cc643f4a9aca</id>
<content type='text'>
Smatch complained about it this redundanct check.

The check was introduced in 2006-09-13. On 2007-07-24 the body of the
function was enclosed by get_ldev()/put_ldev() reference counting.
Since then the check is useless and miss leading.

Signed-off-by: Philipp Reisner &lt;philipp.reisner@linbit.com&gt;
Signed-off-by: Lars Ellenberg &lt;lars.ellenberg@linbit.com&gt;
</content>
</entry>
<entry>
<title>drbd: fixup after wait_even_lock_irq() addition to generic code</title>
<updated>2012-11-30T20:20:15Z</updated>
<author>
<name>Jens Axboe</name>
<email>axboe@kernel.dk</email>
</author>
<published>2012-11-30T20:20:15Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2cecb7309897c872b977a60d53e5de0af4265dd6'/>
<id>urn:sha1:2cecb7309897c872b977a60d53e5de0af4265dd6</id>
<content type='text'>
Compiling drbd yields:

drivers/block/drbd/drbd_state.c: In function ‘_conn_request_state’:
drivers/block/drbd/drbd_state.c:1804:5: error: macro "wait_event_lock_irq" passed 4 arguments, but takes just 3
drivers/block/drbd/drbd_state.c:1801:3: error: ‘wait_event_lock_irq’ undeclared (first use in this function)
drivers/block/drbd/drbd_state.c:1801:3: note: each undeclared identifier is reported only once for each function it appears in
drivers/block/drbd/drbd_state.c: At top level:
drivers/block/drbd/drbd_state.c:1734:1: warning: ‘_conn_rq_cond’ defined but not used [-Wunused-function]

Due to drbd having copied the MD definition for wait_event_lock_irq()
as well. Kill them.

Signed-off-by: Jens Axboe &lt;axboe@kernel.dk&gt;
</content>
</entry>
<entry>
<title>drbd: use copy_highpage</title>
<updated>2012-11-09T13:22:26Z</updated>
<author>
<name>Akinobu Mita</name>
<email>akinobu.mita@gmail.com</email>
</author>
<published>2012-11-09T00:12:31Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f1d6a328bbe63b528721a25251ad8f5f1e997804'/>
<id>urn:sha1:f1d6a328bbe63b528721a25251ad8f5f1e997804</id>
<content type='text'>
Use copy_highpage() to copy from one page to another.

Signed-off-by: Akinobu Mita &lt;akinobu.mita@gmail.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Philipp Reisner &lt;philipp.reisner@linbit.com&gt;
Signed-off-by: Lars Ellenberg &lt;lars.ellenberg@linbit.com&gt;
</content>
</entry>
<entry>
<title>drbd: if the replication link breaks during handshake, keep retrying</title>
<updated>2012-11-09T13:22:19Z</updated>
<author>
<name>Lars Ellenberg</name>
<email>lars.ellenberg@linbit.com</email>
</author>
<published>2012-11-05T10:54:30Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=ed635cb0674d6e4303d1a2e27d9e6e80b451a338'/>
<id>urn:sha1:ed635cb0674d6e4303d1a2e27d9e6e80b451a338</id>
<content type='text'>
The 8.3.12 commit drbd: Bugfix for the connection behavior fixes a
"wasted established connection", if a former connection attempt failed
during its early stages.

However it opened a window for a regression, if a connection attempt
fails during its last stages.  The result was a terminated receiver
thread, that left behind the supposedly transient "C_UNCONNECTED" state.
Any later requests to change the connection state fail, as they wait for
the connection state to "stabilize".

Fix: short circuit and keep retrying to restablish a new connection,
if we don't reach C_WF_REPORT_PARAMS.

Signed-off-by: Philipp Reisner &lt;philipp.reisner@linbit.com&gt;
Signed-off-by: Lars Ellenberg &lt;lars.ellenberg@linbit.com&gt;
</content>
</entry>
</feed>
