<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel">
    <title>gmane.linux.kernel.device-mapper.devel</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15888"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15866"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15863"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15862"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15859"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15847"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15845"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15844"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15843"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15842"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15841"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15837"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15810"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15809"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15804"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15802"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15801"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15800"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15799"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15797"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15888">
    <title>Re: [PATCHES]: dm lock optimization</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15888</link>
    <description>&lt;pre&gt;Hi Mikulas,

On 05/18/12 15:37, Mikulas Patocka wrote:

The patch (dm-optimize.patch) looks good.
I have no other issues with it.
Thank you.
&lt;/pre&gt;</description>
    <dc:creator>Jun'ichi Nomura</dc:creator>
    <dc:date>2012-05-23T06:27:58</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15866">
    <title>Re: Allow userland access to metadata of a live thin provisioning pool</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15866</link>
    <description>&lt;pre&gt;On Thu, May 17 2012 at 10:47am -0400,
Joe Thornber &amp;lt;ejt&amp;lt; at &amp;gt;redhat.com&amp;gt; wrote:


Hey Joe,

You forgot your Signed-off-by.

I reviewed the patch and had a few suggestions; please see the following
small incremental patch (Alasdair please feel free to fold these nits
into Joe's original patch).

The switch from dm_tm_unlock() to dm_bm_unlock() in 2 places was done
because the block was locked with the block-manager (rather than a tm
wrapper).

There are still remnants of "held root" but I didn't feel that strongly
to change the superblock's variable name, clean up the header comment,
etc.

Acked-by: Mike Snitzer &amp;lt;snitzer&amp;lt; at &amp;gt;redhat.com&amp;gt;
---
 Documentation/device-mapper/thin-provisioning.txt |    2 +-
 drivers/md/dm-thin-metadata.c                     |   10 ++++++----
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/Documentation/device-mapper/thin-provisioning.txt b/Documentation/device-mapper/thin-provisioning.txt
index 897e66da..f5cfc62 100644
--- a/Documentation/device-mapper/thin-provisioning.txt
+&lt;/pre&gt;</description>
    <dc:creator>Mike Snitzer</dc:creator>
    <dc:date>2012-05-22T21:21:38</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15863">
    <title>[PATCH] dm-cache (block level disk cache target): UPDATElatest kernel</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15863</link>
    <description>&lt;pre&gt;A new patch for the 3.3.5 kernel.
Signed-off-by: Ming Zhao &amp;lt;dm-cache&amp;lt; at &amp;gt;xxxxxxxxxxxxxxxx&amp;gt;

URL:
http://visa.cs.fiu.edu/tiki/dm-cache

check the code also at:
https://github.com/mingzhao/dm-cache


-Dulcardo
&lt;/pre&gt;</description>
    <dc:creator>Dulcardo Arteaga</dc:creator>
    <dc:date>2012-05-22T20:40:50</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15862">
    <title>Re: working with dm-raid module</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15862</link>
    <description>&lt;pre&gt;
On May 19, 2012, at 2:41 PM, Andrew Zhukov wrote:


The mapping table contains all of the possible options you should need.  The options are listed in linux/Documentation/device-mapper/dm-raid.txt.

I have thought that it might also be useful to notify the kernel of a drive failure (or a drive returning to life) without having to load a new mapping table.  This could be done through the DM message interface.  If you find that this is a necessary thing, we could talk about that too.

 brassow



&lt;/pre&gt;</description>
    <dc:creator>Brassow Jonathan</dc:creator>
    <dc:date>2012-05-22T18:59:05</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15859">
    <title>Re: multipathd: 8:80 mark as failed - BUG: unable to handle kernel NULL pointer dereference at (null)</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15859</link>
    <description>&lt;pre&gt;Hello,
if you can update OpenSUSE 12.1 there default package crash if you try
to start, I'll be very happy. :-)

Is there a multipath-tools version that I can download it with git?

Regards,
Roberto.

On 05/17/2012 11:56 AM, Roberto Giordani wrote:


&lt;/pre&gt;</description>
    <dc:creator>Roberto Giordani</dc:creator>
    <dc:date>2012-05-21T14:52:12</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15847">
    <title>[PATCH 04/10] dm-log: use memweight()</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15847</link>
    <description>&lt;pre&gt;Use memweight() to count the total number of bits set in memory area.

Signed-off-by: Akinobu Mita &amp;lt;akinobu.mita&amp;lt; at &amp;gt;gmail.com&amp;gt;
Cc: Alasdair Kergon &amp;lt;agk&amp;lt; at &amp;gt;redhat.com&amp;gt;
Cc: dm-devel&amp;lt; at &amp;gt;redhat.com
---
 drivers/md/dm-log.c |   13 ++-----------
 1 files changed, 2 insertions(+), 11 deletions(-)

diff --git a/drivers/md/dm-log.c b/drivers/md/dm-log.c
index 65ebaeb..627d191 100644
--- a/drivers/md/dm-log.c
+++ b/drivers/md/dm-log.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -571,16 +571,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void disk_dtr(struct dm_dirty_log *log)
 destroy_log_context(lc);
 }
 
-static int count_bits32(uint32_t *addr, unsigned size)
-{
-int count = 0, i;
-
-for (i = 0; i &amp;lt; size; i++) {
-count += hweight32(*(addr+i));
-}
-return count;
-}
-
 static void fail_log_device(struct log_c *lc)
 {
 if (lc-&amp;gt;log_dev_failed)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -629,7 +619,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int disk_resume(struct dm_dirty_log *log)
 
 /* copy clean across to sync */
 memcpy(lc-&amp;gt;sync_bits, lc-&amp;gt;clean_bits, size);
-lc-&amp;gt;sync_count = count_bits32(lc-&amp;gt;clean_bits, lc-&amp;gt;bitset_uint32_count);
+lc-&amp;gt;sync_count = memweight(l&lt;/pre&gt;</description>
    <dc:creator>Akinobu Mita</dc:creator>
    <dc:date>2012-05-20T13:23:17</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15845">
    <title>working with dm-raid module</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15845</link>
    <description>&lt;pre&gt;Hello!

I am engineer in Tver State University. We would like to use dm-raid driver in our storage system. But we must understand how we can rebuild the array (e.g raid1) and how mark a disk as failed. I have not found any documentation about it. Could you tell how to do it? 

Thank you for advice!

---
WBR, Andrew Zhukov
TvSU IC Dep


&lt;/pre&gt;</description>
    <dc:creator>Andrew Zhukov</dc:creator>
    <dc:date>2012-05-19T19:41:04</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15844">
    <title>Re: [PATCH] multipath: clean up code for stopping thewaiter threads</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15844</link>
    <description>&lt;pre&gt;Applied.

Thanks.




&lt;/pre&gt;</description>
    <dc:creator>Christophe Varoqui</dc:creator>
    <dc:date>2012-05-20T10:34:08</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15843">
    <title>Re: [PATCH] multipath: fix select_no_path_retry for flushing devices.</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15843</link>
    <description>&lt;pre&gt;Applied.




&lt;/pre&gt;</description>
    <dc:creator>Christophe Varoqui</dc:creator>
    <dc:date>2012-05-20T10:33:34</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15842">
    <title>[PATCH] multipath: clean up code for stopping the waiterthreads</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15842</link>
    <description>&lt;pre&gt;The way multipathd currently stops the waiter threads needs some work.
Right now they are stopped by being sent the SIGUSR1 signal. However their
cleanup code assumes that they are being cancelled, just like all the other
threads are.  There's no reason for them to be so unnecessarily
complicated and different from the other threads

This patch does a couple of things.  First, it removes the mutex from
the event_thread.  This wasn't doing anything. It was designed to protect
the wp-&amp;gt;mapname variable, which the waiter threads were checking to see
if they should quit. However, the mutex was only ever being used by the
thread itself, and it clearly didn't need to serialize with itself.  Also,
the function to clear the mapname, signal_waiter(), was set with
pthread_cleanup_push(), which never got called early, since the threads
weren't being cancelled.  Thus, the mapname never got cleared
until the pthreads were about to shut down.

The patch also rips out all the signal stopping code, and just uses
pthread_canc&lt;/pre&gt;</description>
    <dc:creator>Benjamin Marzinski</dc:creator>
    <dc:date>2012-05-19T06:37:03</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15841">
    <title>Changing some multipath defaults</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15841</link>
    <description>&lt;pre&gt;Now that we have better path selectors than round-robin, is seems kind
of silly to have all of our built-in device configs actually setting
their path selector to round-robin.  I think we should either
change the default, or not set a path selector in the builtin device
configs, unless the harware vendor thinks that one of them will
give the best performace. Personally I'd be in favor of doing both.
Removing them from the builtin device configs, and changing the default
to either queue-length or service-time.

Also, since we are now increasing dev_loss_tmo to make sure that devices
don't get removed before queue_if_no_path times out, it seems reasonable
to set a default value for fast_io_fail_tmo, so that devices which will
queue forever will actually fail back the IO in a reasonable time,
something like 5.

These would go a long way towards make the defaults work better on more
systems.  Any thoughts?

-Ben

&lt;/pre&gt;</description>
    <dc:creator>Benjamin Marzinski</dc:creator>
    <dc:date>2012-05-19T02:01:26</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15837">
    <title>[PATCH] multipath: fix select_no_path_retry for flushingdevices.</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15837</link>
    <description>&lt;pre&gt;The select_no_path_retry code was falling through if a flush was
in progress, and so it wasn't honoring flush_on_last_del.

Signed-off-by: Benjamin Marzinski &amp;lt;bmarzins&amp;lt; at &amp;gt;redhat.com&amp;gt;
---
 libmultipath/propsel.c |    1 +
 1 file changed, 1 insertion(+)

Index: multipath-tools-120403/libmultipath/propsel.c
===================================================================
--- multipath-tools-120403.orig/libmultipath/propsel.c
+++ multipath-tools-120403/libmultipath/propsel.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -415,6 +415,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; select_no_path_retry(struct multipath *m
 if (mp-&amp;gt;flush_on_last_del == FLUSH_IN_PROGRESS) {
 condlog(0, "flush_on_last_del in progress");
 mp-&amp;gt;no_path_retry = NO_PATH_RETRY_FAIL;
+return 0;
 }
 if (mp-&amp;gt;mpe &amp;amp;&amp;amp; mp-&amp;gt;mpe-&amp;gt;no_path_retry != NO_PATH_RETRY_UNDEF) {
 mp-&amp;gt;no_path_retry = mp-&amp;gt;mpe-&amp;gt;no_path_retry;

&lt;/pre&gt;</description>
    <dc:creator>Benjamin Marzinski</dc:creator>
    <dc:date>2012-05-18T22:33:26</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15810">
    <title>Re: [PATCH v2] dm thin: fix table output when pool target disables discard passdown internally</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15810</link>
    <description>&lt;pre&gt;
Ack

&lt;/pre&gt;</description>
    <dc:creator>Joe Thornber</dc:creator>
    <dc:date>2012-05-18T15:14:28</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15809">
    <title>[PATCH v2] dm thin: fix table output when pool targetdisables discard passdown internally</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15809</link>
    <description>&lt;pre&gt;When the thin pool target clears the discard_passdown parameter
internally, it incorrectly reports this to userspace on the table line.
This patch corrects this by no longer changing the table line to reflect
that discard passdown was disabled.

We can still tell when discard passdown is overridden by looking for the
message "Discard unsupported by data device (sdX): Disabling discard passdown."

Signed-off-by: Mike Snitzer &amp;lt;snitzer&amp;lt; at &amp;gt;redhat.com&amp;gt;
---
 drivers/md/dm-thin.c |   32 +++++++++++++++++---------------
 1 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/drivers/md/dm-thin.c b/drivers/md/dm-thin.c
index 2fd87b5..eb3d138 100644
--- a/drivers/md/dm-thin.c
+++ b/drivers/md/dm-thin.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1632,6 +1632,21 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int bind_control_target(struct pool *pool, struct dm_target *ti)
 pool-&amp;gt;low_water_blocks = pt-&amp;gt;low_water_blocks;
 pool-&amp;gt;pf = pt-&amp;gt;pf;
 
+/*
+ * If discard_passdown was enabled verify that the data device
+ * supports discards.  Disable discard_passdown if not; otherwise
+ * -EOP&lt;/pre&gt;</description>
    <dc:creator>Mike Snitzer</dc:creator>
    <dc:date>2012-05-18T15:04:01</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15804">
    <title>Re: [PATCHES]: dm lock optimization</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15804</link>
    <description>&lt;pre&gt;Hi

Thanks for reviewing this. I applied your patch, the new version is here: 
http://people.redhat.com/mpatocka/patches/kernel/dm-lock-optimization/

Mikulas


On Thu, 10 May 2012, Jun'ichi Nomura wrote:


&lt;/pre&gt;</description>
    <dc:creator>Mikulas Patocka</dc:creator>
    <dc:date>2012-05-18T06:37:46</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15802">
    <title>Re: multipathd: 8:80 mark as failed - BUG: unable to handle kernel NULL pointer dereference at (null)</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15802</link>
    <description>&lt;pre&gt;Yeah, sorry, I need to update multipath-tools for OpenSUSE 11.4
onwards. Working on it.

Cheers,

Hannes
&lt;/pre&gt;</description>
    <dc:creator>Hannes Reinecke</dc:creator>
    <dc:date>2012-05-18T05:55:39</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15801">
    <title>Re: Bumping multipath-tools version</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15801</link>
    <description>&lt;pre&gt;Good idea.

But as I have some more patches pending, I personally would prefer
it to be delayed somewhat.

Cheers,

Hannes
&lt;/pre&gt;</description>
    <dc:creator>Hannes Reinecke</dc:creator>
    <dc:date>2012-05-18T05:49:53</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15800">
    <title>[PATCH 07/13] pktcdvd: Switch to bio_kmalloc()</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15800</link>
    <description>&lt;pre&gt;From: Kent Overstreet &amp;lt;koverstreet&amp;lt; at &amp;gt;google.com&amp;gt;

This is prep work for killing bi_destructor

Signed-off-by: Kent Overstreet &amp;lt;koverstreet&amp;lt; at &amp;gt;google.com&amp;gt;
---
 drivers/block/pktcdvd.c |  115 ++++++++++++++++-------------------------------
 1 files changed, 39 insertions(+), 76 deletions(-)

diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c
index ba66e44..6fe693a 100644
--- a/drivers/block/pktcdvd.c
+++ b/drivers/block/pktcdvd.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -522,36 +522,38 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void pkt_bio_finished(struct pktcdvd_device *pd)
 }
 }
 
-static void pkt_bio_destructor(struct bio *bio)
+static void pkt_end_io_read(struct bio *bio, int err)
 {
-kfree(bio-&amp;gt;bi_io_vec);
-kfree(bio);
-}
+struct packet_data *pkt = bio-&amp;gt;bi_private;
+struct pktcdvd_device *pd = pkt-&amp;gt;pd;
+BUG_ON(!pd);
 
-static struct bio *pkt_bio_alloc(int nr_iovecs)
-{
-struct bio_vec *bvl = NULL;
-struct bio *bio;
+VPRINTK("pkt_end_io_read: bio=%p sec0=%llx sec=%llx err=%d\n", bio,
+(unsigned long long)pkt-&amp;gt;sector, (unsigned long long)bio-&amp;gt;bi_sector, err)&lt;/pre&gt;</description>
    <dc:creator>koverstreet&lt; at &gt;google.com</dc:creator>
    <dc:date>2012-05-18T02:59:54</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15799">
    <title>[PATCH 08/13] block: Kill bi_destructor</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15799</link>
    <description>&lt;pre&gt;From: Kent Overstreet &amp;lt;koverstreet&amp;lt; at &amp;gt;google.com&amp;gt;

Now that we've got generic code for freeing bios allocated from bio
pools, this isn't needed anymore.

Signed-off-by: Kent Overstreet &amp;lt;koverstreet&amp;lt; at &amp;gt;google.com&amp;gt;
---
 Documentation/block/biodoc.txt |    5 -----
 fs/bio.c                       |   15 +++++----------
 include/linux/blk_types.h      |    3 ---
 3 files changed, 5 insertions(+), 18 deletions(-)

diff --git a/Documentation/block/biodoc.txt b/Documentation/block/biodoc.txt
index e418dc0..8df5e8e 100644
--- a/Documentation/block/biodoc.txt
+++ b/Documentation/block/biodoc.txt
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -465,7 +465,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; struct bio {
        bio_end_io_t*bi_end_io;  /* bi_end_io (bio) */
        atomic_tbi_cnt;     /* pin count: free when it hits zero */
        void             *bi_private;
-       bio_destructor_t *bi_destructor; /* bi_destructor (bio) */
 };
 
 With this multipage bio design:
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -647,10 +646,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; for a non-clone bio. There are the 6 pools setup for different size biovecs,
 so bio_alloc(gfp_mask, nr_iovecs)&lt;/pre&gt;</description>
    <dc:creator>koverstreet&lt; at &gt;google.com</dc:creator>
    <dc:date>2012-05-18T02:59:55</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15797">
    <title>[PATCH 06/13] block: Add bio_reset()</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15797</link>
    <description>&lt;pre&gt;From: Kent Overstreet &amp;lt;koverstreet&amp;lt; at &amp;gt;google.com&amp;gt;

Reusing bios is something that's been highly frowned upon in the past,
but driver code keeps doing it anyways. If it's going to happen anyways,
we should provide a generic method.

This'll help with getting rid of bi_destructor.

Signed-off-by: Kent Overstreet &amp;lt;koverstreet&amp;lt; at &amp;gt;google.com&amp;gt;
---
 fs/bio.c                  |    8 ++++++++
 include/linux/bio.h       |    1 +
 include/linux/blk_types.h |    6 ++++++
 3 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/fs/bio.c b/fs/bio.c
index de0733e..90e4c3a 100644
--- a/fs/bio.c
+++ b/fs/bio.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -259,6 +259,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void bio_init(struct bio *bio)
 }
 EXPORT_SYMBOL(bio_init);
 
+void bio_reset(struct bio *bio)
+{
+memset(bio, 0, BIO_RESET_OFFSET);
+bio-&amp;gt;bi_flags = 1 &amp;lt;&amp;lt; BIO_UPTODATE;
+
+}
+EXPORT_SYMBOL(bio_reset);
+
 /**
  * bio_alloc_bioset - allocate a bio for I/O
  * &amp;lt; at &amp;gt;gfp_mask:   the GFP_ mask given to the slab allocator
diff --git a/include/linux/bio.h b/include/linux/bio.h
index b27f16b..35f7c4d 100644&lt;/pre&gt;</description>
    <dc:creator>koverstreet&lt; at &gt;google.com</dc:creator>
    <dc:date>2012-05-18T02:59:53</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15795">
    <title>[PATCH 05/13] block: Only clone bio vecs that are in use</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/15795</link>
    <description>&lt;pre&gt;From: Kent Overstreet &amp;lt;koverstreet&amp;lt; at &amp;gt;google.com&amp;gt;

bcache creates large bios internally, and then splits them according to
the device requirements before it sends them down. If a lower level
device tries to clone the bio, and the original bio had more than
BIO_MAX_PAGES, the clone will fail unecessarily.

We can fix this by only cloning the bio vecs that are actually in use.

Signed-off-by: Kent Overstreet &amp;lt;koverstreet&amp;lt; at &amp;gt;google.com&amp;gt;
---
 fs/bio.c |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/fs/bio.c b/fs/bio.c
index e2c0970..de0733e 100644
--- a/fs/bio.c
+++ b/fs/bio.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -435,8 +435,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; EXPORT_SYMBOL(bio_phys_segments);
  */
 void __bio_clone(struct bio *bio, struct bio *bio_src)
 {
-memcpy(bio-&amp;gt;bi_io_vec, bio_src-&amp;gt;bi_io_vec,
-bio_src-&amp;gt;bi_max_vecs * sizeof(struct bio_vec));
+memcpy(bio-&amp;gt;bi_io_vec,
+       bio_iovec(bio_src),
+       bio_segments(bio_src) * sizeof(struct bio_vec));
 
 /*
  * most users will be overriding -&amp;gt;bi_bdev with a new target,
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -445,10 +446&lt;/pre&gt;</description>
    <dc:creator>koverstreet&lt; at &gt;google.com</dc:creator>
    <dc:date>2012-05-18T02:59:52</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.linux.kernel.device-mapper.devel">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.linux.kernel.device-mapper.devel</link>
  </textinput>
</rdf:RDF>

