@@ -134,7 +134,8 @@ _ext4_mdrestore()
{
local metadump="$1"
local device="$2"
- shift; shift
+ local logdev="$3"
+ shift; shift; shift
local options="$@"
# If we're configured for compressed dumps and there isn't already an
@@ -148,6 +149,20 @@ _ext4_mdrestore()
test -r "$metadump" || return 1
$E2IMAGE_PROG $options -r "${metadump}" "${SCRATCH_DEV}"
+ res=$?
+ test $res -ne 0 && return $res
+
+ # ext4 cannot e2image external logs, so we have to reformat the log
+ # device to match the restored fs
+ if [ "${logdev}" != "none" ]; then
+ local fsuuid="$($DUMPE2FS_PROG -h "${SCRATCH_DEV}" 2>/dev/null | \
+ grep 'Journal UUID:' | \
+ sed -e 's/Journal UUID:[[:space:]]*//g')"
+ $MKFS_EXT4_PROG -O journal_dev "${logdev}" \
+ -F -U "${fsuuid}"
+ res=$?
+ fi
+ return $res
}
# this test requires the ext4 kernel support crc feature on scratch device
@@ -1021,20 +1021,12 @@ _scratch_populate_restore_cached() {
return $?
;;
"ext2"|"ext3"|"ext4")
- _ext4_mdrestore "${metadump}" "${SCRATCH_DEV}"
- ret=$?
- test $ret -ne 0 && return $ret
+ local logdev=none
+ [ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \
+ logdev=$SCRATCH_LOGDEV
- # ext4 cannot e2image external logs, so we have to reformat
- # the scratch device to match the restored fs
- if [ -n "${SCRATCH_LOGDEV}" ]; then
- local fsuuid="$($DUMPE2FS_PROG -h "${SCRATCH_DEV}" 2>/dev/null | \
- grep 'Journal UUID:' | \
- sed -e 's/Journal UUID:[[:space:]]*//g')"
- $MKFS_EXT4_PROG -O journal_dev "${SCRATCH_LOGDEV}" \
- -F -U "${fsuuid}"
- fi
- return 0
+ _ext4_mdrestore "${metadump}" "${SCRATCH_DEV}" "${logdev}"
+ return $?
;;
esac
return 1