<div dir="ltr"><div><div><div>I currently have 2 branches related to snapshots on GlusterFS.<br><br></div><a href="https://github.com/major0/glusterfs/tree/lvm-snapshot-cleanup">https://github.com/major0/glusterfs/tree/lvm-snapshot-cleanup</a><br>Based code from Sriram that I found on GitHub, though I removed the ZFS code from Sriram&#39;s patches and created this LVM-only branch. Subsequent changes to this branch where done i response to changes necessary to implement support for btrfs snapshots (and cleanup a memory leak in the missed-snapshot code)...<br><br><br><a href="https://github.com/major0/glusterfs/tree/btrfs-snapshots">https://github.com/major0/glusterfs/tree/btrfs-snapshots</a><br></div>This code is branched from my lvm-snapshot-cleanup branch and is directly dependant on the changes contained there-in.<br><br></div>Both of these branches are currently in-flux, and I have been performing regular rebasing against the GlusterFS master branch.<br><div><div><br></div><div>Btrfs snapshots currently work and have been tested on Ubuntu 16.04, though the process for configuring btrfs for gluster snapshots has not yet been documented.<br><br></div><div>Required interfaces to support hard-coded snapshot support can be found:<br><a href="https://github.com/major0/glusterfs/blob/lvm-snapshot-cleanup/xlators/mgmt/glusterd/src/snapshot/glusterd-lvm-snapshot.h">https://github.com/major0/glusterfs/blob/lvm-snapshot-cleanup/xlators/mgmt/glusterd/src/snapshot/glusterd-lvm-snapshot.h</a><br><br></div><div>It should be relatively straight-forward to package up these interfaces into a structure of function pointers and allow glusterd to itterate the array firing off the glusterd_is_&lt;type&gt;_brick() function at the path to figure out which subsystem to use.<br></div></div></div>