Commit 4e7ab745 authored by Natanael Copa's avatar Natanael Copa

lbu: remount LBU_MEDIA as read-write if it was read-only

ref #477
parent 884e9560
#!/bin/sh
# lbu - utility to create local backups.
# Copyright (c) 2006 Natanael Copa
# Copyright (c) 2006-2010 Natanael Copa <ncopa@alpinelinux.org>
# May be distributed under GPL2
VERSION=@VERSION@
......@@ -54,6 +54,9 @@ Common options:
cleanup() {
local i
for i in $REMOUNT_RO_LIST; do
mount -o remount,ro $i
done
for i in $UMOUNT_LIST; do
umount $i
done
......@@ -64,9 +67,30 @@ exit_clean() {
exit 1
}
# check if given dir is not a mounted mountpoint
is_unmounted() {
awk "\$2 == \"$1\" {exit 1}" /proc/mounts
}
mount_once() {
if awk "\$2 == \"$1\" {exit 1}" /proc/mounts; then
mount $1 && UMOUNT_LIST="$1 $UMOUNT_LIST"
if is_unmounted "$1"; then
mount $1 && UMOUNT_LIST="$1 $UMOUNT_LIST" || return 1
fi
}
# check if given dir is read-only
is_ro() {
local tmpfile=$(mktemp -p "$1")
[ -z "$tmpfile" ] && return 0
rm -f "$tmpfile"
return 1
}
mount_once_rw() {
mount_once "$1" || return 1
if is_ro "$1"; then
REMOUNT_RO_LIST="$1 $REMOUNT_RO_LIST"
mount -o remount,rw "$1"
fi
}
......@@ -385,7 +409,7 @@ cmd_commit() {
# mount media unles its already mounted
mnt=/media/$media
[ -d "$mnt" ] || usage
mount_once "$mnt" || die "failed to mount $mnt"
mount_once_rw "$mnt" || die "failed to mount $mnt"
# find the outfile
outfile="$mnt/$(hostname).apkovl.tar.gz"
......@@ -538,7 +562,7 @@ cmd_revert() {
if [ -n "$ENCRYPTION" ]; then
current="$current.$ENCRYPTION"
fi
mount_once "$mnt" || die "failed to mount $mnt"
mount_once_rw "$mnt" || die "failed to mount $mnt"
[ -f "$revertto" ] || die "file not found: $revertto"
backup_apkovl "$current"
vecho "Reverting to $1"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment