PNG  IHDR* pHYs+ IDATx]n#; cdLb Ǚ[at¤_:uP}>!Usă cag޿ ֵNu`ݼTâabO7uL&y^wFٝA"l[|ŲHLN밪4*sG3|Dv}?+y߉{OuOAt4Jj.u]Gz*҉sP'VQKbA1u\`& Af;HWj hsO;ogTu uj7S3/QzUr&wS`M$X_L7r2;aE+ώ%vikDA:dR+%KzƉo>eOth$z%: :{WwaQ:wz%4foɹE[9<]#ERINƻv溂E%P1i01 |Jvҗ&{b?9g=^wζXn/lK::90KwrюO\!ջ3uzuGv^;騢wq<Iatv09:tt~hEG`v;3@MNZD.1]L:{ծI3`L(÷ba")Y.iljCɄae#I"1 `3*Bdz>j<fU40⨬%O$3cGt]j%Fߠ_twJ;ABU8vP3uEԑwQ V:h%))LfraqX-ۿX]v-\9I gl8tzX ]ecm)-cgʒ#Uw=Wlێn(0hPP/ӨtQ“&J35 $=]r1{tLuǮ*i0_;NƝ8;-vݏr8+U-kruȕYr0RnC]*ެ(M:]gE;{]tg(#ZJ9y>utRDRMdr9㪩̞zֹb<ģ&wzJM"iI( .ꮅX)Qw:9,i좜\Ԛi7&N0:asϓc];=ΗOӣ APqz93 y $)A*kVHZwBƺnWNaby>XMN*45~ղM6Nvm;A=jֲ.~1}(9`KJ/V F9[=`~[;sRuk]rєT!)iQO)Y$V ی ۤmzWz5IM Zb )ˆC`6 rRa}qNmUfDsWuˤV{ Pݝ'=Kֳbg,UҘVz2ﴻnjNgBb{? ߮tcsͻQuxVCIY۠:(V뺕 ٥2;t`@Fo{Z9`;]wMzU~%UA蛚dI vGq\r82iu +St`cR.6U/M9IENDB` REDROOM
PHP 5.6.40
Preview: lvm_import_vdo Size: 23.14 KB
/sbin/lvm_import_vdo

#!/bin/bash
#
# Copyright (C) 2021-2023 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
#
# Author: Zdenek Kabelac <zkabelac at redhat.com>
#
# Script for importing VDO volumes to lvm2 managed VDO LVs
#
# Needed utilities:
#  lvm, dmsetup,
#  vdo,
#  grep, awk, sed, blockdev, readlink, stat, mkdir, truncate
#
# Conversion is using  'vdo convert' support from VDO manager to move
# existing VDO header by 2M which makes space to place in PV header
# and VG metadata area, and then create VDOPOOL LV and VDO LV in such VG.
#

set -euE -o pipefail

TOOL=lvm_import_vdo
IMPORT_NAME="VDO_${TOOL}_${RANDOM}$$"
test ${#IMPORT_NAME} -lt 100 || error "Random name \"$IMPORT_NAME\" is too long!"
TEMPDIR="${TMPDIR:-/tmp}/$IMPORT_NAME"

_SAVEPATH=$PATH
PATH="/sbin:/usr/sbin:/bin:/usr/sbin:$PATH"

# Set of trapped signals
declare -a SIGNALS=("HUP" "INT" "QUIT" "ABRT" "TERM" "EXIT")

# user may override lvm location by setting LVM_BINARY
LVM=${LVM_BINARY:-lvm}
VDO=${VDO_BINARY:-vdo}
BLOCKDEV="blockdev"
LOSETUP="losetup"
READLINK="readlink"
READLINK_E="-e"
STAT="stat"
MKDIR="mkdir"
TRUNCATE="truncate"
DMSETUP="dmsetup"

DM_DEV_DIR="${DM_DEV_DIR:-/dev}"
DM_UUID_PREFIX="${DM_UUID_PREFIX:-}"
DM_VG_NAME=
DM_LV_NAME=
DEFAULT_VDO_CONFIG="/etc/vdoconf.yml" # Default location of vdo's manager config file
VDO_CONFIG=${VDO_CONFIG:-}   # can be overridden with --vdo-config
VDO_CONFIG_RESTORE=
VDOCONF=
test -n "$VDO_CONFIG" && VDOCONF="-f $VDO_CONFIG"

DEVICE=
VGNAME=
LVNAME=
DEVMAJOR=0
DEVMINOR=0
PROMPTING=
USE_VDO_DM_SNAPSHOT="--yes"
VDO_DM_SNAPSHOT_NAME=
VDO_DM_SNAPSHOT_DEVICE=
VDO_SNAPSHOT_LOOP=
VDO_INCONSISTENT=

DRY=0
VERB=
FORCE=
YES=
ABORT_AFTER_VDO_CONVERT=0
VDO_ALLOCATION_PARAMS=

# default name for converted VG and its VDO LV
DEFAULT_NAME="vdovg/vdolvol"
NAME=""

# predefine empty
vdo_ackThreads=
vdo_bioRotationInterval=
vdo_bioThreads=
vdo_blockMapCacheSize=
vdo_blockMapPeriod=
vdo_compression=
vdo_cpuThreads=
vdo_deduplication=
vdo_hashZoneThreads=
vdo_indexMemory=
vdo_indexSparse=
vdo_logicalBlockSize=
vdo_logicalThreads=
vdo_maxDiscardSize=
vdo_physicalThreads=
vdo_slabSize=
vdo_writePolicy=

# help message
tool_usage() {
	echo "${TOOL}: Utility to convert VDO volume to VDO LV."
	echo
	echo "	${TOOL} [options] <vdo_device_path>"
	echo
	echo "	Options:"
	echo "	  -f | --force	      Bypass sanity checks"
	echo "	  -h | --help	      Show this help message"
	echo "	  -n | --name	      Specifies VG/LV name for converted VDO volume"
	echo "	  -v | --verbose      Be verbose"
	echo "	  -y | --yes	      Answer \"yes\" at any prompts"
	echo "	       --dry-run      Print verbosely commands without running them"
	echo "	       --no-snapshot  Do not use snapshot for converted VDO device"
	echo "	       --uuid-prefix  Prefix for DM snapshot uuid"
	echo "	       --vdo-config   Configuration file for VDO manager"

	exit
}

verbose() {
	test -z "$VERB" || echo "$TOOL:" "$@"
}

# Support multi-line error messages
error() {
	for i in "$@" ;  do
		echo "$TOOL: $i" >&2
	done
	return 1
}

warn() {
	echo "$TOOL: WARNING: $i" >&2
}

dry() {
	if [ "$DRY" -ne 0 ]; then
		verbose "Dry execution" "$@"
		return 0
	fi
	verbose "Executing" "$@"
	"$@"
}

cleanup() {
	RC=$?	# Return code + 128  of the last command eg INT=2 + 128 -> 130

	trap '' "${SIGNALS[@]}" # mute trap for all signals to not interrupt cleanup() on any next signal

	[ -z "$PROMPTING" ] || echo "No"

	[ -e "$VDO_CONFIG_RESTORE" ] && { dry cp -a "$VDO_CONFIG_RESTORE" "${VDO_CONFIG:-"$DEFAULT_VDO_CONFIG"}" || true ; }

	if [ -n "$VDO_DM_SNAPSHOT_NAME" ]; then
		dry "$LVM" vgchange -an --devices "$VDO_DM_SNAPSHOT_DEVICE" "$VGNAME" &>/dev/null || true
		for i in {1..20} ; do
			[ "$(dry "$DMSETUP" info --noheading -co open "$VDO_DM_SNAPSHOT_NAME")" = "0" ] && break
			sleep .1
		done
		dry "$DMSETUP" remove "$VDO_DM_SNAPSHOT_NAME" &>/dev/null || true
	fi


	[ -n "$VDO_SNAPSHOT_LOOP" ] && { dry "$LOSETUP" -d "$VDO_SNAPSHOT_LOOP" || true ; }

	[ -z "$VDO_INCONSISTENT" ] || echo "$TOOL: VDO volume import process exited unexpectedly!" >&2

	rm -rf "$TEMPDIR" || true

	exit "$RC"
}

# Create snapshot target like for persistent snapshot with 16KiB chunksize
snapshot_target_line_() {
	echo "0 $("$BLOCKDEV" --getsize "$1") snapshot${3:-} $1 $2 P 32"
}

snapshot_create_() {
	VDO_DM_SNAPSHOT_NAME="${IMPORT_NAME}_snap"
	local file="$TEMPDIR/$VDO_DM_SNAPSHOT_NAME"

	# TODO: maybe use ramdisk via 'brd' device ?)
	"$TRUNCATE" -s 20M "$file"
	VDO_SNAPSHOT_LOOP=$("$LOSETUP" -f --show "$file")
	"$DMSETUP" create "$VDO_DM_SNAPSHOT_NAME" -u "${DM_UUID_PREFIX}${VDO_DM_SNAPSHOT_NAME}-priv" --table "$(snapshot_target_line_ "$1" "$VDO_SNAPSHOT_LOOP")"
	VDO_DM_SNAPSHOT_DEVICE="$DM_DEV_DIR/mapper/$VDO_DM_SNAPSHOT_NAME"
	verbose "Snapshot of VDO device $1 created: $VDO_DM_SNAPSHOT_DEVICE."
}

snapshot_merge_() {
	local status
	local initial_status

	initial_status=( $("$DMSETUP" status "$VDO_DM_SNAPSHOT_NAME") )
	"$DMSETUP" reload "$VDO_DM_SNAPSHOT_NAME" --table "$(snapshot_target_line_ "$1" "$VDO_SNAPSHOT_LOOP" -merge)"
	"$DMSETUP" suspend "$VDO_DM_SNAPSHOT_NAME" || {
		error "ABORTING: Failed to initialize snapshot merge! Origin volume is unchanged."
	}

	verbose "Merging converted VDO volume \"$VDO_DM_SNAPSHOT_NAME\"."
	VDO_INCONSISTENT=1

	# Running merging
	"$DMSETUP" resume "$VDO_DM_SNAPSHOT_NAME"

	#du -h "$TEMPDIR/$VDO_DM_SNAPSHOT_NAME"

	# Loop for a while, till the snapshot is merged.
	# Should be nearly instantaneous.
	# FIXME: Recovery when something prevents merging is hard
	for i in $(seq 1 20) ; do
		status=( $("$DMSETUP" status "$VDO_DM_SNAPSHOT_NAME") )
		# Check if merging is finished
		[ "${status[3]%/*}" = "${status[4]}" ] && break
		# Wait a bit and retry
		sleep .2
	done

	if [ "${status[3]%/*}" != "${status[4]}" ]; then
		# FIXME: Now what shall we do ??? Help....
		# Keep snapshot in DM table for possible analysis...
		VDO_DM_SNAPSHOT_NAME=
		VDO_SNAPSHOT_LOOP=
		echo "$TOOL: Initial snapshot status ${initial_status[*]}"
		echo "$TOOL: Failing merge snapshot status ${status[*]}"
		error "ABORTING: Snapshot failed to merge! (Administrator required...)"
	fi

	VDO_INCONSISTENT=
	VDO_CONFIG_RESTORE=

	verbose "Converted VDO volume is merged to \"$1\"."

	"$DMSETUP" remove "$VDO_DM_SNAPSHOT_NAME" || {
		sleep 1 # sleep and retry once more
		"$DMSETUP" remove "$VDO_DM_SNAPSHOT_NAME" || {
			error "ABORTING: Cannot remove snapshot $VDO_DM_SNAPSHOT_NAME! (check volume autoactivation...)"
		}
	}

	VDO_DM_SNAPSHOT_NAME=
	"$LOSETUP" -d "$VDO_SNAPSHOT_LOOP"
	VDO_SNAPSHOT_LOOP=
}

get_enabled_value_() {
	case "$1" in
	enabled) echo "1" ;;
	*) echo "0" ;;
	esac
}

get_kb_size_with_unit_() {
	case "$1" in
	*[kK]) echo $(( ${1%[kK]} )) ;;
	*[mM]) echo $(( ${1%[mM]} * 1024 )) ;;
	*[gG]) echo $(( ${1%[gG]} * 1024 * 1024 )) ;;
	*[tT]) echo $(( ${1%[tT]} * 1024 * 1024 * 1024 )) ;;
	*[pP]) echo $(( ${1%[pP]} * 1024 * 1024 * 1024 * 1024 )) ;;
	esac
}

# Figure out largest possible extent size usable for VG
# $1   physical size
# $2   logical size
get_largest_extent_size_() {
	local max=4
	local i
	local d

	for i in 8 16 32 64 128 256 512 1024 2048 4096 ; do
		d=$(( $1 / i ))
		[ $(( d * i )) -eq "$1" ] || break
		d=$(( $2 / i ))
		[ $(( d * i )) -eq "$2" ] || break
		max=$i
	done
	echo "$max"
}

# detect LV on the given device
# deference device name if it is symbolic link
detect_lv_() {
	local DEVICE=$1
	local SYSVOLUME
	local MAJORMINOR

	DEVICE=${1/#"${DM_DEV_DIR}/"/}
	DEVICE=$("$READLINK" $READLINK_E "$DM_DEV_DIR/$DEVICE" || true)
	[ -n "$DEVICE" ] || error "Readlink cannot access device \"$1\"."
	RDEVICE=$DEVICE
	case "$RDEVICE" in
	  # hardcoded /dev  since udev does not create these entries elsewhere
	  /dev/dm-[0-9]*)
		read -r <"/sys/block/${RDEVICE#/dev/}/dm/name" SYSVOLUME 2>&1 && DEVICE="$DM_DEV_DIR/mapper/$SYSVOLUME"
		read -r <"/sys/block/${RDEVICE#/dev/}/dev" MAJORMINOR 2>&1 || error "Cannot get major:minor for \"$DEVICE\"."
		DEVMAJOR=${MAJORMINOR%%:*}
		DEVMINOR=${MAJORMINOR##*:}
		;;
	  *)
		RSTAT=$("$STAT" --format "DEVMAJOR=\$((0x%t)) DEVMINOR=\$((0x%T))" "$RDEVICE" || true)
		[ -n "$RSTAT" ] || error "Cannot get major:minor for \"$DEVICE\"."
		eval "$RSTAT"
		;;
	esac

	[ "$DEVMAJOR" != "$(grep device-mapper /proc/devices | cut -f1 -d' ')" ] && return

	DEV="$("$DMSETUP" info -c -j "$DEVMAJOR" -m "$DEVMINOR" -o uuid,name --noheadings --nameprefixes --separator ' ')"
	case "$DEV" in
	Device*)  ;; # no devices
	*)	eval "$DEV" ;;
	esac
}

# parse yaml config files into 'prefix_yaml_part_names=("value")' strings
parse_yaml_() {
	local yaml_file=$1
	local prefix=$2
	local s
	local w
	local fs

	s='[[:space:]]*'
	w='[a-zA-Z0-9_.-]*'
	fs="$(echo @|tr @ '\034')"

	(
	    sed -ne '/^--/s|--||g; s|\"|\\\"|g; s/[[:space:]]*$//g;' \
		-e 's/\$/\\\$/g' \
		-e "/#.*[\"\']/!s| #.*||g; /^#/s|#.*||g;" \
		-e "s|^\($s\)\($w\)$s:$s\"\(.*\)\"$s\$|\1$fs\2$fs\3|p" \
		-e "s|^\($s\)\($w\)${s}[:-]$s\(.*\)$s\$|\1$fs\2$fs\3|p" |

	    awk -F"$fs" '{
		indent = length($1)/2;
		if (length($2) == 0) { conj[indent]="+";} else {conj[indent]="";}
		vname[indent] = $2;
		for (i in vname) {if (i > indent) {delete vname[i]}}
		    if (length($3) > 0) {
			vn=""; for (i=0; i<indent; i++) {vn=(vn)(vname[i])("_")}
			printf("%s%s%s%s=(\"%s\")\n", "'"$prefix"'",vn, $2, conj[indent-1], $3);
		    }
		}' |

	    sed -e 's/_=/+=/g' |

	    awk 'BEGIN {
		    FS="=";
		    OFS="="
		}
		/(-|\.).*=/ {
		    gsub("-|\\.", "_", $1)
		}
		{ print }'
	) < "$yaml_file"
}

#
# Convert VDO volume on LV to VDOPool within this VG
#
# This conversion requires the size of VDO virtual volume has to be expressed in the VG's extent size.
# Currently this enforces a user to reduce the VG extent size to the smaller size (up to 4KiB).
#
# TODO: We may eventually relax this condition just like we are doing rounding for convert_non_lv_()
#       Let's if there would be any singly user requiring this feature.
#       It may allow to better use larger VDO volume size (in TiB ranges).
#
convert_lv_() {
	local vdo_logicalSize=$1
	local extent_size
	local pvfree

	pvfree=$("$LVM" lvs -o size --units b --nosuffix --noheadings "$DM_VG_NAME/$DM_LV_NAME")
	pvfree=$(( pvfree / 1024 ))		# to KiB
	# select largest possible extent size that can exactly express both sizes
	extent_size=$(get_largest_extent_size_ "$pvfree" "$vdo_logicalSize")

	# validate existing  VG extent_size can express virtual VDO size
	vg_extent_size=$("$LVM" vgs -o vg_extent_size --units b --nosuffix --noheadings "$VGNAME")
	vg_extent_size=$(( vg_extent_size / 1024 ))

	[ "$vg_extent_size" -le "$extent_size" ] || {
		error "Please vgchange extent_size to at most $extent_size KiB or extend and align virtual size of VDO device on $vg_extent_size KiB before retrying conversion."
	}

	verbose "Renaming existing LV to be used as _vdata volume for VDO pool LV."
	dry "$LVM" lvrename $YES $VERB "$VGNAME/$DM_LV_NAME" "$VGNAME/${LVNAME}_vpool" || {
		error "Rename of LV \"$VGNAME/$DM_LV_NAME\" failed, while VDO header has been already moved!"
	}

	verbose "Converting to VDO pool."
	dry "$LVM" lvconvert $YES $VERB $FORCE --config "$VDO_ALLOCATION_PARAMS" -Zn -V "${vdo_logicalSize}k" -n "$LVNAME" --type vdo-pool "$VGNAME/${LVNAME}_vpool"

	verbose "Removing now unused VDO entry from VDO configuration."
	dry "$VDO" remove $VDOCONF $VERB --force --name "$VDONAME"
}

#
# Convert VDO volume on a device to VG with VDOPool LV
#
# Convert device with the use of snapshot on top of original VDO volume (can be optionally disabled)
# Once the whole conversion is finished, snapshot is merged (During the short period time of merging
# user must ensure there will be no power-off!)
#
# For best use the latest version of  vdoprepareforlvm tool is required.
convert_non_lv_() {
	local vdo_logicalSize=$1
	local vdo_logicalSizeRounded
	local extent_size
	local output
	local pvfree

	if [ -n "$USE_VDO_DM_SNAPSHOT" ]; then
		dry snapshot_create_ "$DEVICE"
		sed "s|$DEVICE|$VDO_DM_SNAPSHOT_DEVICE|" "$TEMPDIR/vdoconf.yml" > "$TEMPDIR/vdo_snap.yml"
		# In case of error in the middle of conversion restore original config file
		VDO_CONFIG_RESTORE="$TEMPDIR/vdoconf.yml"
		# Let VDO manager operate on snapshot volume
		dry cp -a "$TEMPDIR/vdo_snap.yml" "${VDO_CONFIG:-"$DEFAULT_VDO_CONFIG"}"
	else
		# If error in the following section, report possible problems ahead
		VDO_INCONSISTENT=1
	fi

	# In case we operate with snapshot, all lvm2 operation will also run on top of snapshot
	local device=${VDO_DM_SNAPSHOT_DEVICE:-$DEVICE}

	# Check if there is not already an existing PV header, this would have fail on pvcreate after conversion
	"$LVM" pvs --devices "$device" "$device" 2>/dev/null && {
		error "Cannot convert volume \"$DEVICE\" with existing PV header."
	}

	verbose "Moving VDO header on \"$device\"."

	output=$(dry "$VDO" convert $VDOCONF $VERB --force --name "$VDONAME" 2>&1) || {
		local rc=$?
		echo "$output"
		error "Failed to convert VDO volume \"$DEVICE\" (exit code $rc)."
	}

	echo "$output"

	if [ "$ABORT_AFTER_VDO_CONVERT" != "0" ]; then
		warn "Aborting VDO conversion after moving VDO header, volume is useless!"
		return 0
	fi

	# Parse result from VDO preparation/conversion tool
	# New version of the tool provides output with alignment and offset
	local vdo_length=0
	local vdo_aligned=0
	local vdo_offset=0
	local vdo_non_converted=0
	while IFS=  read -r line ; do
		# trim leading spaces
		case "$(echo $line)" in
		"Non converted"*) vdo_non_converted=1 ;;
		"Length"*) vdo_length=${line##* = } ;;
		"Conversion completed"*)
			   vdo_aligned=${line##*aligned on }
			   vdo_aligned=${vdo_aligned%%[!0-9]*}
			   vdo_offset=${line##*offset }
			   # backward compatibility with report from older version
			   vdo_offset=${vdo_offset##*by }
			   vdo_offset=${vdo_offset%%[!0-9]*}
			   ;;
		esac
	done <<< "$output"

	dry "$LVM" pvcreate $YES $VERB $FORCE --devices "$device" --dataalignment "$vdo_offset"b "$device"

	# Obtain free space in this new PV
	# after 'vdo convert' call there is ~(1-2)M free space at the front of the device
	pvfree=$("$BLOCKDEV" --getsize64 "$DEVICE")
	pvfree=$(( ( pvfree - vdo_offset ) / 1024 ))	# to KiB
	if [ -n "$vdo_aligned" ] && [ "$vdo_aligned" != "0" ]; then
		extent_size=$(( vdo_aligned / 1024 ))
	else
		extent_size=$(get_largest_extent_size_ "$pvfree" "$vdo_logicalSize")
	fi

	# Round virtual size to the LOWER size expressed in extent units.
	# lvm is parsing VDO metadata and can read real full size and use it instead of this smaller value.
	# To precisely byte-synchronize the size of VDO LV, user can lvresize such VDO LV later.
	vdo_logicalSizeRounded=$(( ( vdo_logicalSize / extent_size ) * extent_size ))

	verbose "Creating volume group \"$VGNAME\" with the extent size $extent_size KiB."
	dry "$LVM" vgcreate $YES $VERB --devices "$device" -s "${extent_size}k" "$VGNAME" "$device"

	verbose "Creating VDO pool data LV from all extents in the volume group \"$VGNAME\"."
	dry "$LVM" lvcreate -Zn -Wn -an $YES $VERB --devices "$device" -l100%VG -n "${LVNAME}_vpool" "$VGNAME" "$device"

	verbose "Converting to VDO pool."
	dry "$LVM" lvconvert ${USE_VDO_DM_SNAPSHOT:-"$YES"} $VERB $FORCE --devices "$device" --config "$VDO_ALLOCATION_PARAMS" -Zn -V "${vdo_logicalSizeRounded}k" -n "$LVNAME" --type vdo-pool "$VGNAME/${LVNAME}_vpool"

	if [ "$vdo_logicalSizeRounded" -lt "$vdo_logicalSize" ]; then
		# need to extend virtual size to be covering all the converted area
		# let lvm2 to round to the proper virtual size of VDO LV
		dry "$LVM" lvextend $YES $VERB --devices "$device" -L "$vdo_logicalSize"k "$VGNAME/$LVNAME"
	fi

	VDO_INCONSISTENT=

	[ -z "$USE_VDO_DM_SNAPSHOT" ] && return # no-snapshot case finished

	dry "$LVM" vgchange -an $VERB $FORCE --devices "$device" "$VGNAME"

	# Prevent unwanted auto activation when VG is merged
	dry "$LVM" vgchange --setautoactivation n $VERB $FORCE --devices "$device" "$VGNAME"

	if [ -z "$YES" ]; then
		PROMPTING=yes
		warn "Do not interrupt merging process once it starts (VDO data may become irrecoverable)!"
		echo -n "$TOOL: Do you want to merge converted VDO device \"$DEVICE\" to VDO LV \"$VGNAME/$LVNAME\"? [y|N]: "
		read -r -n 1 -s ANSWER
		case "${ANSWER:0:1}" in
		  y|Y )  echo "Yes" ;;
		    * )  echo "No" ; PROMPTING=""; return 1 ;;
		esac
		PROMPTING=""
		YES="-y" # From now, now prompting
	fi

	dry snapshot_merge_ "$DEVICE"

	# For systems using devicesfile add 'merged' PV into system.devices.
	# Bypassing use of --valuesonly to keep compatibility with older lvm.
	local usedev=$("$LVM" lvmconfig --typeconfig full devices/use_devicesfile || true)
	[ "${usedev#*=}" = "1" ] && dry "$LVM" lvmdevices --adddev "$DEVICE"

	# Restore auto activation for a VG
	dry "$LVM" vgchange --setautoactivation y $VERB $FORCE "$VGNAME"

	dry "$LVM" lvchange -ay $VERB $FORCE "$VGNAME/$LVNAME"
}

# Convert existing VDO volume into lvm2 volume
convert2lvm_() {
	local VDONAME
	local TRVDONAME
	local FOUND=""
	local MAJOR=0
	local MINOR=0

	VGNAME=${NAME%/*}
	LVNAME=${NAME#*/}
	DM_UUID=""
	detect_lv_ "$DEVICE"
	case "$DM_UUID" in
		LVM-*)	eval "$("$DMSETUP" splitname --nameprefixes --noheadings --separator ' ' "$DM_NAME")"
			if [ -z "$VGNAME" ] || [ "$VGNAME" = "$LVNAME" ]; then
				VGNAME=$DM_VG_NAME
				verbose "Using existing volume group name \"$VGNAME\"."
				[ -n "$LVNAME" ] || LVNAME=$DM_LV_NAME
			elif [ "$VGNAME" != "$DM_VG_NAME" ]; then
				error "Volume group name \"$VGNAME\" does not match name \"$DM_VG_NAME\" for VDO device \"$DEVICE\"."
			fi
			;;
		*)
			# Check if we need to generate unused $VGNANE
			if [ -z "$VGNAME" ] || [ "$VGNAME" = "$LVNAME" ]; then
				VGNAME=${DEFAULT_NAME%/*}
				# Find largest matching VG name to our 'default' vgname
				LASTVGNAME=$(LC_ALL=C "$LVM" vgs -oname -O-name --noheadings -S name=~"${VGNAME}" | grep -m 1 -E "${VGNAME}[0-9]? ?" || true)
				if [ -n "$LASTVGNAME" ]; then
					LASTVGNAME=${LASTVGNAME#*"${VGNAME}"}
					# If the number is becoming too high, try some random number
					[ -n "$LASTVGNAME" ] && [ "$LASTVGNAME" -gt 99999999 ] && LASTVGNAME=$RANDOM
					# Generate new unused VG name
					VGNAME="${VGNAME}$(( LASTVGNAME + 1 ))"
					verbose "Selected unused volume group name \"$VGNAME\"."
				fi
			fi
			# New VG is created, LV name should be always unused.
			[ -n "$LVNAME" ] || LVNAME=${DEFAULT_NAME#*/}
			"$LVM" vgs "$VGNAME" >/dev/null 2>&1 && error "Cannot use already existing volume group name \"$VGNAME\"."
			;;
	esac

	verbose "Checked whether device \"$DEVICE\" is already logical volume."

	"$MKDIR" -p -m 0000 "$TEMPDIR" || error "Failed to create \"$TEMPDIR\"."

	# TODO: might use directly  /etc/vdoconf.yml (avoiding need of 'vdo' manager)
	verbose "Getting YAML VDO configuration."
	"$VDO" printConfigFile $VDOCONF >"$TEMPDIR/vdoconf.yml"
	[ -s "$TEMPDIR/vdoconf.yml" ] || error "Cannot work without VDO configuration."

	# Check list of devices in VDO configure file for their major:minor
	# and match with given $DEVICE devmajor:devminor
	for i in $(awk '/.*device:/ {print $2}' "$TEMPDIR/vdoconf.yml") ; do
		local DEV
		DEV=$("$READLINK" $READLINK_E "$i") || continue
		RSTAT=$("$STAT" --format "MAJOR=\$((0x%t)) MINOR=\$((0x%T))" "$DEV" 2>/dev/null) || continue
		eval "$RSTAT"
		if [ "$MAJOR" = "$DEVMAJOR" ] && [ "$MINOR" = "$DEVMINOR" ]; then
			[ -z "$FOUND" ] || error "VDO configuration contains duplicate entries $FOUND and $i."
			FOUND=$i
		fi
	done

	[ -n "$FOUND" ] || error "Can't find matching device in VDO configuration file."
	verbose "Found matching device $FOUND  $MAJOR:$MINOR."

	VDONAME=$(awk -v DNAME="$FOUND" '/.*VDOService$/ {VNAME=substr($1, 0, length($1) - 1)} /[[:space:]]*device:/ { if ($2 ~ DNAME) {print VNAME}}' "$TEMPDIR/vdoconf.yml")
	TRVDONAME=$(echo "$VDONAME" | tr '-' '_')

	# When VDO volume is 'active', check it's not mounted/being used
	DM_OPEN="$("$DMSETUP" info -c -o open  "$VDONAME" --noheadings --nameprefixes 2>/dev/null || true)"
	case "$DM_OPEN" in
	Device*) ;; # no devices
	*)	eval "$DM_OPEN"
		[ "${DM_OPEN:-0}" -eq 0 ] || error "Cannot convert in use VDO volume \"$VDONAME\"!"
		;;
	esac

	#parse_yaml_ "$TEMPDIR/vdoconf.yml" _
	eval "$(parse_yaml_ "$TEMPDIR/vdoconf.yml" _ | grep "$TRVDONAME" | sed -e "s/_config_vdos_$TRVDONAME/vdo/g")"

	vdo_logicalSize=$(get_kb_size_with_unit_ "$vdo_logicalSize")
	vdo_physicalSize=$(get_kb_size_with_unit_ "$vdo_physicalSize")

	verbose "Converted VDO device has logical/physical size $vdo_logicalSize/$vdo_physicalSize KiB."

	VDO_ALLOCATION_PARAMS=$(cat <<EOF
allocation {
	vdo_use_compression = $(get_enabled_value_ "$vdo_compression")
	vdo_use_deduplication = $(get_enabled_value_ "$vdo_deduplication")
	vdo_use_metadata_hints=1
	vdo_minimum_io_size = $vdo_logicalBlockSize
	vdo_block_map_cache_size_mb = $(( $(get_kb_size_with_unit_ "$vdo_blockMapCacheSize") / 1024 ))
	vdo_block_map_period = $vdo_blockMapPeriod
	vdo_use_sparse_index = $(get_enabled_value_ "$vdo_indexSparse")
	vdo_index_memory_size_mb = $(awk "BEGIN {print $vdo_indexMemory * 1024}")
	vdo_slab_size_mb = $(( $(get_kb_size_with_unit_ "$vdo_slabSize") / 1024 ))
	vdo_ack_threads = $vdo_ackThreads
	vdo_bio_threads = $vdo_bioThreads
	vdo_bio_rotation = $vdo_bioRotationInterval
	vdo_cpu_threads = $vdo_cpuThreads
	vdo_hash_zone_threads = $vdo_hashZoneThreads
	vdo_logical_threads = $vdo_logicalThreads
	vdo_physical_threads = $vdo_physicalThreads
	vdo_write_policy = $vdo_writePolicy
	vdo_max_discard = $(( $(get_kb_size_with_unit_ "$vdo_maxDiscardSize") / 4 ))
	vdo_pool_header_size = 0
}
EOF
)
	verbose "VDO conversion parameters: $VDO_ALLOCATION_PARAMS"

	verbose "Stopping VDO volume."
	dry "$VDO" stop $VDOCONF --name "$VDONAME" $VERB

	# If user has not provided '--yes', prompt before conversion
	if [ -z "$YES" ] && [ -z "$USE_VDO_DM_SNAPSHOT" ]; then
		PROMPTING=yes
		echo -n "$TOOL: Convert VDO device \"$DEVICE\" to VDO LV \"$VGNAME/$LVNAME\"? [y|N]: "
		read -r -n 1 -s ANSWER
		case "${ANSWER:0:1}" in
		  y|Y )  echo "Yes" ;;
		    * )  echo "No" ; PROMPTING=""; return 1 ;;
		esac
		PROMPTING=""
		YES="-y" # From now, no prompting
	fi

	# Make a backup of the existing VDO yaml configuration file
	[ -e "$VDO_CONFIG" ] && dry cp -a "$VDO_CONFIG" "${VDO_CONFIG}.backup"

	DEVICE=$FOUND
	case "$DM_UUID" in
		LVM-*) convert_lv_ "$vdo_logicalSize" ;;
		*)     convert_non_lv_ "$vdo_logicalSize" ;;
	esac
}

#############################
# start point of this script
# - parsing parameters
#############################
trap "cleanup" "${SIGNALS[@]}"

[ "$#" -eq 0 ] && tool_usage

while [ "$#" -ne 0 ]
do
	 case "$1" in
	  "") ;;
	  "-f"|"--force"  ) FORCE="-f" ;;
	  "-h"|"--help"   ) tool_usage ;;
	  "-n"|"--name"   ) shift; NAME=$1 ;;
	  "-v"|"--verbose") VERB="--verbose" ;;
	  "-y"|"--yes"    ) YES="-y" ;;
	  "--abort-after-vdo-convert"|"--abortaftervdoconvert" ) ABORT_AFTER_VDO_CONVERT=1; USE_VDO_DM_SNAPSHOT= ;; # For testing only
	  "--dry-run"|"--dryrun" ) DRY="1" ; VERB="-v" ;;
	  "--no-snapshot"|"--nosnapshot" ) USE_VDO_DM_SNAPSHOT= ;;
	  "--uuid-prefix"|"--uuidprefix" ) shift; DM_UUID_PREFIX=$1 ;; # For testing only
	  "--vdo-config"|"--vdoconfig" ) shift; VDO_CONFIG=$1 ; VDOCONF="-f $VDO_CONFIG" ;;
	  -* ) error "Wrong argument \"$1\". (see: $TOOL --help)" ;;
	  *) DEVICE=$1 ;;  # device name does not start with '-'
	esac
	shift
done

[ -n "$DEVICE" ] || error "Device name is not specified. (see: $TOOL --help)"

convert2lvm_

Directory Contents

Dirs: 0 × Files: 561

Name Size Perms Modified Actions
12.59 KB lrwxr-xr-x 2021-10-08 13:04:46
Edit Download
3.00 KB lrwxr-xr-x 2018-12-11 07:44:33
Edit Download
24.86 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
148.16 KB lrwxr-xr-x 2025-12-18 13:51:04
Edit Download
62.39 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
36.66 KB lrwxr-xr-x 2023-10-14 22:48:04
Edit Download
40.99 KB lrwxr-xr-x 2024-04-06 11:40:05
Edit Download
4.69 KB lrwxr-xr-x 2026-01-27 02:07:12
Edit Download
2.17 KB lrwxr-xr-x 2017-12-18 12:28:32
Edit Download
64.71 KB lrwxr-xr-x 2020-08-30 17:47:39
Edit Download
109.52 KB lrwxr-xr-x 2024-05-23 08:36:02
Edit Download
28.74 KB lrwxr-xr-x 2023-10-14 17:19:01
Edit Download
32.63 KB lrwxr-xr-x 2022-10-10 10:23:17
Edit Download
67 B lrwxr-xr-x 2022-10-10 10:23:17
Edit Download
45.04 KB lrwxr-xr-x 2025-07-15 09:41:57
Edit Download
151.73 KB lrwxr-xr-x 2025-07-15 09:41:57
Edit Download
4.04 KB lrwxr-xr-x 2025-07-15 09:41:56
Edit Download
122.35 KB lrwxr-xr-x 2025-07-15 09:41:57
Edit Download
130.36 KB lrwxr-xr-x 2025-07-15 09:41:57
Edit Download
16.54 KB lrwxr-x--- 2025-07-15 09:41:57
Edit Download
16.40 KB lrwxr-xr-x 2025-03-11 12:11:55
Edit Download
32.59 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
21.45 KB lrwxr-xr-x 2024-04-06 13:04:35
Edit Download
15.97 KB lr-xr-xr-x 2026-01-23 07:31:10
Edit Download
29.05 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
98.66 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
53.47 KB lrwxr-xr-x 2025-06-04 10:54:29
Edit Download
49.75 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
41.30 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
158.25 KB lrwxr-xr-x 2024-05-23 08:36:02
Edit Download
1.43 MB lrwxr-xr-x 2022-10-08 12:29:36
Edit Download
1.43 MB lrwxr-xr-x 2022-10-08 12:29:36
Edit Download
1.43 MB lrwxr-xr-x 2022-10-08 12:29:36
Edit Download
1.43 MB lrwxr-xr-x 2022-10-08 12:29:36
Edit Download
1.43 MB lrwxr-xr-x 2022-10-08 12:29:36
Edit Download
1.43 MB lrwxr-xr-x 2022-10-08 12:29:36
Edit Download
32.44 KB lrwxr-xr-x 2024-01-10 14:34:46
Edit Download
98.41 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
206.55 KB lrwxr-xr-x 2022-10-12 10:53:29
Edit Download
28.83 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
69.69 KB lrwxr-xr-x 2025-12-18 13:51:04
Edit Download
45.11 KB lrwxr-xr-x 2023-10-14 22:48:04
Edit Download
61.42 KB lrwxr-xr-x 2025-12-18 13:51:04
Edit Download
375.66 KB lrwxr-xr-x 2024-11-05 07:47:21
Edit Download
41.45 KB lrwxr-xr-x 2025-12-18 13:54:40
Edit Download
65.22 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
20.43 KB lrwxr-xr-x 2023-10-14 17:19:01
Edit Download
11.86 KB lrwxr-xr-x 2025-11-04 09:19:14
Edit Download
78.68 KB lrwxr-xr-x 2021-10-09 07:08:37
Edit Download
13.05 KB lrwxr-xr-x 2019-10-12 00:47:15
Edit Download
251 B lrwxr-xr-x 2019-10-12 00:47:14
Edit Download
13.05 KB lrwxr-xr-x 2019-10-12 00:47:15
Edit Download
9.03 KB lrwxr-xr-x 2019-10-12 00:47:15
Edit Download
990 B lrwxr-xr-x 2019-10-12 00:47:14
Edit Download
73.94 KB lrwxr-xr-x 2024-04-06 11:40:05
Edit Download
147.42 KB lrwxr-xr-x 2023-10-15 03:50:57
Edit Download
24.79 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
25.33 KB lrwxr-xr-x 2024-05-23 08:36:03
Edit Download
155.04 KB lrwxr-xr-x 2024-05-23 08:36:02
Edit Download
20.45 KB lrwxr-xr-x 2025-11-06 07:45:52
Edit Download
231.63 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
24.86 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
159.95 KB lrwxr-xr-x 2024-04-08 09:18:53
Edit Download
215.87 KB lrwxr-xr-x 2024-05-23 08:36:02
Edit Download
453.68 KB lrwxr-xr-x 2024-05-22 17:58:10
Edit Download
32.86 KB lrwxr-xr-x 2024-05-22 16:12:52
Edit Download
45.08 KB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
24.55 KB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
141.80 KB lrwxr-xr-x 2024-04-06 13:04:35
Edit Download
158.64 KB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
158.64 KB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
936 B lrwxr-xr-x 2025-11-06 07:45:45
Edit Download
938 B lrwxr-xr-x 2025-11-06 07:45:45
Edit Download
60.84 KB lrwxr-xr-x 2025-11-06 07:45:52
Edit Download
60.84 KB lrwxr-xr-x 2025-11-06 07:45:52
Edit Download
64.76 KB lrwxr-xr-x 2025-11-06 07:45:52
Edit Download
72.84 KB lrwxr-xr-x 2025-11-06 07:45:52
Edit Download
934 B lrwxr-xr-x 2025-11-06 07:45:45
Edit Download
56.74 KB lrwxr-xr-x 2025-11-06 07:45:52
Edit Download
60.84 KB lrwxr-xr-x 2025-11-06 07:45:52
Edit Download
117.20 KB lrwxr-xr-x 2025-11-06 07:45:52
Edit Download
52.84 KB lrwxr-xr-x 2025-11-06 07:45:52
Edit Download
65.13 KB lrwxr-xr-x 2019-10-12 00:48:04
Edit Download
61.10 KB lrwxr-xr-x 2019-10-12 00:48:04
Edit Download
157.84 KB lrwxr-xr-x 2025-11-04 20:58:52
Edit Download
3.27 KB lrwxr-xr-x 2025-11-04 20:49:02
Edit Download
12.11 KB lrwxr-xr-x 2021-12-15 12:46:10
Edit Download
32.52 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
16.42 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
328.52 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
36.61 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
110.63 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
32.52 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
20.38 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
24.55 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
28.49 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
91.24 KB lrwxr-xr-x 2021-10-09 07:08:37
Edit Download
20.52 KB lrwxr-xr-x 2021-12-21 10:17:12
Edit Download
41.98 KB lrwxr-xr-x 2021-12-21 10:17:12
Edit Download
1.43 MB lrwxr-xr-x 2022-10-08 12:29:36
Edit Download
1.43 MB lrwxr-xr-x 2022-10-08 12:29:36
Edit Download
1.43 MB lrwxr-xr-x 2022-10-08 12:29:36
Edit Download
1.43 MB lrwxr-xr-x 2022-10-08 12:29:36
Edit Download
73.99 KB lrwxr-xr-x 2020-08-30 17:47:39
Edit Download
557.79 KB lrwxr-xr-x 2022-10-08 17:27:36
Edit Download
11.10 KB lrwxr-xr-x 2025-12-17 16:01:04
Edit Download
11.44 KB lrwxr-xr-x 2025-12-17 16:01:04
Edit Download
1.53 MB lrwxr-xr-x 2025-12-17 16:01:04
Edit Download
149.14 KB lrwxr-xr-x 2025-12-17 16:01:04
Edit Download
4.83 KB lrwxr-xr-x 2025-12-17 16:01:04
Edit Download
24.69 KB lrwxr-xr-x 2025-12-17 16:01:04
Edit Download
43.56 KB lrwxr-xr-x 2025-12-17 16:01:04
Edit Download
49.05 KB lrwxr-xr-x 2025-12-17 16:01:04
Edit Download
26.59 KB lrwxr-xr-x 2025-12-17 16:01:04
Edit Download
43.78 KB lrwxr-xr-x 2025-12-17 16:01:04
Edit Download
8.03 KB lrwxr-xr-x 2025-12-17 16:01:04
Edit Download
6.58 KB lrwxr-xr-x 2025-12-17 16:01:04
Edit Download
6.29 KB lrwxr-xr-x 2025-12-17 16:01:04
Edit Download
4.42 KB lrwxr-xr-x 2025-12-17 16:01:04
Edit Download
82.38 KB lrwxr-xr-x 2025-06-04 10:54:29
Edit Download
20.52 KB lrwxr-xr-x 2025-12-17 18:54:08
Edit Download
61.10 KB lrwxr-xr-x 2019-10-12 00:48:04
Edit Download
12.47 KB lrwxr-xr-x 2026-01-27 02:08:14
Edit Download
33.17 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
130.91 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
16.46 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
12.38 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
7.84 KB lrwxr-xr-x 2022-04-18 17:09:02
Edit Download
10.48 KB lrwxr-xr-x 2024-07-02 21:04:19
Edit Download
74.91 KB lrwxr-xr-x 2022-10-12 10:53:29
Edit Download
24.00 KB lr-xr-xr-x 2026-01-23 07:31:10
Edit Download
53.47 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
41.41 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
328.52 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
328.52 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
328.52 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
65.13 KB lrwxr-xr-x 2019-10-12 00:48:04
Edit Download
98.75 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
65.13 KB lrwxr-xr-x 2019-10-12 00:48:04
Edit Download
65.13 KB lrwxr-xr-x 2019-10-12 00:48:04
Edit Download
1.92 KB lrwxr-xr-x 2023-10-15 05:10:59
Edit Download
16.38 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
49.60 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
157.56 KB lrwxr-xr-x 2025-06-09 17:22:05
Edit Download
25.31 KB lrwx------ 2025-06-09 17:22:05
Edit Download
16.39 KB lrwxr-xr-x 2025-06-09 17:22:05
Edit Download
70.39 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
38.14 KB lrwxr-xr-x 2020-11-06 14:24:16
Edit Download
189.76 KB lrwxr-xr-x 2026-01-16 01:48:25
Edit Download
214.46 KB lrwxr-xr-x 2022-10-12 10:53:29
Edit Download
29.27 KB lrwxr-xr-x 2024-07-02 21:04:21
Edit Download
11.86 KB lrwxr-xr-x 2025-11-04 09:19:14
Edit Download
121.41 KB lrwxr-xr-x 2024-05-23 08:36:02
Edit Download
12.38 KB lrwxr-xr-x 2025-11-06 07:45:52
Edit Download
12.34 KB lrwxr-xr-x 2024-01-10 14:34:46
Edit Download
7.84 KB lrwxr-xr-x 2025-03-11 12:11:55
Edit Download
12.27 KB lrwxr-xr-x 2024-01-10 14:34:46
Edit Download
11.88 KB lrwxr-xr-x 2025-03-11 12:11:55
Edit Download
95.34 KB lrwxr-xr-x 2025-12-18 13:51:04
Edit Download
91.09 KB lrwxr-xr-x 2025-12-18 13:51:04
Edit Download
61.48 KB lrwxr-xr-x 2025-12-18 13:51:04
Edit Download
99.38 KB lrwxr-xr-x 2025-12-18 13:51:04
Edit Download
61.47 KB lrwxr-xr-x 2025-12-18 13:51:04
Edit Download
57.27 KB lrwxr-xr-x 2025-12-18 13:51:04
Edit Download
57.26 KB lrwxr-xr-x 2025-12-18 13:51:04
Edit Download
1.16 MB lrwxr-xr-x 2025-10-07 08:06:34
Edit Download
2.68 KB lrwxr-xr-x 2025-10-07 08:06:32
Edit Download
1.44 MB lrwxr-xr-x 2025-10-07 08:06:34
Edit Download
1.14 MB lrwxr-xr-x 2025-10-07 08:06:34
Edit Download
8.68 KB lrwxr-xr-x 2025-10-07 08:06:32
Edit Download
242.26 KB lrwxr-xr-x 2025-10-07 08:06:34
Edit Download
1.16 MB lrwxr-xr-x 2025-10-07 08:06:34
Edit Download
3.99 KB lrwxr-xr-x 2025-10-07 08:06:32
Edit Download
279.16 KB lrwxr-xr-x 2025-10-07 08:06:34
Edit Download
16.34 KB lrwxr-xr-x 2025-10-07 08:06:34
Edit Download
3.45 KB lrwxr-xr-x 2025-10-07 08:06:32
Edit Download
3.05 KB lrwxr-xr-x 2025-10-07 08:06:32
Edit Download
3.05 KB lrwxr-xr-x 2025-10-07 08:06:32
Edit Download
1.16 MB lrwxr-xr-x 2025-10-07 08:06:34
Edit Download
8.60 KB lrwxr-xr-x 2025-10-07 08:06:32
Edit Download
260 B lrwxr-xr-x 2024-04-06 13:02:18
Edit Download
24.62 KB lrwxr-xr-x 2025-06-03 02:06:30
Edit Download
132.08 KB lrwxr-xr-x 2022-10-08 08:02:59
Edit Download
218.45 KB lrwxr-xr-x 2026-01-26 09:30:39
Edit Download
17.09 KB lrwxr-xr-x 2019-10-15 21:49:06
Edit Download
579 B lrwxr-xr-x 2021-02-12 14:17:59
Edit Download
131.91 KB lrwxr-xr-x 2021-10-08 19:47:35
Edit Download
36.63 KB lrwxr-xr-x 2026-01-27 02:08:14
Edit Download
1.82 KB lrwxr-xr-x 2026-02-08 12:13:11
Edit Download
689.52 KB lrwxr-xr-x 2026-01-27 02:08:14
Edit Download
689.52 KB lrwxr-xr-x 2025-12-09 17:21:24
Edit Download
689.51 KB lrwxr-xr-x 2025-11-19 15:30:22
Edit Download
65.22 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
33.05 KB lrwxr-xr-x 2025-12-08 09:43:19
Edit Download
80.86 KB lrwxr-xr-x 2020-08-30 17:47:39
Edit Download
2.07 KB lrwxr-xr-x 2025-09-23 08:27:35
Edit Download
24.95 KB lrwxr-xr-x 2023-10-14 17:19:01
Edit Download
117.67 KB lrwxr-xr-x 2024-05-23 08:36:02
Edit Download
5.33 KB lrwxr-xr-x 2025-09-23 08:27:35
Edit Download
6.90 MB lrwxr-xr-x 2025-12-10 13:36:19
Edit Download
15.87 MB lrwxr-xr-x 2025-11-06 07:58:11
Edit Download
596 B lrwxr-xr-x 2025-11-06 07:58:11
Edit Download
9.82 MB lrwxr-xr-x 2024-10-25 12:14:24
Edit Download
8.78 MB lrwxr-xr-x 2025-10-02 10:39:00
Edit Download
47.68 KB lrwxr-xr-x 2025-12-10 11:01:54
Edit Download
23.78 MB lrwxr-xr-x 2025-12-18 08:50:42
Edit Download
15.62 KB lrwx------ 2024-05-20 09:49:40
Edit Download
12.85 MB lrwxr-xr-x 2025-12-29 10:16:13
Edit Download
8.52 KB lrwxr-xr-x 2025-11-27 10:46:49
Edit Download
1.40 MB lrwxr-xr-x 2025-12-10 13:36:18
Edit Download
7.01 KB lrwxr-xr-x 2025-12-10 13:08:24
Edit Download
11.51 KB lrwxr-xr-x 2025-12-10 13:08:24
Edit Download
6.90 MB lrwxr-xr-x 2025-12-10 13:36:19
Edit Download
2.13 MB lrwxr-xr-x 2025-06-09 17:22:05
Edit Download
1.54 MB lrwxr-xr-x 2026-01-26 09:30:39
Edit Download
159.95 KB lrwxr-xr-x 2024-04-08 09:18:53
Edit Download
50.23 KB lrwxr-xr-x 2022-04-18 17:09:26
Edit Download
323 B lrwxr-xr-x 2024-04-06 13:02:18
Edit Download
15.62 KB lrwxr-xr-x 2026-02-02 09:29:30
Edit Download
693.30 KB lrwxr-xr-x 2024-05-23 08:36:03
Edit Download
220.80 KB lrwxr-xr-x 2024-04-02 18:37:43
Edit Download
6.89 KB lrwxr-xr-x 2024-04-02 18:37:41
Edit Download
220.80 KB lrwxr-xr-x 2024-04-02 18:37:43
Edit Download
220.80 KB lrwxr-xr-x 2024-04-02 18:37:43
Edit Download
220.80 KB lrwxr-xr-x 2024-04-02 18:37:43
Edit Download
220.80 KB lrwxr-xr-x 2024-04-02 18:37:43
Edit Download
21.00 KB lrwxr-xr-x 2020-08-30 17:47:39
Edit Download
408.03 KB lrwxr-xr-x 2020-08-30 07:37:42
Edit Download
137.57 KB lrwxr-xr-x 2020-08-30 07:37:42
Edit Download
129.30 KB lrwxr-xr-x 2020-08-30 07:37:42
Edit Download
125.28 KB lrwxr-xr-x 2020-08-30 07:37:42
Edit Download
2.18 KB lrwxr-xr-x 2020-05-08 14:19:42
Edit Download
129.30 KB lrwxr-xr-x 2020-08-30 07:37:42
Edit Download
9.01 KB lrwxr-xr-x 2019-11-12 14:33:33
Edit Download
220.80 KB lrwxr-xr-x 2024-04-02 18:37:43
Edit Download
6.89 KB lrwxr-xr-x 2024-04-02 18:37:41
Edit Download
220.80 KB lrwxr-xr-x 2024-04-02 18:37:43
Edit Download
220.80 KB lrwxr-xr-x 2024-04-02 18:37:43
Edit Download
220.80 KB lrwxr-xr-x 2024-04-02 18:37:43
Edit Download
220.80 KB lrwxr-xr-x 2024-04-02 18:37:43
Edit Download
25.00 KB lrwxr-xr-x 2020-08-30 17:47:39
Edit Download
62.28 KB lrwxr-xr-x 2023-10-14 17:57:46
Edit Download
41.29 KB lrwxr-xr-x 2023-10-14 17:57:46
Edit Download
11.85 KB lrwxr-xr-x 2025-11-06 07:45:52
Edit Download
194.98 KB lrwxr-xr-x 2024-09-24 08:36:00
Edit Download
24.52 KB lrwxr-xr-x 2021-10-08 13:50:55
Edit Download
49.05 KB lrwxr-xr-x 2025-04-22 01:55:40
Edit Download
16.41 KB lrwxr-xr-x 2024-09-24 02:24:38
Edit Download
32.99 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
986.09 KB lrwxr-xr-x 2025-12-08 09:43:19
Edit Download
11.88 KB lrwxr-xr-x 2024-09-24 02:24:38
Edit Download
11.88 KB lrwxr-xr-x 2024-09-24 02:24:38
Edit Download
19.88 KB lrwxr-xr-x 2024-09-24 02:24:38
Edit Download
16.27 KB lrwxr-xr-x 2024-09-24 02:24:38
Edit Download
19.87 KB lrwxr-xr-x 2024-09-24 02:24:38
Edit Download
25.33 KB lrwxr-xr-x 2024-05-23 08:36:03
Edit Download
12.28 KB lrwxr-xr-x 2024-07-02 21:04:21
Edit Download
93.03 KB lrwxr-xr-x 2023-04-02 00:29:07
Edit Download
16.41 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
90.59 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
20.35 KB lrwxr-xr-x 2024-09-24 02:24:38
Edit Download
969.55 KB lrwxr-xr-x 2025-10-07 08:50:28
Edit Download
159.95 KB lrwxr-xr-x 2024-04-08 09:18:53
Edit Download
19.88 KB lrwxr-xr-x 2024-09-24 02:24:38
Edit Download
15.88 KB lrwxr-xr-x 2024-09-24 02:24:38
Edit Download
19.88 KB lrwxr-xr-x 2024-09-24 02:24:38
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
10.12 KB lr-xr-xr-x 2026-01-23 07:31:10
Edit Download
200.70 KB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
23.14 KB lr-xr-xr-x 2026-01-23 07:31:10
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
840.92 KB lrwxr-xr-x 2025-11-06 07:45:52
Edit Download
425.19 KB lrwxr-xr-x 2024-09-24 08:36:00
Edit Download
26.04 MB lrwxr-xr-x 2026-01-31 17:49:53
Edit Download
12.37 KB lrwxr-xr-x 2025-03-11 12:11:55
Edit Download
620.75 KB lrwxr-xr-x 2025-11-05 10:54:46
Edit Download
379.51 KB lrwxr-xr-x 2025-11-05 10:54:46
Edit Download
25.40 KB lrwxr-xr-x 2020-08-30 17:47:39
Edit Download
21.03 KB lrwxr-xr-x 2020-08-30 17:47:39
Edit Download
251 B lrwxr-xr-x 2019-10-12 00:47:14
Edit Download
39.07 KB lrwxr-xr-x 2019-10-12 00:48:04
Edit Download
12.68 KB lrwxr-xr-x 2024-09-24 08:36:00
Edit Download
138.45 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
2.23 KB lrwxr-xr-x 2024-09-24 08:36:00
Edit Download
16.48 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
41.27 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
138.45 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
138.45 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
138.45 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
39.07 KB lrwxr-xr-x 2019-10-12 00:48:04
Edit Download
86.56 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
39.07 KB lrwxr-xr-x 2019-10-12 00:48:04
Edit Download
39.07 KB lrwxr-xr-x 2019-10-12 00:48:04
Edit Download
475.98 KB lrwxr-xr-x 2023-10-15 05:11:09
Edit Download
24.44 KB lrwxr-xr-x 2025-12-17 18:54:08
Edit Download
11.86 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
186.83 KB lrwxr-xr-x 2024-04-06 14:17:10
Edit Download
86.48 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
159.95 KB lrwxr-xr-x 2024-04-08 09:18:53
Edit Download
159.95 KB lrwxr-xr-x 2024-04-08 09:18:53
Edit Download
25.83 KB lrwxr-x--- 2024-05-22 16:19:58
Edit Download
197.24 KB lrwxr-xr-x 2025-06-04 10:54:29
Edit Download
197.24 KB lrwxr-xr-x 2025-06-04 10:54:29
Edit Download
42.22 KB lrwxr-xr-x 2025-06-04 10:53:59
Edit Download
26.04 MB lrwxr-xr-x 2026-01-31 17:49:53
Edit Download
840.92 KB lrwxr-xr-x 2025-11-06 07:45:52
Edit Download
40.79 KB lrwxr-xr-x 2025-11-06 07:45:52
Edit Download
36.63 KB lrwxr-xr-x 2025-11-06 07:45:52
Edit Download
36.63 KB lrwxr-xr-x 2025-11-06 07:45:52
Edit Download
11.85 KB lrwxr-xr-x 2025-11-06 07:45:52
Edit Download
16.98 KB lrwxr-xr-x 2020-08-30 17:47:39
Edit Download
3.41 MB lrwxr-xr-x 2025-08-26 09:47:31
Edit Download
107.23 KB lrwxr-xr-x 2025-12-18 13:51:04
Edit Download
37.48 KB lrwxr-xr-x 2025-06-04 10:54:29
Edit Download
13.03 KB lrwxr-xr-x 2025-06-04 10:54:28
Edit Download
65.87 KB lrwxr-xr-x 2025-06-04 10:54:29
Edit Download
10.00 KB lrwxr-xr-x 2025-06-04 10:53:59
Edit Download
9.02 KB lrwxr-xr-x 2025-06-04 10:53:59
Edit Download
49.78 KB lrwxr-xr-x 2025-06-04 10:54:29
Edit Download
45.36 KB lrwxr-xr-x 2025-06-04 10:54:29
Edit Download
23.36 KB lrwxr-xr-x 2025-06-04 10:53:59
Edit Download
65.80 KB lrwxr-xr-x 2025-06-04 10:54:29
Edit Download
35.52 KB lrwxr-xr-x 2025-06-04 10:54:29
Edit Download
24.41 KB lrwxr-xr-x 2025-01-28 01:24:57
Edit Download
11.87 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
156.69 KB lrwxr-xr-x 2025-12-08 09:43:19
Edit Download
12.29 KB lrwxr-xr-x 2025-11-06 07:45:52
Edit Download
113.57 KB lrwxr-xr-x 2024-05-23 08:36:03
Edit Download
12.40 KB lrwxr-xr-x 2024-04-06 13:04:35
Edit Download
13.05 KB lrwxr-xr-x 2019-10-12 00:47:15
Edit Download
45.20 KB lrwxr-xr-x 2025-12-17 18:54:08
Edit Download
10.03 MB lrwxr-xr-x 2025-12-10 11:01:55
Edit Download
11.87 KB lrwxr-xr-x 2025-12-17 18:54:08
Edit Download
4.07 KB lrwxr-xr-x 2019-10-12 20:09:13
Edit Download
85.60 KB lrwxr-xr-x 2021-10-08 15:43:26
Edit Download
16.39 KB lrwxr-xr-x 2021-10-08 15:43:26
Edit Download
94.50 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
1.43 MB lrwxr-xr-x 2022-10-08 12:29:36
Edit Download
6.24 MB lrwxr-xr-x 2025-08-26 16:36:00
Edit Download
16.70 KB lrwxr-xr-x 2023-10-14 20:31:02
Edit Download
66.13 KB lrwxr-xr-x 2023-10-14 17:19:01
Edit Download
66.13 KB lrwxr-xr-x 2023-10-14 17:19:01
Edit Download
12.38 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
12.71 KB lrwxr-xr-x 2020-08-30 17:47:39
Edit Download
6.05 KB lrwxr-xr-x 2025-11-05 08:10:54
Edit Download
141.84 KB lrwxr-xr-x 2025-11-05 08:11:13
Edit Download
218.45 KB lrwxr-xr-x 2026-01-26 09:30:39
Edit Download
2.13 MB lrwxr-xr-x 2025-06-09 17:22:05
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
57.27 KB lrwxr-xr-x 2025-12-18 13:51:04
Edit Download
53.10 KB lrwxr-xr-x 2025-12-18 13:51:04
Edit Download
20.44 KB lrwxr-xr-x 2025-12-17 18:54:08
Edit Download
53.13 KB lrwxr-xr-x 2025-12-18 13:51:04
Edit Download
78.67 KB lrwxr-xr-x 2021-10-09 07:08:37
Edit Download
115.75 KB lrwxr-xr-x 2021-10-09 07:08:37
Edit Download
83.16 KB lrwxr-xr-x 2021-10-09 07:08:37
Edit Download
83.16 KB lrwxr-xr-x 2021-10-09 07:08:37
Edit Download
16.54 KB lrwxr-xr-x 2021-10-09 07:08:37
Edit Download
3.70 KB lrwxr-xr-x 2025-11-05 07:57:52
Edit Download
0 B ?????????? 2026-02-08 12:57:36
Edit Download
24.55 KB lrwxr-xr-x 2023-10-14 17:19:01
Edit Download
187.38 KB lrwxr-xr-x 2024-05-23 08:36:02
Edit Download
20.55 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
218.45 KB lrwxr-xr-x 2026-01-26 09:30:39
Edit Download
83.24 KB lrwxr-xr-x 2021-10-09 07:08:37
Edit Download
24.38 KB lrwxr-xr-x 2021-10-08 13:50:55
Edit Download
64.91 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
41.57 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
195.75 KB lrwxr-xr-x 2026-01-26 09:30:39
Edit Download
20.53 KB lrwxr-xr-x 2024-07-02 21:04:21
Edit Download
16.41 KB lrwxr-xr-x 2024-07-02 21:04:21
Edit Download
53.46 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
159.95 KB lrwxr-xr-x 2024-04-08 09:18:53
Edit Download
36.53 KB lrwxr-xr-x 2025-11-06 07:45:52
Edit Download
20.45 KB lrwxr-xr-x 2025-11-06 07:45:52
Edit Download
24.53 KB lrwxr-xr-x 2026-01-27 02:08:14
Edit Download
67.63 KB lrwxr-xr-x 2020-08-30 17:47:39
Edit Download
106.55 KB lrwxr-xr-x 2025-06-04 10:54:29
Edit Download
61.73 KB lrwxr-xr-x 2025-06-04 10:54:29
Edit Download
158.92 KB lrwxr-xr-x 2025-06-04 10:54:29
Edit Download
49.91 KB lrwxr-xr-x 2025-06-04 10:54:29
Edit Download
103.29 KB lrwxr-xr-x 2025-06-04 10:54:29
Edit Download
61.55 KB lrwxr-xr-x 2022-10-12 11:00:54
Edit Download
9.41 KB lrwxr-xr-x 2025-06-04 10:53:59
Edit Download
19.38 KB lrwxr-xr-x 2025-06-04 10:54:28
Edit Download
32.64 KB lrwxr-xr-x 2022-10-12 11:00:54
Edit Download
724.73 KB lrwxr-xr-x 2024-11-05 02:34:13
Edit Download
46.94 KB lrwxr-xr-x 2024-05-23 08:36:02
Edit Download
49.30 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
117.27 KB lrwxr-xr-x 2024-05-23 08:36:02
Edit Download
25.33 KB lrwxr-xr-x 2024-05-23 08:36:03
Edit Download
218.45 KB lrwxr-xr-x 2026-01-26 09:30:39
Edit Download
1.53 MB lrwxr-xr-x 2025-12-17 16:01:04
Edit Download
48.99 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
20.77 KB lrwxr-xr-x 2022-02-23 20:13:56
Edit Download
16.42 KB lrwxr-xr-x 2022-02-23 20:13:56
Edit Download
65.35 KB lrwxr-xr-x 2025-03-11 12:11:55
Edit Download
12.28 KB lrwxr-xr-x 2025-03-11 12:11:55
Edit Download
12.27 KB lrwxr-xr-x 2025-03-11 12:11:55
Edit Download
11.89 KB lrwxr-xr-x 2025-03-11 12:11:55
Edit Download
11.88 KB lrwxr-xr-x 2025-03-11 12:11:55
Edit Download
11.88 KB lrwxr-xr-x 2025-03-11 12:11:55
Edit Download
11.88 KB lrwxr-xr-x 2025-03-11 12:11:55
Edit Download
7.84 KB lrwxr-xr-x 2025-03-11 12:11:55
Edit Download
11.86 KB lrwxr-xr-x 2025-03-11 12:11:55
Edit Download
12.36 KB lrwxr-xr-x 2025-03-11 12:11:55
Edit Download
29.27 KB lrwxr-xr-x 2024-07-02 21:04:21
Edit Download
16.91 KB lrwxr-xr-x 2025-12-17 16:01:04
Edit Download
3.64 KB lrwxr-xr-x 2025-09-23 08:27:35
Edit Download
20.41 KB lrwxr-xr-x 2024-07-02 21:04:21
Edit Download
16.27 KB lrwxr-xr-x 2024-01-10 14:34:46
Edit Download
12.27 KB lrwxr-xr-x 2025-03-11 12:11:55
Edit Download
20.53 KB lrwxr-xr-x 2024-07-02 21:04:21
Edit Download
91.38 KB lrwxr-xr-x 2021-10-09 07:08:37
Edit Download
16.38 KB lrwxr-xr-x 2024-07-02 21:04:21
Edit Download
118.51 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
198.05 KB lrwxr-xr-x 2022-10-12 10:53:29
Edit Download
21.06 KB lrwxr-xr-x 2025-06-04 10:54:29
Edit Download
218.45 KB lrwxr-xr-x 2026-01-26 09:30:39
Edit Download
11.87 KB lrwxr-xr-x 2025-06-03 02:06:30
Edit Download
16.91 KB lrwxr-xr-x 2019-10-15 21:57:14
Edit Download
12.81 KB lrwxr-xr-x 2019-10-15 21:57:14
Edit Download
43.76 KB lrwxr-xr-x 2020-08-30 17:47:39
Edit Download
78.14 KB lrwxr-xr-x 2025-06-04 10:54:29
Edit Download
907.08 KB lrwxr-xr-x 2024-04-06 14:11:24
Edit Download
733.20 KB lrwxr-xr-x 2024-04-06 14:11:24
Edit Download
32.45 KB lrwxr-xr-x 2026-01-19 08:19:51
Edit Download
32.60 KB lrwxr-xr-x 2026-01-19 08:19:51
Edit Download
191.30 KB lrwxr-xr-x 2024-05-23 08:36:02
Edit Download
869.62 KB lrwxr-xr-x 2025-12-18 02:27:48
Edit Download
73.01 KB lrwxr-xr-x 2025-11-06 10:40:45
Edit Download
61.09 KB lrwxr-xr-x 2025-11-06 10:40:45
Edit Download
838 B lrwxr-xr-x 2018-09-06 18:09:08
Edit Download
45.98 KB lrwxr-xr-x 2021-12-15 12:46:22
Edit Download
20.41 KB lrwxr-x--- 2026-01-27 02:08:14
Edit Download
49.24 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
20.12 MB lrwxr-xr-x 1990-01-01 12:00:00
Edit Download
16.50 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
20.75 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
49.41 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
16.49 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
28.88 KB lrwxr-xr-x 2023-10-14 20:31:02
Edit Download
415 B lrwxr-xr-x 2025-07-15 09:13:46
Edit Download
309.72 KB lrwxr-xr-x 2024-04-06 12:42:24
Edit Download
218.45 KB lrwxr-xr-x 2026-01-26 09:30:39
Edit Download
1.43 MB lrwxr-xr-x 2022-10-08 12:29:36
Edit Download
1.43 MB lrwxr-xr-x 2022-10-08 12:29:36
Edit Download
1.43 MB lrwxr-xr-x 2022-10-08 12:29:36
Edit Download
1.43 MB lrwxr-xr-x 2022-10-08 12:29:36
Edit Download
907.47 KB lrwxr-xr-x 2022-10-08 12:29:34
Edit Download
1.43 MB lrwxr-xr-x 2022-10-08 12:29:36
Edit Download
895.45 KB lrwxr-xr-x 2022-10-08 12:29:34
Edit Download
1.43 MB lrwxr-xr-x 2022-10-08 12:29:36
Edit Download
1.43 MB lrwxr-xr-x 2022-10-08 12:29:36
Edit Download
1.43 MB lrwxr-xr-x 2022-10-08 12:29:36
Edit Download
1.43 MB lrwxr-xr-x 2022-10-08 12:29:36
Edit Download
33.43 KB lrwxr-xr-x 2019-10-16 17:24:08
Edit Download
163.07 KB lrwxr-xr-x 2024-05-23 08:36:02
Edit Download
35.47 KB lrwxr-xr-x 2019-10-12 11:32:29
Edit Download
20.44 KB lrwxr-xr-x 2023-10-14 17:19:01
Edit Download
20.44 KB lrwxr-xr-x 2023-10-14 17:19:01
Edit Download
20.45 KB lrwxr-xr-x 2025-11-06 07:45:52
Edit Download
110.63 KB lrwxr-xr-x 2025-10-07 07:08:06
Edit Download
3.88 KB lrwxr-xr-x 2024-02-22 12:23:28
Edit Download
6.50 KB lrwxr-xr-x 2024-02-22 12:23:28
Edit Download
424.58 KB lrwxr-xr-x 2026-01-26 09:30:39
Edit Download
197.24 KB lrwxr-xr-x 2025-06-04 10:54:29
Edit Download
197.24 KB lrwxr-xr-x 2025-06-04 10:54:29
Edit Download
11.89 KB lrwxr-xr-x 2025-09-03 09:08:27
Edit Download
57.34 KB lrwxr-xr-x 2025-07-28 13:31:47
Edit Download
36.86 KB lrwxr-xr-x 2025-12-17 18:54:08
Edit Download
36.86 KB lrwx------ 2025-12-17 18:54:08
Edit Download
99.57 KB lrwxr-xr-x 2024-04-06 14:17:10
Edit Download
36.66 KB lrwxr-xr-x 2023-10-14 22:48:04
Edit Download
14.44 KB lrwxr-xr-x 2024-04-06 14:11:23
Edit Download
148.16 KB lrwxr-xr-x 2025-12-18 13:51:04
Edit Download
107.29 KB lrwxr-xr-x 2025-12-18 13:51:04
Edit Download
144.11 KB lrwxr-xr-x 2025-12-18 13:51:04
Edit Download
12.41 KB lrwxr-xr-x 2025-11-04 09:19:14
Edit Download
15.88 KB lrwxr-xr-x 2025-06-03 02:06:30
Edit Download
118.04 KB lrwxr-xr-x 2024-05-23 08:36:02
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
2.61 MB lr-xr-xr-x 2026-01-23 07:31:14
Edit Download
68.05 KB lrwxr-xr-x 2025-12-18 13:51:04
Edit Download
68.05 KB lrwxr-xr-x 2025-12-18 13:51:04
Edit Download
14.22 KB lrwxr-xr-x 2023-10-14 20:52:05
Edit Download
239.28 KB lrwxr-xr-x 2025-12-18 14:01:11
Edit Download
28.58 KB lrwxr-xr-x 2024-09-24 08:36:00
Edit Download
16.47 KB lrwxr-xr-x 2024-04-06 13:04:35
Edit Download
11.78 MB lrwxr-xr-x 2025-12-10 13:36:19
Edit Download
33.60 KB lrwxr-xr-x 2024-04-08 09:18:53
Edit Download
3.34 MB lrwxr-xr-x 2026-01-30 23:01:14
Edit Download
3.34 MB lrwxr-xr-x 2026-01-30 23:01:14
Edit Download
2.33 KB lrwxr-xr-x 2022-02-09 18:45:57
Edit Download
41.12 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download
1.38 KB lrwxr-xr-x 2023-10-15 05:10:59
Edit Download
695 B lrwxr-xr-x 2023-10-15 05:11:00
Edit Download
434.59 KB lrwxr-xr-x 2023-10-15 05:11:09
Edit Download
760.47 KB lrwxr-xr-x 2023-10-15 05:11:09
Edit Download
12.39 KB lrwxr-xr-x 2023-10-15 05:11:09
Edit Download
800 B lrwxr-xr-x 2023-10-15 05:11:00
Edit Download
53.41 KB lrwxr-xr-x 2023-10-15 05:11:09
Edit Download
422.48 KB lrwxr-xr-x 2023-10-15 05:11:09
Edit Download
1.26 KB lrwxr-xr-x 2023-10-15 05:11:02
Edit Download
188.28 KB lrwxr-xr-x 2023-10-15 05:11:09
Edit Download
454.70 KB lrwxr-xr-x 2023-10-15 05:11:09
Edit Download
410.09 KB lrwxr-xr-x 2023-10-15 05:11:09
Edit Download
782 B lrwxr-xr-x 2023-10-15 05:10:59
Edit Download
1.02 KB lrwxr-xr-x 2023-10-15 05:11:00
Edit Download
685 B lrwxr-xr-x 2023-10-15 05:10:59
Edit Download
93.98 KB lrwxr-xr-x 2023-10-15 05:11:09
Edit Download
715.24 KB lrwxr-xr-x 2023-10-15 05:11:09
Edit Download
16.38 KB lrwxr-xr-x 2023-10-15 05:11:09
Edit Download
45.42 KB lrwxr-xr-x 2023-10-15 05:11:09
Edit Download
16.45 KB lrwxr-xr-x 2021-10-09 07:08:37
Edit Download
220.80 KB lrwxr-xr-x 2024-04-02 18:37:43
Edit Download
220.80 KB lrwxr-xr-x 2024-04-02 18:37:43
Edit Download
20.56 KB lrwxr-xr-x 2025-12-08 09:43:19
Edit Download
52.83 KB lrwxr-xr-x 2025-12-08 09:43:19
Edit Download
99.13 KB lrwxr-xr-x 2026-02-04 20:18:19
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).
© 2026 REDROOM — Secure File Manager. All rights reserved. Built with ❤️ & Red Dark UI