<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/block/drbd, branch v3.6.5</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/drivers/block/drbd?h=v3.6.5</id>
<link rel='self' href='https://git.amat.us/linux/atom/drivers/block/drbd?h=v3.6.5'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2012-08-25T18:36:43Z</updated>
<entry>
<title>Merge branch 'for-linus' of git://git.kernel.dk/linux-block</title>
<updated>2012-08-25T18:36:43Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2012-08-25T18:36:43Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=a7e546f175f07630453c44b5afe14dd667dcfec9'/>
<id>urn:sha1:a7e546f175f07630453c44b5afe14dd667dcfec9</id>
<content type='text'>
Pull block-related fixes from Jens Axboe:

 - Improvements to the buffered and direct write IO plugging from
   Fengguang.

 - Abstract out the mapping of a bio in a request, and use that to
   provide a blk_bio_map_sg() helper.  Useful for mapping just a bio
   instead of a full request.

 - Regression fix from Hugh, fixing up a patch that went into the
   previous release cycle (and marked stable, too) attempting to prevent
   a loop in __getblk_slow().

 - Updates to discard requests, fixing up the sizing and how we align
   them.  Also a change to disallow merging of discard requests, since
   that doesn't really work properly yet.

 - A few drbd fixes.

 - Documentation updates.

* 'for-linus' of git://git.kernel.dk/linux-block:
  block: replace __getblk_slow misfix by grow_dev_page fix
  drbd: Write all pages of the bitmap after an online resize
  drbd: Finish requests that completed while IO was frozen
  drbd: fix drbd wire compatibility for empty flushes
  Documentation: update tunable options in block/cfq-iosched.txt
  Documentation: update tunable options in block/cfq-iosched.txt
  Documentation: update missing index files in block/00-INDEX
  block: move down direct IO plugging
  block: remove plugging at buffered write time
  block: disable discard request merge temporarily
  bio: Fix potential memory leak in bio_find_or_create_slab()
  block: Don't use static to define "void *p" in show_partition_start()
  block: Add blk_bio_map_sg() helper
  block: Introduce __blk_segment_map_sg() helper
  fs/block-dev.c:fix performance regression in O_DIRECT writes to md block devices
  block: split discard into aligned requests
  block: reorganize rounding of max_discard_sectors
</content>
</entry>
<entry>
<title>drbd: Write all pages of the bitmap after an online resize</title>
<updated>2012-08-16T15:17:35Z</updated>
<author>
<name>Philipp Reisner</name>
<email>philipp.reisner@linbit.com</email>
</author>
<published>2012-08-08T19:19:09Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d1aa4d04da8de5c89d73859e077d89c4c71d8ed1'/>
<id>urn:sha1:d1aa4d04da8de5c89d73859e077d89c4c71d8ed1</id>
<content type='text'>
We need to write the whole bitmap after we moved the meta data
due to an online resize operation.

With the support for one peta byte devices bitmap IO was optimized
to only write out touched pages. This optimization must be turned
off when writing the bitmap after an online resize.

This issue was introduced with drbd-8.3.10.

The impact of this bug is that after an online resize, the next
resync could become larger than expected.

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: Finish requests that completed while IO was frozen</title>
<updated>2012-08-16T15:14:45Z</updated>
<author>
<name>Philipp Reisner</name>
<email>philipp.reisner@linbit.com</email>
</author>
<published>2012-07-31T09:22:58Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=509fc019e534bdf5f3969d78c53184db4cf7ff48'/>
<id>urn:sha1:509fc019e534bdf5f3969d78c53184db4cf7ff48</id>
<content type='text'>
Requests of an acked epoch are stored on the barrier_acked_requests list. In
case the private bio of such a request completes while IO on the drbd device
is suspended [req_mod(completed_ok)] then the request stays there.

When thawing IO because the fence_peer handler returned, then we use
tl_clear() to apply the connection_lost_while_pending event to all requests
on the transfer-log and the barrier_acked_requests list.

Up to now the connection_lost_while_pending event was not applied
on requests on the barrier_acked_requests list. Fixed that.

I.e. now the connection_lost_while_pending and resend events are
applied to requests on the barrier_acked_requests list. For that
it is necessary that the resend event finishes (local only)
READS correctly.

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 drbd wire compatibility for empty flushes</title>
<updated>2012-08-16T15:12:56Z</updated>
<author>
<name>Lars Ellenberg</name>
<email>lars.ellenberg@linbit.com</email>
</author>
<published>2012-07-31T07:31:11Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=227f052f4711caf432b9a7dbcfe1a2857d3c0def'/>
<id>urn:sha1:227f052f4711caf432b9a7dbcfe1a2857d3c0def</id>
<content type='text'>
DRBD has a concept of request epochs or reorder-domains,
which are separated on the wire by P_BARRIER packets.

Older DRBD is not able to handle zero-sized requests at all,
so we need to map empty flushes to these drbd barriers.

These are the equivalent of empty flushes, and
by default trigger flushes on the receiving side anyways
(unless not supported or explicitly disabled),
so there is no need to handle this differently in newer drbd either.

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: nuke pdflush from comments</title>
<updated>2012-08-04T08:15:39Z</updated>
<author>
<name>Artem Bityutskiy</name>
<email>artem.bityutskiy@linux.intel.com</email>
</author>
<published>2012-07-25T15:12:12Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d97482ede202f424670a53673c362e5189107875'/>
<id>urn:sha1:d97482ede202f424670a53673c362e5189107875</id>
<content type='text'>
The pdflush thread is long gone, so this patch removes references to pdflush
from drbd comments.

Cc: drbd-dev@lists.linbit.com
Signed-off-by: Artem Bityutskiy &lt;artem.bityutskiy@linux.intel.com&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>drbd: announce FLUSH/FUA capability to upper layers</title>
<updated>2012-07-24T13:14:28Z</updated>
<author>
<name>Lars Ellenberg</name>
<email>lars.ellenberg@linbit.com</email>
</author>
<published>2012-06-25T17:15:38Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=a73ff3231df59a4b92ccd0dd4e73897c5822489b'/>
<id>urn:sha1:a73ff3231df59a4b92ccd0dd4e73897c5822489b</id>
<content type='text'>
Unconditionally announce FLUSH/FUA to upper layers.
If the lower layers on either node do not actually support this,
generic_make_request() will deal with it.

If this causes performance regressions on your setup,
make sure there are no volatile caches involved,
and mount -o nobarrier or equivalent.

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 max_bio_size to be unsigned</title>
<updated>2012-07-24T13:14:00Z</updated>
<author>
<name>Lars Ellenberg</name>
<email>lars.ellenberg@linbit.com</email>
</author>
<published>2012-06-25T17:15:58Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=db141b2f42b485b700465fe2401fbe65c65b190c'/>
<id>urn:sha1:db141b2f42b485b700465fe2401fbe65c65b190c</id>
<content type='text'>
We capped our max_bio_size respectively max_hw_sectors with
min_t(int, lower level limit, our limit);
unfortunately, some drivers, e.g. the kvm virtio block driver, initialize their
limits to "-1U", and that is of course a smaller "int" value than our limit.

Impact: we started to request 16 MB resync requests,
which lead to protocol error and a reconnect loop.

Fix all relevant constants and parameters to be unsigned int.

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: flush drbd work queue before invalidate/invalidate remote</title>
<updated>2012-07-24T12:15:58Z</updated>
<author>
<name>Lars Ellenberg</name>
<email>lars.ellenberg@linbit.com</email>
</author>
<published>2012-06-19T08:27:58Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=7ee1fb93f390f7a7231abec4e34e6ab20abeed45'/>
<id>urn:sha1:7ee1fb93f390f7a7231abec4e34e6ab20abeed45</id>
<content type='text'>
If you do back to back wait-sync/invalidate on a Primary in a tight loop,
during application IO load, you could trigger a race:
  kernel: block drbd6: FIXME going to queue 'set_n_write from StartingSync'
	but 'write from resync_finished' still pending?

Fix this by changing the order of the drbd_queue_work() and
the wake_up() in dec_ap_pending(), and adding the additional
drbd_flush_workqueue() before requesting the full sync.

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 potential access after free</title>
<updated>2012-07-24T12:15:16Z</updated>
<author>
<name>Lars Ellenberg</name>
<email>lars.ellenberg@linbit.com</email>
</author>
<published>2012-06-19T07:40:00Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c12e9c8964215aaf2b5dcd06048444c2b672f0b9'/>
<id>urn:sha1:c12e9c8964215aaf2b5dcd06048444c2b672f0b9</id>
<content type='text'>
Occasionally, if we disconnect, we triggered this assert:
  block drbd7: ASSERT FAILED tl_hash[27] == c30b0f04, expected NULL

hlist_del() happens only on master bio completion.

We used to wait for pending IO to complete before freeing tl_hash
on disconnect. We no longer do so, since we learned to "freeze"
IO on disconnect.

If the local disk is too slow, we may reach C_STANDALONE early,
and there are still some requests pending locally when we call
drbd_free_tl_hash().

If we now free the tl_hash, and later the local IO completion completes
the master bio, which then does hlist_del() and clobbers freed memory.

Do hlist_del_init() and hlist_add_fake() before kfree(tl_hash),
so the hlist_del() on master bio completion is harmless.

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: call local-io-error handler early</title>
<updated>2012-07-24T12:10:41Z</updated>
<author>
<name>Lars Ellenberg</name>
<email>lars.ellenberg@linbit.com</email>
</author>
<published>2012-06-18T09:46:01Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=63a6d0bb3dd69afedb2b2952eb1d1e8340c11d0d'/>
<id>urn:sha1:63a6d0bb3dd69afedb2b2952eb1d1e8340c11d0d</id>
<content type='text'>
In case we want to hard-reset from the local-io-error handler,
we need to call it before notifying the peer or aborting local IO.
Otherwise the peer will advance its data generation UUIDs even
if secondary.

This way, local io error looks like a "regular" node crash,
which reduces the number of different failure cases.
This may be useful in a bigger picture where crashed or otherwise
"misbehaving" nodes are automatically re-deployed.

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>
