Hi Dietmar, > I just started to implement a PVE storage driver for lvmthin: > > https://git.proxmox.com/?p=pve-storage.git;a=blob;f=PVE/Storage/LvmThinPlugin.pm > > So far I just use: > > sub volume_snapshot_rollback { > my ($class, $scfg, $storeid, $volname, $snap) = @_; > > my $vg = $scfg->{vgname}; > my $snapvol = "snap_${volname}_$snap"; > > my $cmd = ['/sbin/lvremove', '-f', "$vg/$volname"]; > run_command($cmd, errmsg => "lvremove '$vg/$volname' error"); > > $cmd = ['/sbin/lvcreate', '-kn', '-n', $volname, '-s', "$vg/$snapvol"]; > run_command($cmd, errmsg => "lvm rollback '$vg/$snapvol' error"); > } > > While that works, it is not atomic. > > Maybe you already found a better way to implement rollback within drbdmanage? Not atomically, no.
We've got an even more interesting problem - we should do atomic changes across the whole cluster... We'll probably have to do the indirection trick - storing the ProxMox names in some hash table to index the resource names, and doing an atomic update in that one; then all new "attach" commands would take the new resource. Don't know how you would get the LVM sequence atomically... well, you could "lvcreate" *first*, and then do a name-swap via sed/awk/perl and vgcfgrestore... Ouch. I guess the most clean way would be to change "lvrename" to allow multiple renames in an atomic way - but that's a bit of work. _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel