func execSubvolumeSnapshot(src string, dest string, readOnly bool) (retErr error) { defer func() { protolog.Info(&SubvolumeSnapshot{src, dest, readOnly, errorToString(retErr)}) }() if readOnly { return executil.Run("btrfs", "subvolume", "snapshot", "-r", src, dest) } return executil.Run("btrfs", "subvolume", "snapshot", src, dest) }
func execPropertySetReadonly(path string, readonly bool) error { readonlyString := "false" if readonly { readonlyString = "true" } return executil.Run("btrfs", "property", "set", path, "ro", readonlyString) }
func execSubvolumeExists(path string) (result bool) { defer func() { protolog.Info(&SubvolumeExists{path, result}) }() if err := executil.Run("btrfs", "subvolume", "show", path); err != nil { return false } return true }
func execSubvolumeSnapshot(src string, dest string, readonly bool) error { if readonly { return executil.Run("btrfs", "subvolume", "snapshot", "-r", src, dest) } return executil.Run("btrfs", "subvolume", "snapshot", src, dest) }
func execSubvolumeCreate(path string) error { return executil.Run("btrfs", "subvolume", "create", path) }
func snapshot(volume string, dest string, readonly bool) error { if readonly { return executil.Run("btrfs", "subvolume", "snapshot", "-r", FilePath(volume), FilePath(dest)) } return executil.Run("btrfs", "subvolume", "snapshot", FilePath(volume), FilePath(dest)) }
func subvolumeDelete(name string) error { return executil.Run("btrfs", "subvolume", "delete", FilePath(name)) }
func execSubvolumeExists(path string) bool { if err := executil.Run("btrfs", "subvolume", "show", path); err != nil { return false } return true }
func execSubvolumeDelete(path string) error { return executil.Run("btrfs", "subvolume", "delete", path) }
func execSubvolumeDelete(path string) (retErr error) { defer func() { protolog.Info(&SubvolumeDelete{path, errorToString(retErr)}) }() return executil.Run("btrfs", "subvolume", "delete", path) }