Commit d98fee83 authored by Natanael Copa's avatar Natanael Copa
Browse files

main/alpine-conf: add support for read-only lbu media

ref #477
parent 7016b230
From 4e7ab7455206ec157a72d07c40c07f1a299529f1 Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
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 <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"
--
1.7.3.2
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=alpine-conf
pkgver=2.5.4
pkgrel=0
pkgrel=1
pkgdesc="Alpine configuration management scripts"
url=http://git.alpinelinux.org/cgit/$pkgname
depends="openrc"
source="http://git.alpinelinux.org/cgit/$pkgname/snapshot/$pkgname-$pkgver.tar.bz2"
source="http://git.alpinelinux.org/cgit/$pkgname/snapshot/$pkgname-$pkgver.tar.bz2
0001-lbu-remount-LBU_MEDIA-as-read-write-if-it-was-read-o.patch
"
license="GPL-2"
_builddir="$srcdir"/$pkgname-$pkgver
......@@ -33,4 +35,5 @@ package() {
ln -s lbu "$pkgdir"/sbin/lbu_$i
done
}
md5sums="91a2b8a150917cc06f6c9ec839b70bb0 alpine-conf-2.5.4.tar.bz2"
md5sums="91a2b8a150917cc06f6c9ec839b70bb0 alpine-conf-2.5.4.tar.bz2
9245a4bc53b24584d43b3a3f1556c500 0001-lbu-remount-LBU_MEDIA-as-read-write-if-it-was-read-o.patch"
Supports Markdown
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