[dm-devel] Re: clustered snapshots

Mike Snitzer snitzer at redhat.com
Fri Oct 2 17:26:56 UTC 2009


On Tue, Sep 29 2009 at  5:39pm -0400,
Mikulas Patocka <mpatocka at redhat.com> wrote:

> Hi
> 
> I uploaded a new version there. It has selective re-read and it has 
> optimized locking --- it does no remote communication if the chunk already 
> exists, so it should be as efficient as Jon's approach.
> 
> Jon, please look at it and review the patches, if you find out that this 
> approach can't work at all, we can drop it and go with your approach. If 
> it is OK, we can consider adopting it, it looks simpler than making 
> clustered-exception-store.
> 
> Mikulas
> 
> 
> On Mon, 28 Sep 2009, Mikulas Patocka wrote:
> 
> > Hi
> > 
> > I uploaded my test clustered snapshots to 
> > http://people.redhat.com/mpatocka/patches/kernel/clustered-snapshots-preview/

I have updated the following quilt tree and folded Mikulas' clustered
snapshots patches into the end:
http://people.redhat.com/msnitzer/patches/snapshot-merge/kernel/2.6.31/

Changes include:
. check for {prepare,commit}_merge not {prepare,commit}_exception in
  snapshot_merge_process (dm-snapshot-merge-process.patch)
. removed kernel/dm-exception-store-return-zero-when-empty.patch
  - adjusted dm-exception-store-merge-accounting.patch to preserve
    established kernel<->userspace interface
  - adjusted a few other patches
. removed kernel/dm-snapshot-dont-insert-before-existing-chunk.patch
. moved proper cleanup of memory exceptions in merge_callback() from
  dm-snapshot-merge-use-larger-io-when-merging.patch to
  dm-snapshot-merge-interlock-writes.patch
  - this merge_callback() code walks exceptions in reverse but has not
    been tested on a larger merge to know whether the 'back-merge' of
    exceptions is properly being accounted for when cleaning up the
    in-core snapshot exceptions.
    - I think the fact that the exception cleanup is 2 stage (first
      disk, then all in memory exceptions in reverse) may make
      back-merge "just work"...
. added agk's pending patches to the front of the series
  - this works on 2.6.31
  - I haven't rebased to 2.6.32-rc1 yet

I have done some light snapshot-merge testing to verify that this
updated snapshot-merge quilt tree builds and works as expected.  I'll be
testing more extensively shortly (particularly back-merge).

I have also updated the LVM2 snapshot-merge patches to work on 2.02.54-cvs:
http://people.redhat.com/msnitzer/patches/snapshot-merge/lvm2/LVM2-2.02.54/

One thing to note is dm-snapshot now depends on dm_cluster_locking; when I
tried to insmod dm-snapshot.ko I got:
dm_snapshot: Unknown symbol dm_cluster_lock_exit
dm_snapshot: Unknown symbol dm_cluster_lock_by_str
dm_snapshot: Unknown symbol dm_cluster_lock_init

I'm also seeing:
DLM (built Sep 11 2009 23:48:05) installed
dlm: no local IP address has been set
dlm: cannot start dlm lowcomms -107
device-mapper: dm-cluster-locking: Failed to create lockspace: dm-snap

Am I just missing the relevant LVM2 bits to push down proper args to the
snapshot_ctr()?  Seems to me that we could do better about defaulting to
_not_ triggering DLM/clustered calls...

Also, I have no idea if I somehow messed up the clustered-locking
patches when I refreshed them to work with my quilt tree.  I had a quick
review of the patch changes I made and the only one that needs a closer
look was dm-snapshot-clustered-locking-optimize.patch.

Mikulas please review/rebase your tree using my updated quilt tree and
let me know if you see any issues.  Maybe you have newer patches at this
point?

Thanks,
Mike




More information about the dm-devel mailing list