On Tue, Jan 02, 2024 at 02:13:50PM +0530, Chandan Babu R wrote: > Metadump v2 supports dumping contents of an external log device. This commit > modifies _scratch_xfs_mdrestore() and _xfs_mdrestore() to be able to restore > metadump files which contain data from external log devices. > > The callers of _scratch_xfs_mdrestore() must set the value of $SCRATCH_LOGDEV > only when all of the following conditions are met: > 1. Metadump is in v2 format. > 2. Metadump has contents dumped from an external log device. > > Signed-off-by: Chandan Babu R <chandanbabu@xxxxxxxxxx> Looks very similar to my version, Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx> --D > --- > common/xfs | 19 +++++++++++++++++-- > 1 file changed, 17 insertions(+), 2 deletions(-) > > diff --git a/common/xfs b/common/xfs > index 558a6bb5..248c8361 100644 > --- a/common/xfs > +++ b/common/xfs > @@ -682,7 +682,8 @@ _xfs_metadump() { > _xfs_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 > @@ -695,6 +696,10 @@ _xfs_mdrestore() { > fi > test -r "$metadump" || return 1 > > + if [ "$logdev" != "none" ]; then > + options="$options -l $logdev" > + fi > + > $XFS_MDRESTORE_PROG $options "${metadump}" "${device}" > } > > @@ -724,8 +729,18 @@ _scratch_xfs_mdrestore() > { > local metadump=$1 > shift > + local logdev=none > + local options="$@" > > - _xfs_mdrestore "$metadump" "$SCRATCH_DEV" "$@" > + # $SCRATCH_LOGDEV should have a non-zero length value only when all of > + # the following conditions are met. > + # 1. Metadump is in v2 format. > + # 2. Metadump has contents dumped from an external log device. > + if [ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ]; then > + logdev=$SCRATCH_LOGDEV > + fi > + > + _xfs_mdrestore "$metadump" "$SCRATCH_DEV" "$logdev" "$@" > } > > # Do not use xfs_repair (offline fsck) to rebuild the filesystem > -- > 2.43.0 > >