Re: [PATCH v3 2/2] xfs_admin: get UUID of mounted filesystem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> On Jan 5, 2023, at 11:47 AM, Darrick J. Wong <djwong@xxxxxxxxxx> wrote:
> 
> On Wed, Jan 04, 2023 at 04:36:13PM -0800, Catherine Hoang wrote:
>> Adapt this tool to call xfs_io to retrieve the UUID of a mounted filesystem.
>> This is a precursor to enabling xfs_admin to set the UUID of a mounted
>> filesystem.
>> 
>> Signed-off-by: Catherine Hoang <catherine.hoang@xxxxxxxxxx>
>> ---
>> db/xfs_admin.sh | 61 +++++++++++++++++++++++++++++++++++++++++--------
>> 1 file changed, 51 insertions(+), 10 deletions(-)
>> 
>> diff --git a/db/xfs_admin.sh b/db/xfs_admin.sh
>> index 409975b2..b73fb3ad 100755
>> --- a/db/xfs_admin.sh
>> +++ b/db/xfs_admin.sh
>> @@ -5,8 +5,11 @@
>> #
>> 
>> status=0
>> +require_offline=""
>> +require_online=""
>> DB_OPTS=""
>> REPAIR_OPTS=""
>> +IO_OPTS=""
>> REPAIR_DEV_OPTS=""
>> LOG_OPTS=""
>> USAGE="Usage: xfs_admin [-efjlpuV] [-c 0|1] [-L label] [-O v5_feature] [-r rtdev] [-U uuid] device [logdev]"
>> @@ -14,17 +17,37 @@ USAGE="Usage: xfs_admin [-efjlpuV] [-c 0|1] [-L label] [-O v5_feature] [-r rtdev
>> while getopts "c:efjlL:O:pr:uU:V" c
>> do
>> 	case $c in
>> -	c)	REPAIR_OPTS=$REPAIR_OPTS" -c lazycount="$OPTARG;;
>> -	e)	DB_OPTS=$DB_OPTS" -c 'version extflg'";;
>> -	f)	DB_OPTS=$DB_OPTS" -f";;
>> -	j)	DB_OPTS=$DB_OPTS" -c 'version log2'";;
>> +	c)	REPAIR_OPTS=$REPAIR_OPTS" -c lazycount="$OPTARG
>> +		require_offline=1
>> +		;;
>> +	e)	DB_OPTS=$DB_OPTS" -c 'version extflg'"
>> +		require_offline=1
>> +		;;
>> +	f)	DB_OPTS=$DB_OPTS" -f"
>> +		require_offline=1
>> +		;;
>> +	j)	DB_OPTS=$DB_OPTS" -c 'version log2'"
>> +		require_offline=1
>> +		;;
>> 	l)	DB_OPTS=$DB_OPTS" -r -c label";;
> 
> Now that xfs_admin can issue commands directly against mounted
> filesystems, I suppose it ought to wire up support for querying and
> changing the label as well.  Doing that should be trivial, and
> definitely an idea for a separate patch:
> 
> # xfs_io -c 'label' /mnt
> label = "hi"
> # xfs_io -c 'label -s bye' /mnt
> label = "bye"
> # xfs_io -c 'label' /mnt
> label = "bye"

Sure, I can do that in a separate patch. Thank you!
> 
> *This* patch looks correct to me, so
> Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx>
> 
> --D
> 
>> -	L)	DB_OPTS=$DB_OPTS" -c 'label "$OPTARG"'";;
>> -	O)	REPAIR_OPTS=$REPAIR_OPTS" -c $OPTARG";;
>> -	p)	DB_OPTS=$DB_OPTS" -c 'version projid32bit'";;
>> -	r)	REPAIR_DEV_OPTS=" -r '$OPTARG'";;
>> -	u)	DB_OPTS=$DB_OPTS" -r -c uuid";;
>> -	U)	DB_OPTS=$DB_OPTS" -c 'uuid "$OPTARG"'";;
>> +	L)	DB_OPTS=$DB_OPTS" -c 'label "$OPTARG"'"
>> +		require_offline=1
>> +		;;
>> +	O)	REPAIR_OPTS=$REPAIR_OPTS" -c $OPTARG"
>> +		require_offline=1
>> +		;;
>> +	p)	DB_OPTS=$DB_OPTS" -c 'version projid32bit'"
>> +		require_offline=1
>> +		;;
>> +	r)	REPAIR_DEV_OPTS=" -r '$OPTARG'"
>> +		require_offline=1
>> +		;;
>> +	u)	DB_OPTS=$DB_OPTS" -r -c uuid"
>> +		IO_OPTS=$IO_OPTS" -r -c fsuuid"
>> +		;;
>> +	U)	DB_OPTS=$DB_OPTS" -c 'uuid "$OPTARG"'"
>> +		require_offline=1
>> +		;;
>> 	V)	xfs_db -p xfs_admin -V
>> 		status=$?
>> 		exit $status
>> @@ -38,6 +61,24 @@ set -- extra $@
>> shift $OPTIND
>> case $# in
>> 	1|2)
>> +		if mntpt="$(findmnt -t xfs -f -n -o TARGET "$1" 2>/dev/null)"; then
>> +			# filesystem is mounted
>> +			if [ -n "$require_offline" ]; then
>> +				echo "$1: filesystem is mounted."
>> +				exit 2
>> +			fi
>> +
>> +			if [ -n "$IO_OPTS" ]; then
>> +				exec xfs_io -p xfs_admin $IO_OPTS "$mntpt"
>> +			fi
>> +		fi
>> +
>> +		# filesystem is not mounted
>> +		if [ -n "$require_online" ]; then
>> +			echo "$1: filesystem is not mounted"
>> +			exit 2
>> +		fi
>> +
>> 		# Pick up the log device, if present
>> 		if [ -n "$2" ]; then
>> 			LOG_OPTS=" -l '$2'"
>> -- 
>> 2.25.1
>> 





[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux