From d98fee839dff01a68747a69df124660ff774a2f6 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Fri, 3 Dec 2010 09:31:07 +0000 Subject: main/alpine-conf: add support for read-only lbu media ref #477 --- ...-LBU_MEDIA-as-read-write-if-it-was-read-o.patch | 87 ++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 main/alpine-conf/0001-lbu-remount-LBU_MEDIA-as-read-write-if-it-was-read-o.patch (limited to 'main/alpine-conf/0001-lbu-remount-LBU_MEDIA-as-read-write-if-it-was-read-o.patch') diff --git a/main/alpine-conf/0001-lbu-remount-LBU_MEDIA-as-read-write-if-it-was-read-o.patch b/main/alpine-conf/0001-lbu-remount-LBU_MEDIA-as-read-write-if-it-was-read-o.patch new file mode 100644 index 0000000000..ad8dd2e5c1 --- /dev/null +++ b/main/alpine-conf/0001-lbu-remount-LBU_MEDIA-as-read-write-if-it-was-read-o.patch @@ -0,0 +1,87 @@ +From 4e7ab7455206ec157a72d07c40c07f1a299529f1 Mon Sep 17 00:00:00 2001 +From: Natanael Copa +Date: Fri, 3 Dec 2010 08:49:43 +0000 +Subject: [PATCH] lbu: remount LBU_MEDIA as read-write if it was read-only + +ref #477 +--- + lbu.in | 34 +++++++++++++++++++++++++++++----- + 1 files changed, 29 insertions(+), 5 deletions(-) + +diff --git a/lbu.in b/lbu.in +index dfd7e3c..a0dfe16 100644 +--- a/lbu.in ++++ b/lbu.in +@@ -1,7 +1,7 @@ + #!/bin/sh + + # lbu - utility to create local backups. +-# Copyright (c) 2006 Natanael Copa ++# Copyright (c) 2006-2010 Natanael Copa + # 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" +-- +1.7.3.2 + -- cgit v1.2.3