0
  "   ˆl–Ü4ý(&ÔËm
�ÆŸ¸ÓêbÑ¿Á448À¿ À    # pwd(1) completion                                        -*- shell-script -*-

_pwd()
{
    local cur prev words cword
    _init_completion || return

    case $prev in
        --help | --version)
            return
            ;;
    esac

    COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur"))
    [[ ${COMPREPLY-} ]] ||
        COMPREPLY=($(compgen -W '$(_parse_usage "$1")' -- "$cur"))
} &&
    complete -F _pwd pwd

# ex: filetype=sh
  #   ˆl–Ãa¾”ªe¶¥6 ¸®2Ê˜´oÂ„‚ëßÁÀ /’    #!/usr/bin/bash
#
# Copyright (C) 2022 Red Hat, Inc. All rights reserved.
#
# This file is part of LVM2.
#
# This copyrighted material is made available to anyone wishing to use,
# modify, copy, or redistribute it subject to the terms and conditions
# of the GNU General Public License v.2.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

DM_DEV_DIR="${DM_DEV_DIR:-/dev}"

errorexit() {
	echo "$1" >&2
	exit 1
}

logmsg() {
	echo "$1"
	logger "${SCRIPTNAME}: $1"
}

btrfs_devid() {
	local devpath="$1"
	local devid

	devpath="$(readlink "$devpath")"

	# It could be a multi-devices btrfs so call grep.
	devid="$(LC_ALL=C btrfs filesystem show "$devpath" | grep "$devpath"$ )"

	# if DM_DEV_DIR is not /dev/ e.g /tmp, output of btrfs filesystem show would be like:
	# Label: none  uuid: d17f6974-267f-4140-8d71-83d4afd36a72
	# 		 Total devices 1 FS bytes used 144.00KiB
	# 		 devid    1 size 256.00MiB used 16.75MiB path /dev/mapper/LVMTEST120665vg-LV1
	#
	# But the VOLUME here is /tmp/mapper/LVMTEST120665vg-LV1
	if [ -z "$devid" ];then
		tmp_path="${devpath/#${DM_DEV_DIR}//dev}"
		devid="$(LC_ALL=C btrfs filesystem show "$devpath" | grep "$tmp_path"$)"
		devid=${devid##*devid}
	fi

	devid=${devid##*devid}
	devid=${devid%%size*}
	devid="$(echo "$devid" |sed 's/^[ \t]*//g'|sed 's/[ \t]*$'//g)"

	echo "$devid"
}

# Set to 1 while the fs is temporarily mounted on $TMPDIR
TMP_MOUNT_DONE=0
# Set to 1 if the fs resize command fails
RESIZEFS_FAILED=0

fsextend() {
	if [ "$DO_UNMOUNT" -eq 1 ]; then
		logmsg "unmount ${MOUNTDIR}"
		if umount "$MOUNTDIR"; then
			logmsg "unmount done"
		else
			logmsg "unmount failed"
			exit 1
		fi
	fi

	if [ "$DO_FSCK" -eq 1 ]; then
		if [[ "$FSTYPE" == "ext"* ]]; then
			logmsg "e2fsck ${DEVPATH}"
			if e2fsck -f -p "$DEVPATH"; then
				logmsg "e2fsck done"
			else
				logmsg "e2fsck failed"
				exit 1
			fi
		elif [[ "$FSTYPE" == "btrfs" ]]; then
			logmsg "btrfsck ${DEVPATH}"
			if btrfsck "$DEVPATH"; then
				logmsg "btrfsck done"
			else
				logmsg "btrfsck failed"
				exit 1
			fi
		fi
	fi
	
	if [ "$DO_CRYPTRESIZE" -eq 1 ]; then
		logmsg "cryptsetup resize ${DEVPATH}"
		if cryptsetup resize "$DEVPATH"; then
			logmsg "cryptsetup done"
		else
			logmsg "cryptsetup failed"
			exit 1
		fi
	fi

	if [ "$DO_MOUNT" -eq 1 ]; then
		logmsg "mount ${DEVPATH} ${TMPDIR}"
		if mount -t "$FSTYPE" "$DEVPATH" "$TMPDIR"; then
			logmsg "mount done"
			TMP_MOUNT_DONE=1
		else
			logmsg "mount failed"
			exit 1
		fi
	fi

	if [[ "$FSTYPE" == "ext"* ]]; then
		logmsg "resize2fs ${DEVPATH}"
		if resize2fs "$DEVPATH"; then
			logmsg "resize2fs done"
		else
			logmsg "resize2fs failed"
			RESIZEFS_FAILED=1
		fi
	elif [[ "$FSTYPE" == "xfs" ]]; then
		logmsg "xfs_growfs ${DEVPATH}"
		if xfs_growfs "$DEVPATH"; then
			logmsg "xfs_growfs done"
		else
			logmsg "xfs_growfs failed"
			RESIZEFS_FAILED=1
		fi
	elif [[ "$FSTYPE" == "btrfs" ]]; then
		NEWSIZEBYTES=${NEWSIZEBYTES:-max}
		BTRFS_DEVID="$(btrfs_devid "$DEVPATH")"
		REAL_MOUNTPOINT="$MOUNTDIR"

		if [ $TMP_MOUNT_DONE -eq 1 ]; then
			REAL_MOUNTPOINT="$TMPDIR"
		fi

		logmsg "btrfs filesystem resize ${BTRFS_DEVID}:${NEWSIZEBYTES} ${REAL_MOUNTPOINT}"
		if btrfs filesystem resize "$BTRFS_DEVID":"$NEWSIZEBYTES" "$REAL_MOUNTPOINT"; then
			logmsg "btrfs filesystem resize done"
		else
			logmsg "btrfs filesystem resize failed"
			RESIZEFS_FAILED=1
		fi
	fi

	# If the fs was te