<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/block/drbd, branch v3.0.79</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/drivers/block/drbd?h=v3.0.79</id>
<link rel='self' href='https://git.amat.us/linux/atom/drivers/block/drbd?h=v3.0.79'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2013-05-19T17:04:48Z</updated>
<entry>
<title>drbd: fix for deadlock when using automatic split-brain-recovery</title>
<updated>2013-05-19T17:04:48Z</updated>
<author>
<name>Philipp Reisner</name>
<email>philipp.reisner@linbit.com</email>
</author>
<published>2013-03-27T13:08:47Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d8b1123f949c5463421ec0a66bbca21e0a5feba0'/>
<id>urn:sha1:d8b1123f949c5463421ec0a66bbca21e0a5feba0</id>
<content type='text'>
commit 7c689e63a847316c1b2500f86891b0a574ce7e69 upstream.

With an automatic after split-brain recovery policy of
"after-sb-1pri call-pri-lost-after-sb",
when trying to drbd_set_role() to R_SECONDARY,
we run into a deadlock.

This was first recognized and supposedly fixed by
2009-06-10 "Fixed a deadlock when using automatic split brain recovery when both nodes are"
replacing drbd_set_role() with drbd_change_state() in that code-path,
but the first hunk of that patch forgets to remove the drbd_set_role().

We apparently only ever tested the "two primaries" case.

Signed-off-by: Philipp Reisner &lt;philipp.reisner@linbit.com&gt;
Signed-off-by: Lars Ellenberg &lt;lars.ellenberg@linbit.com&gt;
Signed-off-by: Jens Axboe &lt;axboe@kernel.dk&gt;
Signed-off-by: Jonghwan Choi &lt;jhbird.choi@samsung.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>drbd: add missing part_round_stats to _drbd_start_io_acct</title>
<updated>2013-01-21T19:44:59Z</updated>
<author>
<name>Philipp Reisner</name>
<email>philipp.reisner@linbit.com</email>
</author>
<published>2012-02-23T11:56:26Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2ff95abca6fe594a7c9182d96fa4aa37997c4a86'/>
<id>urn:sha1:2ff95abca6fe594a7c9182d96fa4aa37997c4a86</id>
<content type='text'>
commit 72585d2428fa3a0daab02ebad1f41e5ef517dbaa upstream.

Without this, iostat frequently sees bogus svctime and &gt;= 100% "utilization".

Signed-off-by: Philipp Reisner &lt;philipp.reisner@linbit.com&gt;
Signed-off-by: Lars Ellenberg &lt;lars.ellenberg@linbit.com&gt;
Cc: Raoul Bhatia &lt;raoul@bhatia.at&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>Merge branch 'for-3.0-important' of git://git.drbd.org/linux-2.6-drbd into for-linus</title>
<updated>2011-06-30T08:10:50Z</updated>
<author>
<name>Jens Axboe</name>
<email>jaxboe@fusionio.com</email>
</author>
<published>2011-06-30T08:10:50Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=7b28afe01ab6ffb5f152f47831b44933facd2328'/>
<id>urn:sha1:7b28afe01ab6ffb5f152f47831b44933facd2328</id>
<content type='text'>
</content>
</entry>
<entry>
<title>drbd: we should write meta data updates with FLUSH FUA</title>
<updated>2011-06-30T07:23:46Z</updated>
<author>
<name>Lars Ellenberg</name>
<email>lars.ellenberg@linbit.com</email>
</author>
<published>2011-06-28T11:22:48Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=86e1e98e5c6b4edab97e2b058466ef553cfd878e'/>
<id>urn:sha1:86e1e98e5c6b4edab97e2b058466ef553cfd878e</id>
<content type='text'>
We used to write these with BIO_RW_BARRIER aka REQ_HARDBARRIER (unless
disabled in the configuration). The correct semantic now would be to
write with FLUSH/FUA.
For example, with activity log transactions, FUA alone is not enough, we
need the corresponding bitmap update (and all related application
updates) on stable storage as well.

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: when receive times out on meta socket, also check last receive time on data socket</title>
<updated>2011-06-30T07:23:44Z</updated>
<author>
<name>Lars Ellenberg</name>
<email>lars.ellenberg@linbit.com</email>
</author>
<published>2011-06-20T12:44:45Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=cb6518cbef5e3e36b7ae90fcab610a52ea7e9fc0'/>
<id>urn:sha1:cb6518cbef5e3e36b7ae90fcab610a52ea7e9fc0</id>
<content type='text'>
If we have an asymetrically congested network, we may send P_PING,
but due to congestion, the corresponding P_PING_ACK would time out,
and we would drop a (congested, but otherwise) healthy connection
("PingAck did not arrive in time.")

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: account bitmap IO during resync as resync-(related-)-io</title>
<updated>2011-06-30T07:23:43Z</updated>
<author>
<name>Lars Ellenberg</name>
<email>lars.ellenberg@linbit.com</email>
</author>
<published>2011-06-14T12:18:23Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=5a8b424276f7ba50c51e7caf485b2be23739e5b8'/>
<id>urn:sha1:5a8b424276f7ba50c51e7caf485b2be23739e5b8</id>
<content type='text'>
If we have a good resync rate, we will frequently update the on-disk
bitmap, which, if not accounted for as resync io, may let an otherwise
idle device appear to be "busy", and cause us to throttle resync.

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: don't cond_resched_lock with IRQs disabled</title>
<updated>2011-06-30T07:23:42Z</updated>
<author>
<name>Lars Ellenberg</name>
<email>lars.ellenberg@linbit.com</email>
</author>
<published>2011-06-06T09:31:42Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=8ccee20e3ef4e12dbf02a18f17d386569b1f73ee'/>
<id>urn:sha1:8ccee20e3ef4e12dbf02a18f17d386569b1f73ee</id>
<content type='text'>
The last commit, drbd: add missing spinlock to bitmap receive,
introduced a cond_resched_lock(), where the lock in question is taken
with irqs disabled.

As we must not schedule with IRQs disabled,
and cond_resched_lock_irq() does not exist, yet,
we re-aquire the spin_lock_irq() for each bitmap page processed in turn.

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: add missing spinlock to bitmap receive</title>
<updated>2011-06-30T07:23:41Z</updated>
<author>
<name>Lars Ellenberg</name>
<email>lars.ellenberg@linbit.com</email>
</author>
<published>2011-06-03T19:18:13Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=829c60878626be290a4c248e8f1b86a0d5cbd38b'/>
<id>urn:sha1:829c60878626be290a4c248e8f1b86a0d5cbd38b</id>
<content type='text'>
During bitmap exchange, when using the RLE bitmap compression scheme,
we have a code path that can set the whole bitmap at once.

To avoid holding spin_lock_irq() for too long, we used to lock out other
bitmap modifications during bitmap exchange by other means, and then,
knowing we have exclusive access to the bitmap, modify it without
the spinlock, and with IRQs enabled.

Since we now allow local IO to continue, potentially setting additional
bits during the bitmap receive phase, this is no longer true, and we get
uncoordinated updates of bitmap members, causing bm_set to no longer
accurately reflect the total number of set bits.

To actually see this, you'd need to have a large bitmap, use RLE bitmap
compression, and have busy IO during sync handshake and bitmap exchange.

Fix this by taking the spin_lock_irq() in this code path as well, but
calling cond_resched_lock() after each page worth of bits processed.

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: Use the correct max_bio_size when creating resync requests</title>
<updated>2011-06-30T07:23:40Z</updated>
<author>
<name>Philipp Reisner</name>
<email>philipp.reisner@linbit.com</email>
</author>
<published>2011-05-25T09:14:35Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=0cfdd247d1779d5ffc8f685b172a526ecdc6773f'/>
<id>urn:sha1:0cfdd247d1779d5ffc8f685b172a526ecdc6773f</id>
<content type='text'>
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>Merge branch 'for-2.6.40/drivers' of git://git.kernel.dk/linux-2.6-block</title>
<updated>2011-05-25T16:15:35Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-05-25T16:15:35Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=929cfdd5d3bdc772aff32e5a3fb4e3894394aa75'/>
<id>urn:sha1:929cfdd5d3bdc772aff32e5a3fb4e3894394aa75</id>
<content type='text'>
* 'for-2.6.40/drivers' of git://git.kernel.dk/linux-2.6-block: (110 commits)
  loop: handle on-demand devices correctly
  loop: limit 'max_part' module param to DISK_MAX_PARTS
  drbd: fix warning
  drbd: fix warning
  drbd: Fix spelling
  drbd: fix schedule in atomic
  drbd: Take a more conservative approach when deciding max_bio_size
  drbd: Fixed state transitions after async outdate-peer-handler returned
  drbd: Disallow the peer_disk_state to be D_OUTDATED while connected
  drbd: Fix for the connection problems on high latency links
  drbd: fix potential activity log refcount imbalance in error path
  drbd: Only downgrade the disk state in case of disk failures
  drbd: fix disconnect/reconnect loop, if ping-timeout == ping-int
  drbd: fix potential distributed deadlock
  lru_cache.h: fix comments referring to ts_ instead of lc_
  drbd: Fix for application IO with the on-io-error=pass-on policy
  xen/p2m: Add EXPORT_SYMBOL_GPL to the M2P override functions.
  xen/p2m/m2p/gnttab: Support GNTMAP_host_map in the M2P override.
  xen/blkback: don't fail empty barrier requests
  xen/blkback: fix xenbus_transaction_start() hang caused by double xenbus_transaction_end()
  ...
</content>
</entry>
</feed>
