#!/usr/bin/sh # Copyright © 2005-2013 Roger Leigh <rleigh@debian.org> # # schroot is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # schroot is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see # <http://www.gnu.org/licenses/>. # ##################################################################### set -e . "$SETUP_DATA_DIR/common-data" . "$SETUP_DATA_DIR/common-functions" . "$SETUP_DATA_DIR/common-config" if [ "$CHROOT_TYPE" = "btrfs-snapshot" ]; then if [ $STAGE = "setup-start" ]; then if [ ! -d "$CHROOT_BTRFS_SOURCE_SUBVOLUME" ]; then fatal "Btrfs source subvolume directory '$CHROOT_BTRFS_SOURCE_SUBVOLUME' does not exist" fi if [ ! -d "$CHROOT_BTRFS_SNAPSHOT_DIRECTORY" ]; then fatal "Btrfs snapshot directory '$CHROOT_BTRFS_SNAPSHOT_DIRECTORY' does not exist" fi info "Creating snapshot $CHROOT_BTRFS_SNAPSHOT_NAME from subvolume $CHROOT_BTRFS_SOURCE_SUBVOLUME" if [ "$VERBOSE" = "verbose" ]; then btrfs subvolume snapshot "$CHROOT_BTRFS_SOURCE_SUBVOLUME" \ "$CHROOT_BTRFS_SNAPSHOT_NAME" else btrfs subvolume snapshot "$CHROOT_BTRFS_SOURCE_SUBVOLUME" \ "$CHROOT_BTRFS_SNAPSHOT_NAME" > /dev/null fi elif [ $STAGE = "setup-stop" ]; then if [ -d "$CHROOT_BTRFS_SNAPSHOT_NAME" ]; then info "Deleting snapshot $CHROOT_BTRFS_SNAPSHOT_NAME" if [ "$VERBOSE" = "verbose" ]; then btrfs subvolume delete "$CHROOT_BTRFS_SNAPSHOT_NAME" || true else btrfs subvolume delete "$CHROOT_BTRFS_SNAPSHOT_NAME" > /dev/null || true fi else # The block device no longer exists, or was never created, # for example on lvcreate failure. warn "$CHROOT_BTRFS_SNAPSHOT_NAME does not exist (it may have been removed previously)" fi fi fi