This file is indexed.

/lib/partman/init.d/50lvm is in ubiquity 2.18.7.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#!/bin/sh

# This script sets method "lvm" for all partitions that have the lvm
# flag set.  It also discovers the logical volumes and creates in them
# a loop partition table and partition.

. /lib/partman/lib/base.sh
. /lib/partman/lib/lvm-base.sh

# Avoid warnings from lvm2 tools about open file descriptors
export LVM_SUPPRESS_FD_WARNINGS=1

if [ -x /sbin/vgdisplay ]; then
	vgroups=$(/sbin/vgdisplay 2>/dev/null | grep '^[ ]*VG Name' | \
		sed -e 's/.*[[:space:]]\(.*\)$/\1/' | sort)
else
	vgroups=''
fi

for dev in /var/lib/partman/devices/*; do
	[ -d "$dev" ] || continue
	cd $dev
	partitions=
	open_dialog PARTITIONS
	while { read_line num id size type fs path name; [ "$id" ]; }; do
		if [ "$fs" != free ]; then
			partitions="$partitions $id,$path"
		fi
	done
	close_dialog

	# Check if device/partitions are used for LVM (PV)
	for part in $partitions; do
		set -- $(IFS=, && echo $part)
		id=$1
		path=$2
		lvm=

		# If the device is in fact being used for lvm, mark it as such.
		# This is a hack and it only works for full block devices, not
		# partitions. It makes raid devices used for lvm show up as such.
		if pvdisplay $(cat $dev/device) >/dev/null 2>&1 ; then
			lvm=1
		else
			open_dialog GET_FLAGS $id
			while { read_line flag; [ "$flag" ]; }; do
				if [ "$flag" = lvm ]; then
					lvm=1
					# can not break here
				fi
			done
			close_dialog
		fi
		if [ "$lvm" ]; then
			mkdir -p $id
			echo lvm >$id/method

			if ! [ -e $id/locked ]; then
				vg=$(pv_get_vg $path)
				for vgs in $vgroups; do
					if [ "$vg" = "$vgs" ]; then
						vg_lock_pvs $vg $path
					fi
				done
			fi
		fi
	done

	# Check if device is a logical volume
	if [ -f device ]; then
		# Obtain the VG from the device name
		device=$(cat device)
		case "$device" in
		    # LVM2
		    /dev/mapper/*)
			vglv=${device#/dev/mapper/}
			vglv=$(echo "$vglv" | sed -e 's/\([^-]\)-\([^-]\)/\1 \2/' |
			       sed -e 's/--/-/g')
			vg=$(echo "$vglv" | cut -d" " -f1)
			;;
		    # LVM1
		    *)
			vg=$(sed 's,^/[^/]*/\([^/]*\)/.*,\1,' device)
			;;
		esac
		is_lv=
		for vgs in $vgroups; do
			[ ! "$vgs" = "$vg" ] || is_lv=1
		done

		# If this is a new logical volume
		if [ "$is_lv" ] && [ -z "$partitions" ]; then
			# create a label
			open_dialog NEW_LABEL loop
			close_dialog
			# find the free space
			open_dialog PARTITIONS
			free_space=''
			while { read_line num id size type fs path name; [ "$id" ]; }; do
				if [ "$fs" = free ]; then
					free_space=$id
					free_size=$size
				fi
			done
			close_dialog
			# create partition in the free space
			if [ "$free_space" ]; then
				open_dialog NEW_PARTITION primary ext2 $free_space full $free_size
				read_line num id size type fs path name
				close_dialog
				if [ "$id" ]; then
					open_dialog GET_FILE_SYSTEM $id
					read_line filesystem
					close_dialog
					if [ "$filesystem" != none ]; then
						open_dialog CHANGE_FILE_SYSTEM $id $filesystem
						close_dialog
					fi
				fi
			fi
			open_dialog DISK_UNCHANGED
			close_dialog
		fi
	fi
done