<?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 about="http://blog.gmane.org/gmane.linux.kernel.device-mapper.devel">
    <title>gmane.linux.kernel.device-mapper.devel</title>
    <link>http://blog.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://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6889"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6887"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6879"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6871"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6870"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6869"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6868"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6867"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6860"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6857"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6855"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6846"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6845"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6843"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6840"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6831"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6830"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6829"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6828"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6827"/>
      </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://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6889">
    <title>path_checker within multipath {}</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6889</link>
    <description>Am I missing something obvious here?

/usr/share/doc/device-mapper-multipath-0.4.7/multipath.conf.annotated
says this should work, and I can't find a RHEL 5 issue for it:

My config says:

multipaths {
        multipath {
                wwid "22263000155ada9e9"
                path_grouping_policy failover
                path_checker tur
        }
        multipath {
                wwid "36090a018108277e8ed92e4e9cee1733e"
                path_grouping_policy multibus
                path_checker readsector0
        }
}

but multipathd -k"show conf" says:

multipaths {
        multipath {
                wwid 22263000155ada9e9
                path_grouping_policy failover
        }
        multipath {
                wwid 36090a018108277e8ed92e4e9cee1733e
                path_grouping_policy multibus
        }

and multipath -v3 shows them all

sdb: path checker = readsector0 (config file default)

while the grouping policy seems to work, 

pgpolicy = multibus (LUN setting)

I'm sure I can use 'tur' on bot</description>
    <dc:creator>Matthew Kent</dc:creator>
    <dc:date>2008-11-27T19:47:54</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6887">
    <title>Announce: unlimited number of shared snapshots</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6887</link>
    <description>Hi

I made first release of my snapshot storage that can hold unlimited number 
of snapshots and share data between them:

http://people.redhat.com/mpatocka/patches/kernel/new-snapshots/

How-to-use is at the beginning of dm-multisnapshot.patch

If you see some errors, report them.

This storage uses btree with the key (chunk number, snapshot range). It 
uses log-structured storage, so that it is safe w.r.t. crash.

TODO:
- reclaim allocated space, allow deleting snapshots
- writable snapshots

Mikulas

</description>
    <dc:creator>Mikulas Patocka</dc:creator>
    <dc:date>2008-11-27T05:41:36</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6879">
    <title>[PATCH 0/9] dm snapshot: shared exception store (v4)</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6879</link>
    <description>This is the fourth version of the shared exception store (based on
Zumastor code). You can find the previous submissions:

https://www.redhat.com/archives/dm-devel/2008-August/msg00003.html

https://www.redhat.com/archives/dm-devel/2008-August/msg00087.html

https://www.redhat.com/archives/dm-devel/2008-October/msg00159.html

Except for bug fixes, the major change since the previous version is
fixing the disk endian (Zumastor simply uses the CPU endian for the
disk format). The current code uses little endian for the disk format
(I just slightly tested it with ppc64. It needs more tests, of
course). I also modified the snapshot disk initialization code to
reserve chunks for the journaling mechanism. I've not implemented the
journaling mechanism but there is no need to change the disk format
for that later.

There are 9 patches and I modified only 7th patch (Zumastor shared
snapshot code) since the last submission. IOW, I have not change the
way to refactor the existing code. I'll think about how to integrate</description>
    <dc:creator>FUJITA Tomonori</dc:creator>
    <dc:date>2008-11-26T16:17:30</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6871">
    <title>[RFC][PATCH 1/4] dm-log: fix io_client_destroy leak</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6871</link>
    <description>In create_log_context function, dm_io_client_destroy function needs
to be called, when memory allocation of disk_header, sync_bits and
recovering_bits failed, but dm_io_client_destroy is not called.
This patch fixes it.


Signed-off-by: Takahiro Yasui &lt;tyasui&lt; at &gt;redhat.com&gt;
---
 drivers/md/dm-log.c |    5 +++++
 1 file changed, 5 insertions(+)

Index: linux-2.6.28-rc4/drivers/md/dm-log.c
===================================================================
--- linux-2.6.28-rc4.orig/drivers/md/dm-log.c
+++ linux-2.6.28-rc4/drivers/md/dm-log.c
&lt; at &gt;&lt; at &gt; -467,6 +467,7 &lt; at &gt;&lt; at &gt; static int create_log_context(struct dm_
 lc-&gt;disk_header = vmalloc(buf_size);
 if (!lc-&gt;disk_header) {
 DMWARN("couldn't allocate disk log buffer");
+dm_io_client_destroy(lc-&gt;io_req.client);
 kfree(lc);
 return -ENOMEM;
 }
&lt; at &gt;&lt; at &gt; -483,6 +484,8 &lt; at &gt;&lt; at &gt; static int create_log_context(struct dm_
 if (!dev)
 vfree(lc-&gt;clean_bits);
 vfree(lc-&gt;disk_header);
+if (dev)
+dm_io_client_destroy(lc-&gt;io_req.client);
 kfree(lc);
 return -ENOMEM;
</description>
    <dc:creator>Takahiro Yasui</dc:creator>
    <dc:date>2008-11-26T00:01:37</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6870">
    <title>[RFC][PATCH 3/4] dm-log: support multiple log devices</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6870</link>
    <description>This patch introduces multiple log devices feature.

 * "log" member is added into log context to keep a device status and
   device info.

 * read_headers function reads log data from each log devices and check
   if they contain the same header values.

 * write_headers issues write I/O to all active log devices at the same
   time and check each result when all I/Os complete.

 * add parse_params to search "region size" in the parameter list.


Signed-off-by: Takahiro Yasui &lt;tyasui&lt; at &gt;redhat.com&gt;
---
 drivers/md/dm-log.c |  579 +++++++++++++++++++++++++++++++++++++---------------
 1 file changed, 416 insertions(+), 163 deletions(-)

Index: linux-2.6.28-rc4/drivers/md/dm-log.c
===================================================================
--- linux-2.6.28-rc4.orig/drivers/md/dm-log.c
+++ linux-2.6.28-rc4/drivers/md/dm-log.c
&lt; at &gt;&lt; at &gt; -249,6 +249,15 &lt; at &gt;&lt; at &gt; struct log_header {
 sector_t nr_regions;
 };
 
+struct log {
+struct log_c *lc;
+int failed;
+
+struct dm_dev *dev;
+struct log_header header;
+struct dm_i</description>
    <dc:creator>Takahiro Yasui</dc:creator>
    <dc:date>2008-11-26T00:01:41</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6869">
    <title>[RFC][PATCH 4/4] dm-log: interface update for multiplelog devices</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6869</link>
    <description>This patch introduces a new interface for multi-log devices. disk log
has two interfaces, constructor and status, and disk_ctr function and
disk_status functions are extended to handle multiple log device paths.

 - Current interface

    disk_ctr():
        log_path region_size [[no]sync]

    disk_status() - STATUSTYPE_INFO:
        nr_params disk log_path log_status:"A" or "D"

    disk_status() - STATUSTYPE_TABLE:
        disk nr_params log_path region_size [[no]sync]


 - Proposed interface

    disk_ctr():
        [log_path]{1,} region_size [[no]sync]

    disk_status() - STATUSTYPE_INFO:
        nr_params disk [log_path]{1,} [log_status:"A" or "D"]{1,}

    disk_status() - STATUSTYPE_TABLE:
        disk nr_params [log_path]{1,} region_size [[no]sync]


Signed-off-by: Takahiro Yasui &lt;tyasui&lt; at &gt;redhat.com&gt;
---
 drivers/md/dm-log.c   |   75 ++++++++++++++++++++++++++++++++++++++------------
 drivers/md/dm-raid1.c |    2 -
 2 files changed, 59 insertions(+), 18 deletions(-)

Index: linux-2.6.28-rc4/drivers/m</description>
    <dc:creator>Takahiro Yasui</dc:creator>
    <dc:date>2008-11-26T00:01:43</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6868">
    <title>[RFC][PATCH 2/4] dm-log: unify rw_header toread/write_header</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6868</link>
    <description>rw_header function updates three members of io_req data every time
when I/O is processed. bi_rw and notify.fn are never modified once
they get initialized, and also they can be set in advance.
This patch removes unnecessary update operations.


Signed-off-by: Takahiro Yasui &lt;tyasui&lt; at &gt;redhat.com&gt;
---
 drivers/md/dm-log.c |   23 +++++++++++------------
 1 file changed, 11 insertions(+), 12 deletions(-)

Index: linux-2.6.28-rc4/drivers/md/dm-log.c
===================================================================
--- linux-2.6.28-rc4.orig/drivers/md/dm-log.c
+++ linux-2.6.28-rc4/drivers/md/dm-log.c
&lt; at &gt;&lt; at &gt; -323,20 +323,13 &lt; at &gt;&lt; at &gt; static void header_from_disk(struct log_
 core-&gt;nr_regions = le64_to_cpu(disk-&gt;nr_regions);
 }
 
-static int rw_header(struct log_c *lc, int rw)
-{
-lc-&gt;io_req.bi_rw = rw;
-lc-&gt;io_req.mem.ptr.vma = lc-&gt;disk_header;
-lc-&gt;io_req.notify.fn = NULL;
-
-return dm_io(&amp;lc-&gt;io_req, 1, &amp;lc-&gt;header_location, NULL);
-}
-
 static int read_header(struct log_c *log)
 {
 int r;
 
-r = rw_header(log, READ)</description>
    <dc:creator>Takahiro Yasui</dc:creator>
    <dc:date>2008-11-26T00:01:39</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6867">
    <title>[RFC][PATCH 0/4] dm-log: support multi-log devices</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6867</link>
    <description>Hi All,

This is my first post to this mailing list, but let me introduce
a patch set to implement multi-log devices for dm-mirror.
I appreciate your kind comments and suggestions on this patch set.


PATCH SET
=========
  1/4: dm-log: fix no io_client_destroy
  2/4: dm-log: remove unnecessary updates of io_req members
  3/4: dm-log: introduce multi-log devices
  4/4: dm-log: update interface to control multi-log devices


BACKGROUND
==========

device mapper mirroring (dm-mirror) uses "log" to keep status of
consistency among mirror devices. There are two types of log,
"core" and "disk". The former keep its data only on memory, and
the latter can keep data on a device. When system starts booting
and setup disks managed by device mapper, device mapper checks
log data if each region is in sync state among mirror devices.
And if not, it executes data replication from default-mirror device
to others.

However, once log disk breaks down, data replications are required
for a whole data disks, and if a size of dat</description>
    <dc:creator>Takahiro Yasui</dc:creator>
    <dc:date>2008-11-26T00:01:35</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6860">
    <title>[PATCH] Read the verbosity level from multipath.confconfiguration file</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6860</link>
    <description>With this patch, multipathd can read the verbosity level from
the multipath.conf configuration file.
For example:
verbosity       5

Signed-off-by: Ritesh Raj Sarraf &lt;rsarraf&lt; at &gt;netapp.com&gt;
---
 libmultipath/config.c      |    2 +-
 libmultipath/defaults.h    |    1 +
 libmultipath/dict.c        |   20 ++++++++++++++++++++
 multipath/multipath.conf.5 |    5 +++++
 4 files changed, 27 insertions(+), 1 deletions(-)

diff --git a/libmultipath/config.c b/libmultipath/config.c
index 6d731d2..b49cc90 100644
--- a/libmultipath/config.c
+++ b/libmultipath/config.c
&lt; at &gt;&lt; at &gt; -420,7 +420,7 &lt; at &gt;&lt; at &gt; load_config (char * file)
  * internal defaults
  */
 if (!conf-&gt;verbosity)
-conf-&gt;verbosity = 2;
+conf-&gt;verbosity = DEFAULT_VERBOSITY;
 
 conf-&gt;dev_type = DEV_NONE;
 conf-&gt;minio = 1000;
diff --git a/libmultipath/defaults.h b/libmultipath/defaults.h
index 87b155e..a943673 100644
--- a/libmultipath/defaults.h
+++ b/libmultipath/defaults.h
&lt; at &gt;&lt; at &gt; -11,6 +11,7 &lt; at &gt;&lt; at &gt;
 #define DEFAULT_NO_PATH_RETRY  NO_PATH_RETRY_UNDEF
 #define DEFAULT_PGTIMEO</description>
    <dc:creator>Ritesh Raj Sarraf</dc:creator>
    <dc:date>2008-11-21T10:54:30</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6857">
    <title>[PATCH] Read the verbosity level from multipath.confconfiguration file</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6857</link>
    <description>From: Ritesh Raj Sarraf &lt;rrs&lt; at &gt;researchut.com&gt;

With this patch, multipathd can read the verbosity level from
the multipath.conf configuration file.
For example:
verbosity       5

Signed-off-by: Ritesh Raj Sarraf &lt;rrs&lt; at &gt;researchut.com&gt;
---
 libmultipath/config.c      |    2 +-
 libmultipath/defaults.h    |    1 +
 libmultipath/dict.c        |   20 ++++++++++++++++++++
 multipath/multipath.conf.5 |    5 +++++
 4 files changed, 27 insertions(+), 1 deletions(-)

diff --git a/libmultipath/config.c b/libmultipath/config.c
index 6d731d2..b49cc90 100644
--- a/libmultipath/config.c
+++ b/libmultipath/config.c
&lt; at &gt;&lt; at &gt; -420,7 +420,7 &lt; at &gt;&lt; at &gt; load_config (char * file)
  * internal defaults
  */
 if (!conf-&gt;verbosity)
-conf-&gt;verbosity = 2;
+conf-&gt;verbosity = DEFAULT_VERBOSITY;
 
 conf-&gt;dev_type = DEV_NONE;
 conf-&gt;minio = 1000;
diff --git a/libmultipath/defaults.h b/libmultipath/defaults.h
index 87b155e..a943673 100644
--- a/libmultipath/defaults.h
+++ b/libmultipath/defaults.h
&lt; at &gt;&lt; at &gt; -11,6 +11,7 &lt; at &gt;&lt; at &gt;
 #define DEFAULT_NO_PATH_RETRY</description>
    <dc:creator>rrs&lt; at &gt;researchut.com</dc:creator>
    <dc:date>2008-11-20T12:41:15</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6855">
    <title>[PATCH] Change occurences of netapp to ontap.</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6855</link>
    <description>From: Ritesh Raj Sarraf &lt;rrs&lt; at &gt;researchut.com&gt;

Change all occurences of netapp to ontap to be consistent.
This was proposed earlier, before the libprio change, but was deferred for
compatibility reasons.

Also update maintainers.
---
 libmultipath/prioritizers/netapp.c |  243 ------------------------------------
 libmultipath/prioritizers/netapp.h |    7 -
 libmultipath/prioritizers/ontap.c  |  243 ++++++++++++++++++++++++++++++++++++
 libmultipath/prioritizers/ontap.h  |    7 +
 4 files changed, 250 insertions(+), 250 deletions(-)
 delete mode 100644 libmultipath/prioritizers/netapp.c
 delete mode 100644 libmultipath/prioritizers/netapp.h
 create mode 100644 libmultipath/prioritizers/ontap.c
 create mode 100644 libmultipath/prioritizers/ontap.h

diff --git a/libmultipath/prioritizers/netapp.c b/libmultipath/prioritizers/netapp.c
deleted file mode 100644
index 812ecf6..0000000
--- a/libmultipath/prioritizers/netapp.c
+++ /dev/null
&lt; at &gt;&lt; at &gt; -1,243 +0,0 &lt; at &gt;&lt; at &gt;
-/* 
- * Copyright 2005 Network Appliance, Inc., All Rights R</description>
    <dc:creator>Ritesh Raj Sarraf</dc:creator>
    <dc:date>2008-11-20T09:59:16</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6846">
    <title>[Patch 2 of 2]: Cluster-aware dirty log - log module</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6846</link>
    <description>Please note that I have not yet tested this module (outside of
compiling) with the latest kernel.  The only concern I have is with the
newly refactored region hash code.  I'll probably get to testing this
next week.

brassow

This patch contains a cluster-aware log module.  When used
by dm-raid1, device-mapper mirroring can be cluster-aware.

There is a kernel component (provided in this patch) and a
user space component.  The kernel component implements the
logging interface and passes all requests to userspace via
'connector' (a netlink wrapper).  The userspace daemon is
built upon OpenAIS for cluster communication and is fault
tolerant.

The logging interface code (found in dm-clog.c) is fairly
simple and should be close to completion.  I would really
enjoy feedback on:
1) Connector code (found in dm-clog-tfr.c)
2) Suggestions on possible break-ups of dm-clog-tfr.h,
   since some of that code is meant to be used by both
   userspace and kernel space, and some is meant only
   for kernel space...  (I thin</description>
    <dc:creator>Jonathan Brassow</dc:creator>
    <dc:date>2008-11-14T17:44:27</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6845">
    <title>[Patch 1 of 2]: Cluster-aware dirty log - Log APIaddition</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6845</link>
    <description>This patch can be considered by itself.  The second patch I am sending
will be the actual cluster log module, but these 2 patches don't
necessarily need to go together.

 brassow

The logging API needs an extra function to make cluster mirroring
possible.  This new function allows us to check whether a mirror
region is being recovered on another machine in the cluster.  This
helps us prevent simultaneous recovery I/O and process I/O to the
same locations on disk.

Cluster-aware log modules will implement this function.  Single
machine log modules will not.  So, there is no performance
penalty for single machine mirrors.

Signed-off-by: Jonathan Brassow &lt;jbrassow&lt; at &gt;redhat.com&gt;

Index: linux-2.6/drivers/md/dm-raid1.c
===================================================================
--- linux-2.6.orig/drivers/md/dm-raid1.c
+++ linux-2.6/drivers/md/dm-raid1.c
&lt; at &gt;&lt; at &gt; -588,6 +588,9 &lt; at &gt;&lt; at &gt; static void do_writes(struct mirror_set 
 int state;
 struct bio *bio;
 struct bio_list sync, nosync, recover, *this_list = NULL;
+</description>
    <dc:creator>Jonathan Brassow</dc:creator>
    <dc:date>2008-11-14T17:44:21</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6843">
    <title>[PATCHES] new solution for dm_any_congested crash</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6843</link>
    <description>Hi

The Chandra's patch was correct, but the problem is more serious (the same 
crash could happen in dm_merge_bvec, dm_unplug_all or at some other dm 
places), so I had to rework reference counting.

These are three patches.
1. reverts Chadra's changes
2. just a little swap of two calls, to prepare for the third
3. the reference counting rework

Chandra, please test the patches at your system (without your original 
patch) and verify that they avoid the crashes as well as your patch does.

MikulasRevert dm-avoid-destroying-table-in-dm_any_congested.patch

The patch is correct, however the problem is more serious.

The same lazy destructor calls can happen in dm_merge_bvec,
dm_unplug_all and in many other device mapper places. So, a more
generalized solution needs to be developed.

Signed-off-by: Mikulas Patocka &lt;mpatocka&lt; at &gt;redhat.com&gt;

---
 drivers/md/dm.c |   24 ++++++++----------------
 1 file changed, 8 insertions(+), 16 deletions(-)

Index: linux-2.6.28-rc4-devel/drivers/md/dm.c
===========</description>
    <dc:creator>Mikulas Patocka</dc:creator>
    <dc:date>2008-11-14T01:55:27</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6840">
    <title>[git pull] 2.6.28-rc5 device-mapper fixes</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6840</link>
    <description>Please pull the following device-mapper fixes from:

  master.kernel.org:/pub/scm/linux/kernel/git/agk/linux-2.6-dm.git

Chandra Seetharaman (3):
      dm mpath: avoid attempting to activate null path
      dm mpath: warn if args ignored
      dm: avoid destroying table in dm_any_congested

Heinz Mauelshagen (1):
      dm stripe: fix init failure

Mikulas Patocka (2):
      dm raid1: flush workqueue before destruction
      dm: move pending queue wake_up end_io_acct

 drivers/md/dm-mpath.c  |    8 ++++++--
 drivers/md/dm-raid1.c  |    1 +
 drivers/md/dm-stripe.c |    4 +++-
 drivers/md/dm.c        |   34 +++++++++++++++++++++-------------
 4 files changed, 31 insertions(+), 16 deletions(-)

Thanks,
Alasdair
</description>
    <dc:creator>Alasdair G Kergon</dc:creator>
    <dc:date>2008-11-13T23:49:33</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6831">
    <title>[PATCH 5 of 5] dm-exception-store API</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6831</link>
    <description> brassow

I took the liberty of refactoring the shared exception store
code.  It now aligns nicely with the interface instead of altering
all sorts of things that it should not have been.  'message' interface
is gone, no need to pass around snapid's, it's now a module, etc...

I didn't spend huge amounts of time on this.  It compiles, but there
are probably some bugs there now.  I would also like to see a
'UUID -&gt; snapid' translation added to the code.  This would eliminate
the need to go around asking which indices are open for use.  The
translation table could be stored in the on-disk header.

get_[shared|unique]_info functions need to be macros... function args
should be cleaned up... etc.

- brassow

Index: linux-2.6/drivers/md/Kconfig
===================================================================
--- linux-2.6.orig/drivers/md/Kconfig
+++ linux-2.6/drivers/md/Kconfig
&lt; at &gt;&lt; at &gt; -249,6 +249,14 &lt; at &gt;&lt; at &gt; config DM_SNAPSHOT
        ---help---
          Allow volume managers to take writable snapshots of a device.
 
+</description>
    <dc:creator>Jonathan Brassow</dc:creator>
    <dc:date>2008-11-13T10:12:45</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6830">
    <title>[PATCH 4 of 5] dm-exception-store API</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6830</link>
    <description> brassow

After twiddling with phillips/tomonori's shared snapshot, I believe the
addition of the 'lookup_completed_exception' function to the
exception store API will be useful.  If I understand correctly, it allows
us to defer populating a snapshot's exception cache up front.  Instead
allowing us to look them up as necessary.  This is nice, because when
the exception store is shared, we don't want 60 copies of all the
exceptions for each snapshot structure.  We just want one copy in the
exceptions store that we can lookup.

- brassow

Index: linux-2.6/drivers/md/dm-exception-store.h
===================================================================
--- linux-2.6.orig/drivers/md/dm-exception-store.h
+++ linux-2.6/drivers/md/dm-exception-store.h
&lt; at &gt;&lt; at &gt; -78,6 +78,18 &lt; at &gt;&lt; at &gt; struct dm_exception_store_type {
   void *callback_context);
 
 /*
+ * An exception store implementation can forgo using the
+ * callbacks provided to read_metadata, which would populate
+ * all exception data upfront.  Instead, it can cho</description>
    <dc:creator>Jonathan Brassow</dc:creator>
    <dc:date>2008-11-13T10:12:39</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6829">
    <title>[PATCH 3 of 5] dm-exception-store API</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6829</link>
    <description> brassow

This patch completes the clean break we wanted between
snapshots and exception stores.  Now it is possible to
create exception store modules and be able to use them
without having to alter the snapshot code.  There are
currently two types of exception stores, but more have
been proposed - including a 'shared' exception store.

Additionally, the constructor table has been enhanced
to allow more flexibility in the arguments passed to
the exception stores, as well as providing an easy
path to further expand options in the future.  This
was done while maintaining backwards compatibility.

Signed-off-by: Jonathan Brassow &lt;jbrassow&lt; at &gt;redhat.com&gt;

Index: linux-2.6/drivers/md/dm-exception-store.h
===================================================================
--- linux-2.6.orig/drivers/md/dm-exception-store.h
+++ linux-2.6/drivers/md/dm-exception-store.h
&lt; at &gt;&lt; at &gt; -10,6 +10,7 &lt; at &gt;&lt; at &gt;
 #define _LINUX_DM_EXCEPTION_STORE
 
 #include &lt;linux/blkdev.h&gt;
+#include &lt;linux/device-mapper.h&gt;
 
 /*
  * The snapshot code deals wi</description>
    <dc:creator>Jonathan Brassow</dc:creator>
    <dc:date>2008-11-13T10:12:35</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6828">
    <title>[PATCH 2 of 5] dm-exception-store API</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6828</link>
    <description> brassow

If the exception store API ever becomes as popular as the
dm-dirty-log.h API, then we should make the name of the
exception store structure a little more official.

s/exception_store/dm_exception_store/

Signed-off-by: Jonathan Brassow &lt;jbrassow&lt; at &gt;redhat.com&gt;

Index: linux-2.6/drivers/md/dm-exception-store.c
===================================================================
--- linux-2.6.orig/drivers/md/dm-exception-store.c
+++ linux-2.6/drivers/md/dm-exception-store.c
&lt; at &gt;&lt; at &gt; -462,19 +462,19 &lt; at &gt;&lt; at &gt; static int read_exceptions(struct pstore
 return 0;
 }
 
-static struct pstore *get_info(struct exception_store *store)
+static struct pstore *get_info(struct dm_exception_store *store)
 {
 return (struct pstore *) store-&gt;context;
 }
 
-static void persistent_fraction_full(struct exception_store *store,
+static void persistent_fraction_full(struct dm_exception_store *store,
      sector_t *numerator, sector_t *denominator)
 {
 *numerator = get_info(store)-&gt;next_free * store-&gt;snap-&gt;chunk_size;
 *denominato</description>
    <dc:creator>Jonathan Brassow</dc:creator>
    <dc:date>2008-11-13T10:12:29</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6827">
    <title>[PATCH 1 of 5] dm-exception-store API</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6827</link>
    <description> brassow

Creation of dm-exception-store.h

Pull structures that bridge the gap between snapshot and
exception store out of dm-snap.h and put them in a new
.h file - dm-exception-store.h.  This file will define the
API for new exception stores.

Ultimately, dm-snap.h is unnecessary, since only dm-snap.c
should be using it.

Signed-off-by: Jonathan Brassow &lt;jbrassow&lt; at &gt;redhat.com&gt;

Index: linux-2.6/drivers/md/dm-exception-store.c
===================================================================
--- linux-2.6.orig/drivers/md/dm-exception-store.c
+++ linux-2.6/drivers/md/dm-exception-store.c
&lt; at &gt;&lt; at &gt; -7,6 +7,7 &lt; at &gt;&lt; at &gt;
  * This file is released under the GPL.
  */
 
+#include "dm-exception-store.h"
 #include "dm-snap.h"
 
 #include &lt;linux/mm.h&gt;
Index: linux-2.6/drivers/md/dm-exception-store.h
===================================================================
--- /dev/null
+++ linux-2.6/drivers/md/dm-exception-store.h
&lt; at &gt;&lt; at &gt; -0,0 +1,131 &lt; at &gt;&lt; at &gt;
+/*
+ * Copyright (C) 2008 Red Hat, Inc.  All rights reserved.
+ *
+ * Device-mapper exce</description>
    <dc:creator>Jonathan Brassow</dc:creator>
    <dc:date>2008-11-13T10:12:22</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6826">
    <title>[PATCH 0 of 5] dm-exception-store API</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.device-mapper.devel/6826</link>
    <description>I think the API patches are ready for serious review.  The API patches
are the first 3 of 5 that I will be sending.

The last 2 concern the refactoring of the "dm snapshot: shared exception
store" patches.  I left these in a somewhat rough state, and they will
need more work.  However, I hope it shows that we can create a clean
exception store API and adhere to it - even with the more exotic
exception stores.

 brassow


</description>
    <dc:creator>Jonathan Brassow</dc:creator>
    <dc:date>2008-11-13T10:12:13</dc:date>
  </item>
  <textinput 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>
