mirror of
https://github.com/zrepl/zrepl.git
synced 2025-08-15 09:32:25 +02:00
bookmark every snapshot
replication logic already supports bookmarks \o/ refs #34
This commit is contained in:
35
zfs/zfs.go
35
zfs/zfs.go
@ -286,9 +286,17 @@ func ZFSDestroy(dataset string) (err error) {
|
||||
|
||||
}
|
||||
|
||||
func zfsBuildSnapName(fs *DatasetPath, name string) string { // TODO defensive
|
||||
return fmt.Sprintf("%s@%s", fs.ToString(), name)
|
||||
}
|
||||
|
||||
func zfsBuildBookmarkName(fs *DatasetPath, name string) string { // TODO defensive
|
||||
return fmt.Sprintf("%s#%s", fs.ToString(), name)
|
||||
}
|
||||
|
||||
func ZFSSnapshot(fs *DatasetPath, name string, recursive bool) (err error) {
|
||||
|
||||
snapname := fmt.Sprintf("%s@%s", fs.ToString(), name)
|
||||
snapname := zfsBuildSnapName(fs, name)
|
||||
cmd := exec.Command(ZFS_BINARY, "snapshot", snapname)
|
||||
|
||||
stderr := bytes.NewBuffer(make([]byte, 0, 1024))
|
||||
@ -308,3 +316,28 @@ func ZFSSnapshot(fs *DatasetPath, name string, recursive bool) (err error) {
|
||||
return
|
||||
|
||||
}
|
||||
|
||||
func ZFSBookmark(fs *DatasetPath, snapshot, bookmark string) (err error) {
|
||||
|
||||
snapname := zfsBuildSnapName(fs, snapshot)
|
||||
bookmarkname := zfsBuildBookmarkName(fs, bookmark)
|
||||
|
||||
cmd := exec.Command(ZFS_BINARY, "bookmark", snapname, bookmarkname)
|
||||
|
||||
stderr := bytes.NewBuffer(make([]byte, 0, 1024))
|
||||
cmd.Stderr = stderr
|
||||
|
||||
if err = cmd.Start(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err = cmd.Wait(); err != nil {
|
||||
err = ZFSError{
|
||||
Stderr: stderr.Bytes(),
|
||||
WaitErr: err,
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user