diff options
Diffstat (limited to 'source/a/btrfs-progs/fsck.btrfs')
-rw-r--r-- | source/a/btrfs-progs/fsck.btrfs | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/source/a/btrfs-progs/fsck.btrfs b/source/a/btrfs-progs/fsck.btrfs new file mode 100644 index 00000000..779e0b79 --- /dev/null +++ b/source/a/btrfs-progs/fsck.btrfs @@ -0,0 +1,57 @@ +#!/bin/sh + +# Copyright 2011 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Currently, btrfsck does not recognize any options, so eat any initial options +# beginning with '-'. Then, check the remaining args with btrfsck only if they +# exist and are readable. + +# Strip initial args: +while [ ! -z "$1" ]; do + if [ "$(echo $1 | cut -b1)" = "-" ]; then + shift # strip option from command line + else + break + fi +done + +# Main filesystem check loop: +RETVAL=0 +while [ ! -z "$1" ]; do + if [ -r "$1" ]; then + echo "fsck.btrfs: Checking filesystem on $1" + # Checking the root filesystem (even read-only) will fail, check for that: + if ! grep -w "$1" /etc/fstab | grep -wq / ; then + btrfsck "$1" + ERRCODE=$? + if [ ! $ERRCODE = 0 ]; then + RETVAL=$ERRCODE + fi + else + echo " $1 mounted on /, skipped." + fi + fi + shift +done + +# If there was an error, return the most recent error code: +exit $RETVAL + |