public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/hardened-dev:musl commit in: sys-fs/lvm2/, sys-fs/lvm2/files/
@ 2015-05-15 22:42 Anthony G. Basile
  0 siblings, 0 replies; only message in thread
From: Anthony G. Basile @ 2015-05-15 22:42 UTC (permalink / raw
  To: gentoo-commits

commit:     4ccd940a2172a87d50fedce577ca2f7140f413c8
Author:     Fredric Johansson <fredric.miscmail <AT> gmail <DOT> com>
AuthorDate: Thu May 14 22:11:22 2015 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Fri May 15 22:42:50 2015 +0000
URL:        https://gitweb.gentoo.org/proj/hardened-dev.git/commit/?id=4ccd940a

Two separate patches for building lvm2 with musl Patch 1 (lvm2-fix-stdio-usage.patch) is taken directly from alpine linux and fixes usage of stdio constants Patch 2 fixes issues not covered by patch 1, missing include and pthread constants

 sys-fs/lvm2/files/clvmd.confd-2.02.39              |   9 +
 sys-fs/lvm2/files/clvmd.rc-2.02.39                 | 146 +++++++++++
 sys-fs/lvm2/files/device-mapper.conf-1.02.22-r3    |   1 +
 sys-fs/lvm2/files/device-mapper.rc-2.02.105-r2     | 147 +++++++++++
 sys-fs/lvm2/files/device-mapper.rc-2.02.95-r2      | 111 +++++++++
 sys-fs/lvm2/files/dmeventd.initd-2.02.67-r1        |  26 ++
 sys-fs/lvm2/files/dmtab                            |  12 +
 sys-fs/lvm2/files/lvm-monitoring.initd-2.02.105-r2 |  39 +++
 sys-fs/lvm2/files/lvm-monitoring.initd-2.02.67-r2  |  46 ++++
 sys-fs/lvm2/files/lvm.confd-2.02.28-r2             |   5 +
 sys-fs/lvm2/files/lvm.rc-2.02.105-r2               |  97 ++++++++
 sys-fs/lvm2/files/lvm.rc-2.02.95-r2                |  96 +++++++
 .../lvm2-2.02.100-selinux_and_udev_static.patch    |  93 +++++++
 .../files/lvm2-2.02.106-pthread-pkgconfig.patch    |  32 +++
 .../lvm2-2.02.107-static-pkgconfig-libs.patch      | 104 ++++++++
 .../lvm2/files/lvm2-2.02.108-example.conf.in.patch |  50 ++++
 .../lvm2-2.02.108-static-pkgconfig-libs.patch      | 104 ++++++++
 .../files/lvm2-2.02.56-lvm2create_initrd.patch     |  72 ++++++
 .../lvm2-2.02.63-always-make-static-libdm.patch    |  42 ++++
 sys-fs/lvm2/files/lvm2-2.02.67-createinitrd.patch  |  18 ++
 sys-fs/lvm2/files/lvm2-2.02.70-asneeded.patch      |  15 ++
 .../lvm2-2.02.92-dynamic-static-ldflags.patch      |  63 +++++
 .../lvm2/files/lvm2-2.02.99-example.conf.in.patch  |  47 ++++
 sys-fs/lvm2/files/lvm2-2.02.99-locale-muck.patch   |  11 +
 sys-fs/lvm2/files/lvm2-fix-stdio-usage.patch       | 111 +++++++++
 sys-fs/lvm2/files/lvm2-musl-fixes.patch            |  33 +++
 sys-fs/lvm2/files/lvmetad.initd-2.02.105-r2        |  13 +
 sys-fs/lvm2/lvm2-2.02.110-r99.ebuild               | 275 +++++++++++++++++++++
 sys-fs/lvm2/metadata.xml                           |  24 ++
 29 files changed, 1842 insertions(+)

diff --git a/sys-fs/lvm2/files/clvmd.confd-2.02.39 b/sys-fs/lvm2/files/clvmd.confd-2.02.39
new file mode 100644
index 0000000..5782170
--- /dev/null
+++ b/sys-fs/lvm2/files/clvmd.confd-2.02.39
@@ -0,0 +1,9 @@
+# CLVMD_CLUSTER_TIMEOUT -- amount of time to wait for cluster quorum.
+
+CLVMD_CLUSTER_TIMEOUT=30
+
+
+# CLVMD_NODES_TIMEOUT -- amount of time to wait for the other nodes to
+# join the cluster.
+
+CLVMD_NODES_TIMEOUT=60

diff --git a/sys-fs/lvm2/files/clvmd.rc-2.02.39 b/sys-fs/lvm2/files/clvmd.rc-2.02.39
new file mode 100755
index 0000000..9647623
--- /dev/null
+++ b/sys-fs/lvm2/files/clvmd.rc-2.02.39
@@ -0,0 +1,146 @@
+#!/sbin/runscript
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-fs/lvm2/files/clvmd.rc-2.02.39,v 1.3 2013/04/09 11:00:26 ssuominen Exp $
+
+[ -x /usr/sbin/clvmd ] && CLVMD_BIN="/usr/sbin/clvmd" || CLVMD_BIN="/sbin/clvmd"
+
+[ -z "$CLVMD_CLUSTER_TIMEOUT" ] && CLVMD_CLUSTER_TIMEOUT=30
+[ -n "$CLVMD_NODES_TIMEOUT" ] || CLVMD_NODES_TIMEOUT=60
+
+VGCHANGE="/sbin/vgchange"
+VGSCAN="/sbin/vgscan"
+VGDISPLAY="/sbin/vgdisplay"
+CLVMD_PIDFILE="/var/run/clvmd.pid"
+
+depend() {
+	use net dns logger dmeventd
+	need cman
+}
+
+load_modules() {
+	local module modules
+	modules=$1
+	
+	for module in ${modules}; do
+		ebegin "Loading ${module} kernel module"
+		modprobe ${module}
+		eend $? "Failed to load ${module} kernel module"
+	done
+}
+
+unload_modules() {
+	local module modules
+	modules=$1
+	
+	for module in ${modules}; do
+		ebegin "Unloading ${module} kernel module"
+		modprobe -r ${module}
+		eend $? "Failed to unload ${module} kernel module"
+	done
+}
+
+umount_gfs_filesystems() {
+	local sig retry
+	local remaining="$(awk '$3 == "gfs" { print $2 }' /proc/mounts | sort -r)"
+
+	if [ -n "${remaining}" ]
+	then
+	        sig=
+	        retry=3
+	        while [ -n "${remaining}" -a "${retry}" -gt 0 ]
+	        do
+	                if [ "${retry}" -lt 3 ]
+			then
+	                        ebegin "Unmounting GFS filesystems (retry)"
+	                        umount ${remaining} &>/dev/null
+	                        eend $? "Failed to unmount GFS filesystems this retry"
+	                else
+	                        ebegin "Unmounting GFS filesystems"
+	                        umount ${remaining} &>/dev/null
+	                        eend $? "Failed to unmount GFS filesystems"
+	                fi
+	                remaining="$(awk '$3 == "gfs" { print $2 }' /proc/mounts | sort -r)"
+	                [ -z "${remaining}" ] && break
+	                /bin/fuser -k -m ${sig} ${remaining} &>/dev/null
+	                sleep 5
+	                retry=$((${retry} -1))
+	                sig=-9
+	        done
+	fi
+}
+
+
+start_volumes() {
+	ebegin "Scanning LVM volumes"
+	$VGSCAN > /dev/null 2>&1
+	eend $?
+
+	ret=$?
+	if [ "$ret" -eq 5 ]
+	then
+		einfo "  Waiting for other nodes to join the cluster ($CLVMD_NODES_TIMEOUT seconds)"
+	fi
+
+	clustervgs=`$VGDISPLAY 2> /dev/null | awk 'BEGIN {RS="VG Name"} {if (/Clustered/) print $1;}'`
+	for vg in $clustervgs; do
+		ebegin "  Activating Clustered VG: ${vg} "
+
+		wait=0
+		while [ -n "$($VGCHANGE -a y ${vg} 2>&1 |grep "clvmd not running")" ]; do
+			if [ $wait -lt $CLVMD_NODES_TIMEOUT ]; then
+				sleep 3
+				wait=$(($wait + 3))
+			else
+				eend 1
+			fi
+		done
+		eend 0
+	done
+}
+
+stop_volumes() {
+	# Deactivate only clustered volumes
+	clustervgs=`$VGDISPLAY 2> /dev/null | awk 'BEGIN {RS="VG Name"} {if (/Clustered/) print $1;}'`
+	for vg in $clustervgs; do
+		ebegin "  Shutting Down Clustered VG: ${vg} "
+		$VGCHANGE -anl ${vg} >/dev/null
+		eend $?
+	done
+}
+
+
+start() {
+	local module=$(awk '$1 == "dm_mod" { print $1 }' /proc/{modules,devices})
+
+	if [ -z "${module}" ]; then
+		load_modules "dm-mod"
+		sleep 1s
+	fi
+
+	ebegin "Starting clvmd ($CLVMD_CLUSTER_TIMEOUT seconds)"
+
+	start-stop-daemon --start --quiet --exec ${CLVMD_BIN} -- -T ${CLVMD_CLUSTER_TIMEOUT}
+	eend $?
+
+	start_volumes
+}
+
+stop() {
+
+	# umount GFS filesystems
+	umount_gfs_filesystems
+
+	#stop_volumes
+
+	ebegin "Stopping clvmd"
+	#start-stop-daemon --stop -s TERM --quiet --exec ${CLVMD_BIN} --name clvmd
+	killall -TERM ${CLVMD_BIN} >/dev/null
+	eend $?
+
+        #local module=$(awk '$1 == "dm_mod" { print $1 }' /proc/modules)
+
+	#if [[ "$?" -eq 0 && ! -z "${module}" ]]; then
+        #        unload_modules "dm-mod"
+        #fi
+}

diff --git a/sys-fs/lvm2/files/device-mapper.conf-1.02.22-r3 b/sys-fs/lvm2/files/device-mapper.conf-1.02.22-r3
new file mode 100644
index 0000000..bc7a251
--- /dev/null
+++ b/sys-fs/lvm2/files/device-mapper.conf-1.02.22-r3
@@ -0,0 +1 @@
+RC_AFTER="lvm"

diff --git a/sys-fs/lvm2/files/device-mapper.rc-2.02.105-r2 b/sys-fs/lvm2/files/device-mapper.rc-2.02.105-r2
new file mode 100644
index 0000000..56e7503
--- /dev/null
+++ b/sys-fs/lvm2/files/device-mapper.rc-2.02.105-r2
@@ -0,0 +1,147 @@
+#!/sbin/runscript
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-fs/lvm2/files/device-mapper.rc-2.02.105-r2,v 1.1 2014/02/02 19:52:34 robbat2 Exp $
+
+depend() {
+	# As of .67-r1, we call ALL lvm start/stop scripts with --sysinit, that
+	# means dmeventd is NOT notified, as it cannot be safely running
+	before dmeventd checkfs fsck
+	after modules
+}
+
+dm_in_proc() {
+	local retval=0
+	for x in devices misc ; do
+		grep -qs 'device-mapper' /proc/${x}
+		retval=$((${retval} + $?))
+	done
+	return ${retval}
+}
+
+# char **build_dmsetup_command(volume)
+#
+# Returns complete dmsetup command given single volume name
+build_dmsetup_command() {
+	local count dmsetup_cmd
+	
+	# Number of lines mentioning volume name
+	count=$(grep -v -e '^[[:space:]]*\(#\|$\)' /etc/dmtab | grep -c ${1})
+	
+	# If there's just one line:
+	if [ ${count} -eq 1 ] ; then
+		echo "echo $(grep -v -e '^[[:space:]]*\(#\|$\)' /etc/dmtab | \
+			  grep ${1} | awk '{$1=""; print $0}') | /sbin/dmsetup create ${1}"
+			  
+	# For all cases with more lines:
+	elif [ ${count} -gt 1 ] ; then
+		for c in $( seq 1 ${count} ) ; do
+			if [ ${c} -eq 1 ] ; then
+				# Heavy escaping in awk-statement because we cannot use apostrophes
+				dmsetup_cmd="echo -e $(grep -v -e '^[[:space:]]*\(#\|$\)' /etc/dmtab | \
+							 grep ${1} | awk NR==${c}\ \{\$1=\"\"\;\ print\ \$0\})"
+			else
+				# Append starting with newline
+				dmsetup_cmd="${dmsetup_cmd}\\\\n \
+							 $(grep -v -e '^[[:space:]]*\(#\|$\)' /etc/dmtab | \
+							 grep ${1} | awk NR==${c}\ \{\$1=\"\"\;\ print\ \$0\})"
+			fi
+		done
+		echo "${dmsetup_cmd} | /sbin/dmsetup create ${1}"
+	fi
+
+	return 0
+}
+
+# char **get_new_dm_volumes(void)
+#
+#   Return unique volumes from /etc/dmtab
+get_new_dm_volumes() {
+	local volume
+
+	# Filter comments and blank lines
+	grep -v -e '^[[:space:]]*\(#\|$\)' /etc/dmtab | \
+	awk '{ print $1 }' | \
+	uniq | \
+	while read volume ; do
+		# If it exists, skip it
+		dmvolume_exists "${volume%:}" && continue
+
+		echo "${volume%:}"
+	done
+
+	return 0
+}
+
+# int dmvolume_exists(volume)
+#
+#   Return true if volume exists in DM table
+dmvolume_exists() {
+	local x line volume=$1
+
+	[ -z "${volume}" ] && return 1
+
+	/sbin/dmsetup ls 2>/dev/null | \
+	while read line ; do
+		for x in ${line} ; do
+			# the following conditonal return only breaks out
+			# of the while loop, as it is running in a pipe.
+			[ "${x}" = "${volume}" ] && return 1
+			# We only want to check the volume name
+			break
+		done
+	done
+
+	# if 1 was returned from the above loop, then indicate that
+	# volume exists
+	[ $? = 1 ] && return 0
+
+	# otherwise the loop exited normally and the volume does not
+	# exist
+	return 1
+}
+
+# int is_empty_dm_volume(volume)
+#
+#   Return true if the volume exists in DM table, but is empty/non-valid
+is_empty_dm_volume() {
+	local table volume=$1
+
+	set -- $(/sbin/dmsetup table 2>/dev/null | grep -e "^${volume}:")
+	[ "${volume}" = "$1" -a -z "$2" ]
+}
+
+
+start() {
+	if [ -e /proc/modules ] && ! dm_in_proc ; then
+		modprobe dm-mod 2>/dev/null
+	fi
+	# Ensure the dirs exist for locking and running
+	checkpath -q -d -m 0700 -o root:root /run/lvm /run/lock/lvm
+
+	local x volume
+	
+	if [ -x /sbin/dmsetup -a -c /dev/mapper/control -a -f /etc/dmtab ] ; then
+		[ -n "$(get_new_dm_volumes)" ] && \
+			einfo " Setting up device-mapper volumes:"
+		
+		get_new_dm_volumes | \
+		while read x ; do
+			[ -n "${x}" ] || continue
+			
+			volume="${x##* }"
+			
+			ebegin "  Creating volume: ${volume}"
+			if ! eval $(build_dmsetup_command ${volume}) >/dev/null 2>/dev/null ; then
+				eend 1 "  Error creating volume: ${volume}"
+				# dmsetup still adds an empty volume in some cases,
+				#  so lets remove it
+				is_empty_dm_volume "${volume}" && \
+					/sbin/dmsetup remove "${volume}" 2>/dev/null
+			else
+				eend 0
+			fi
+		done
+	fi
+}
+

diff --git a/sys-fs/lvm2/files/device-mapper.rc-2.02.95-r2 b/sys-fs/lvm2/files/device-mapper.rc-2.02.95-r2
new file mode 100644
index 0000000..9ac8cdb
--- /dev/null
+++ b/sys-fs/lvm2/files/device-mapper.rc-2.02.95-r2
@@ -0,0 +1,111 @@
+#!/sbin/runscript
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-fs/lvm2/files/device-mapper.rc-2.02.95-r2,v 1.2 2013/04/09 11:00:26 ssuominen Exp $
+
+depend() {
+	# As of .67-r1, we call ALL lvm start/stop scripts with --sysinit, that
+	# means dmeventd is NOT notified, as it cannot be safely running
+	before dmeventd checkfs fsck
+	after modules
+}
+
+dm_in_proc() {
+	local retval=0
+	for x in devices misc ; do
+		grep -qs 'device-mapper' /proc/${x}
+		retval=$((${retval} + $?))
+	done
+	return ${retval}
+}
+
+# char **get_new_dm_volumes(void)
+#
+#   Return dmsetup commands to setup volumes
+get_new_dm_volumes() {
+	local volume params
+
+	# Filter comments and blank lines
+	grep -v -e '^[[:space:]]*\(#\|$\)' /etc/dmtab | \
+	while read volume params ; do
+		# If it exists, skip it
+		dmvolume_exists "${volume%:}" && continue
+		# Assemble the command to run to create volume
+		echo "echo ${params} | /sbin/dmsetup create ${volume%:}"
+	done
+
+	return 0
+}
+
+# int dmvolume_exists(volume)
+#
+#   Return true if volume exists in DM table
+dmvolume_exists() {
+	local x line volume=$1
+
+	[ -z "${volume}" ] && return 1
+
+	/sbin/dmsetup ls 2>/dev/null | \
+	while read line ; do
+		for x in ${line} ; do
+			# the following conditonal return only breaks out
+			# of the while loop, as it is running in a pipe.
+			[ "${x}" = "${volume}" ] && return 1
+			# We only want to check the volume name
+			break
+		done
+	done
+
+	# if 1 was returned from the above loop, then indicate that
+	# volume exists
+	[ $? = 1 ] && return 0
+
+	# otherwise the loop exited normally and the volume does not
+	# exist
+	return 1
+}
+
+# int is_empty_dm_volume(volume)
+#
+#   Return true if the volume exists in DM table, but is empty/non-valid
+is_empty_dm_volume() {
+	local table volume=$1
+
+	set -- $(/sbin/dmsetup table 2>/dev/null | grep -e "^${volume}:")
+	[ "${volume}" = "$1" -a -z "$2" ]
+}
+
+
+start() {
+	if [ -e /proc/modules ] && ! dm_in_proc ; then
+		modprobe dm-mod 2>/dev/null
+	fi
+	# Ensure the dirs exist for locking and running
+	checkpath -q -d -m 0700 -o root:root /run/lvm /run/lock/lvm
+
+	local x volume
+	
+	if [ -x /sbin/dmsetup -a -c /dev/mapper/control -a -f /etc/dmtab ] ; then
+		[ -n "$(get_new_dm_volumes)" ] && \
+			einfo " Setting up device-mapper volumes:"
+	
+		get_new_dm_volumes | \
+		while read x ; do
+			[ -n "${x}" ] || continue
+	
+			volume="${x##* }"
+	
+			ebegin "  Creating volume: ${volume}"
+			if ! eval "${x}" >/dev/null 2>/dev/null ; then
+				eend 1 "  Error creating volume: ${volume}"
+				# dmsetup still adds an empty volume in some cases,
+				#  so lets remove it
+				is_empty_dm_volume "${volume}" && \
+					/sbin/dmsetup remove "${volume}" 2>/dev/null
+			else
+				eend 0
+			fi
+		done
+	fi
+}
+

diff --git a/sys-fs/lvm2/files/dmeventd.initd-2.02.67-r1 b/sys-fs/lvm2/files/dmeventd.initd-2.02.67-r1
new file mode 100644
index 0000000..3c2f5f3
--- /dev/null
+++ b/sys-fs/lvm2/files/dmeventd.initd-2.02.67-r1
@@ -0,0 +1,26 @@
+#!/sbin/runscript
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-fs/lvm2/files/dmeventd.initd-2.02.67-r1,v 1.3 2014/02/08 21:17:46 robbat2 Exp $
+
+PIDFILE=/run/dmeventd.pid
+BIN=/sbin/dmeventd
+
+depend() {
+	# As of .67-r1, we call ALL lvm start/stop scripts with --sysinit, that
+	# means dmeventd is NOT notified, as it cannot be safely running
+	after lvm device-mapper
+}
+
+start() {
+	ebegin "Starting dmeventd"
+	start-stop-daemon --start --exec $BIN --pidfile $PIDFILE
+	eend $?
+}
+
+stop() {
+	ebegin "Stopping dmeventd"
+	start-stop-daemon --stop --exec $BIN --pidfile $PIDFILE
+	eend $?
+}
+

diff --git a/sys-fs/lvm2/files/dmtab b/sys-fs/lvm2/files/dmtab
new file mode 100644
index 0000000..5fc1d79
--- /dev/null
+++ b/sys-fs/lvm2/files/dmtab
@@ -0,0 +1,12 @@
+#/etc/dmraid: config file for adding device-mapper volumes at boot
+# $Header: /var/cvsroot/gentoo-x86/sys-fs/lvm2/files/dmtab,v 1.1 2009/04/09 23:00:10 caleb Exp $
+
+# Format: <volume name>: <table>
+# Example: isw0: 0 312602976 striped 2 128 /dev/sda 0 /dev/sdb 0
+#
+# Alternatively you can create all your volumes the first time, and just run:
+#
+#   dmsetup table >> /etc/dmtab
+#
+# and verify that they are correct.
+

diff --git a/sys-fs/lvm2/files/lvm-monitoring.initd-2.02.105-r2 b/sys-fs/lvm2/files/lvm-monitoring.initd-2.02.105-r2
new file mode 100644
index 0000000..c53a604
--- /dev/null
+++ b/sys-fs/lvm2/files/lvm-monitoring.initd-2.02.105-r2
@@ -0,0 +1,39 @@
+#!/sbin/runscript
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-fs/lvm2/files/lvm-monitoring.initd-2.02.105-r2,v 1.1 2014/02/02 19:52:34 robbat2 Exp $
+
+# This script is based on upstream file
+# LVM2.2.02.67/scripts/lvm2_monitoring_init_red_hat.in
+
+depend() {
+	# As of .67-r1, we call ALL lvm start/stop scripts with --sysinit, that
+	# means dmeventd is NOT notified, as it cannot be safely running
+	need lvm dmeventd
+}
+
+VGCHANGE=/sbin/vgchange
+VGS=/sbin/vgs
+
+start() {
+	ret=0
+	# TODO do we want to separate out already active groups only?
+	VGSLIST=`$VGS --noheadings -o name --rows 2> /dev/null`
+	ebegin "Starting LVM monitoring for VGs ${VGSLIST}:"
+	$VGCHANGE --monitor y --poll y  ${VGSLIST}
+	ret=$?
+	eend $ret
+	return $ret
+
+}
+
+stop() {
+	ret=0
+	# TODO do we want to separate out already active groups only?
+	VGSLIST=`$VGS --noheadings -o name --rows 2> /dev/null`
+	ebegin "Stopping LVM monitoring for VGs ${VGSLIST}:"
+	$VGCHANGE --monitor n ${VGSLIST}
+	ret=$?
+	eend $ret
+	return $ret
+}

diff --git a/sys-fs/lvm2/files/lvm-monitoring.initd-2.02.67-r2 b/sys-fs/lvm2/files/lvm-monitoring.initd-2.02.67-r2
new file mode 100644
index 0000000..6a41bb6
--- /dev/null
+++ b/sys-fs/lvm2/files/lvm-monitoring.initd-2.02.67-r2
@@ -0,0 +1,46 @@
+#!/sbin/runscript
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-fs/lvm2/files/lvm-monitoring.initd-2.02.67-r2,v 1.4 2013/04/09 11:00:26 ssuominen Exp $
+
+# This script is based on upstream file
+# LVM2.2.02.67/scripts/lvm2_monitoring_init_red_hat.in
+
+depend() {
+	# As of .67-r1, we call ALL lvm start/stop scripts with --sysinit, that
+	# means dmeventd is NOT notified, as it cannot be safely running
+	need lvm dmeventd
+}
+
+VGCHANGE=/sbin/vgchange
+VGS=/sbin/vgs
+
+start() {
+	ret=0
+	# TODO do we want to separate out already active groups only?
+	VGSLIST=`$VGS --noheadings -o name 2> /dev/null`
+	for vg in $VGSLIST
+	do
+	    ebegin "Starting LVM monitoring for VG $vg:"
+		$VGCHANGE --monitor y --poll y $vg
+		ret2=$?
+		eend $ret2
+		[ $ret2 -ne 0 ] && ret=$ret2
+	done
+	return $ret
+}
+
+stop() {
+	ret=0
+	# TODO do we want to separate out already active groups only?
+	VGSLIST=`$VGS --noheadings -o name 2> /dev/null`
+	for vg in $VGSLIST
+	do
+	    ebegin "Stopping LVM monitoring for VG $vg:"
+		$VGCHANGE --monitor n $vg
+		ret2=$?
+		eend $ret2
+		[ $ret2 -ne 0 ] && ret=$ret2
+	done
+	return $ret
+}

diff --git a/sys-fs/lvm2/files/lvm.confd-2.02.28-r2 b/sys-fs/lvm2/files/lvm.confd-2.02.28-r2
new file mode 100644
index 0000000..2fbd866
--- /dev/null
+++ b/sys-fs/lvm2/files/lvm.confd-2.02.28-r2
@@ -0,0 +1,5 @@
+# LVM should normally only be started after mdraid is available
+# this is because LVM physical volumes are very often MD devices.
+RC_AFTER="mdraid"
+
+# vim: ft=gentoo-conf-d

diff --git a/sys-fs/lvm2/files/lvm.rc-2.02.105-r2 b/sys-fs/lvm2/files/lvm.rc-2.02.105-r2
new file mode 100644
index 0000000..7fdf50e
--- /dev/null
+++ b/sys-fs/lvm2/files/lvm.rc-2.02.105-r2
@@ -0,0 +1,97 @@
+#!/sbin/runscript
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-fs/lvm2/files/lvm.rc-2.02.105-r2,v 1.1 2014/02/02 19:52:34 robbat2 Exp $
+
+depend() {
+	before checkfs fsck
+	after modules device-mapper
+	need lvmetad sysfs
+}
+
+config='global { locking_dir = "/run/lock/lvm" }'
+
+dm_in_proc() {
+	local retval=0
+	for x in devices misc ; do
+		grep -qs 'device-mapper' /proc/${x}
+		retval=$((${retval} + $?))
+	done
+	return ${retval}
+}
+
+start() {
+	# LVM support for /usr, /home, /opt ....
+	# This should be done *before* checking local
+	# volumes, or they never get checked.
+	
+	# NOTE: Add needed modules for LVM or RAID, etc
+	#       to /etc/modules.autoload if needed
+	for lvm_path in /bin/lvm /sbin/lvm ; do
+		[ -x "$lvm_path" ] && break
+	done
+	if [ ! -x "$lvm_path" ]; then
+		eerror "Cannot find lvm binary in /sbin or /bin!"
+		return 1
+	fi
+	if [ -z "${CDBOOT}" ] ; then
+		if [ -e /proc/modules ] && ! dm_in_proc ; then
+			modprobe dm-mod 2>/dev/null
+		fi
+		if [ -d /proc/lvm ] || dm_in_proc ; then
+			ebegin "Setting up the Logical Volume Manager"
+			#still echo stderr for debugging
+			lvm_commands="#! ${lvm_path} --config '${config}'\n"
+			# Extra PV find pass because some devices might not have been available until very recently
+			lvm_commands="${lvm_commands}pvscan\n"
+			# Now make the nodes
+			lvm_commands="${lvm_commands}vgscan --mknodes\n"
+			# And turn them on!
+			lvm_commands="${lvm_commands}vgchange --sysinit -a ly\n"
+			# Order of this is important, have to work around dash and LVM readline
+			printf "%b\n" "${lvm_commands}" | $lvm_path /proc/self/fd/0 --config "${config}" >/dev/null
+			eend $? "Failed to setup the LVM"
+		fi
+	fi
+}
+
+stop() {
+	for lvm_path in /bin/lvm /sbin/lvm ; do
+		[ -x "$lvm_path" ] && break
+	done
+	if [ ! -x "$lvm_path" ]; then
+		eerror "Cannot find lvm binary in /sbin or /bin!"
+		return 1
+	fi
+# Stop LVM2
+if [ -x /sbin/vgs ] && \
+   [ -x /sbin/vgchange ] && \
+   [ -x /sbin/lvchange ] && \
+   [ -f /etc/lvmtab -o -d /etc/lvm ] && \
+   [ -d /proc/lvm  -o "`grep device-mapper /proc/misc 2>/dev/null`" ]
+then
+	einfo "Shutting down the Logical Volume Manager"
+	
+
+        VGS=$($lvm_path vgs --config "${config}" -o vg_name --noheadings --nosuffix --rows 2> /dev/null)
+
+        if [ "$VGS" ]
+        then
+            ebegin "  Shutting Down LVs & VGs"
+			#still echo stderr for debugging
+			lvm_commands="#! ${lvm_path} --config '${config}'\n"
+			# Extra PV find pass because some devices might not have been available until very recently
+			lvm_commands="${lvm_commands}lvchange --sysinit -a ln ${VGS}\n"
+			# Now make the nodes
+			lvm_commands="${lvm_commands}vgchange --sysinit -a ln ${VGS}\n"
+			# Order of this is important, have to work around dash and LVM readline
+			printf "%b\n" "${lvm_commands}" | $lvm_path /proc/self/fd/0 --config "${config}" >/dev/null
+			eend $? "Failed (possibly some LVs still needed for /usr or root)"
+        fi
+
+	einfo "Finished shutting down the Logical Volume Manager"
+	return 0
+fi
+}
+
+# vim:ts=4

diff --git a/sys-fs/lvm2/files/lvm.rc-2.02.95-r2 b/sys-fs/lvm2/files/lvm.rc-2.02.95-r2
new file mode 100644
index 0000000..76d90f3
--- /dev/null
+++ b/sys-fs/lvm2/files/lvm.rc-2.02.95-r2
@@ -0,0 +1,96 @@
+#!/sbin/runscript
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-fs/lvm2/files/lvm.rc-2.02.95-r2,v 1.2 2013/04/09 11:00:26 ssuominen Exp $
+
+depend() {
+	use dmeventd
+	before checkfs fsck
+	after dmeventd modules device-mapper
+}
+
+config='global { locking_dir = "/run/lock/lvm" }'
+
+dm_in_proc() {
+	local retval=0
+	for x in devices misc ; do
+		grep -qs 'device-mapper' /proc/${x}
+		retval=$((${retval} + $?))
+	done
+	return ${retval}
+}
+
+start() {
+	# LVM support for /usr, /home, /opt ....
+	# This should be done *before* checking local
+	# volumes, or they never get checked.
+	
+	# NOTE: Add needed modules for LVM or RAID, etc
+	#       to /etc/modules.autoload if needed
+	for lvm_path in /bin/lvm /sbin/lvm ; do
+		[ -x "$lvm_path" ] && break
+	done
+	if [ ! -x "$lvm_path" ]; then
+		eerror "Cannot find lvm binary in /sbin or /bin!"
+		return 1
+	fi
+	if [ -z "${CDBOOT}" ] ; then
+		if [ -e /proc/modules ] && ! dm_in_proc ; then
+			modprobe dm-mod 2>/dev/null
+		fi
+		if [ -d /proc/lvm ] || dm_in_proc ; then
+			ebegin "Setting up the Logical Volume Manager"
+			#still echo stderr for debugging
+			lvm_commands="#! ${lvm_path} --config '${config}'\n"
+			# Extra PV find pass because some devices might not have been available until very recently
+			lvm_commands="${lvm_commands}pvscan\n"
+			# Now make the nodes
+			lvm_commands="${lvm_commands}vgscan --mknodes\n"
+			# And turn them on!
+			lvm_commands="${lvm_commands}vgchange --sysinit -a ly\n"
+			# Order of this is important, have to work around dash and LVM readline
+			printf "%b\n" "${lvm_commands}" | $lvm_path /proc/self/fd/0 --config "${config}" >/dev/null
+			eend $? "Failed to setup the LVM"
+		fi
+	fi
+}
+
+stop() {
+	for lvm_path in /bin/lvm /sbin/lvm ; do
+		[ -x "$lvm_path" ] && break
+	done
+	if [ ! -x "$lvm_path" ]; then
+		eerror "Cannot find lvm binary in /sbin or /bin!"
+		return 1
+	fi
+# Stop LVM2
+if [ -x /sbin/vgs ] && \
+   [ -x /sbin/vgchange ] && \
+   [ -x /sbin/lvchange ] && \
+   [ -f /etc/lvmtab -o -d /etc/lvm ] && \
+   [ -d /proc/lvm  -o "`grep device-mapper /proc/misc 2>/dev/null`" ]
+then
+	einfo "Shutting down the Logical Volume Manager"
+	
+
+        VGS=$($lvm_path vgs --config "${config}" -o vg_name --noheadings --nosuffix 2> /dev/null)
+
+        if [ "$VGS" ]
+        then
+            ebegin "  Shutting Down LVs & VGs"
+			#still echo stderr for debugging
+			lvm_commands="#! ${lvm_path} --config '${config}'\n"
+			# Extra PV find pass because some devices might not have been available until very recently
+			lvm_commands="${lvm_commands}lvchange --sysinit -a ln ${VGS}\n"
+			# Now make the nodes
+			lvm_commands="${lvm_commands}vgchange --sysinit -a ln\n"
+			# Order of this is important, have to work around dash and LVM readline
+			printf "%b\n" "${lvm_commands}" | $lvm_path /proc/self/fd/0 --config "${config}" >/dev/null
+			eend $? "Failed"
+        fi
+
+	einfo "Finished Shutting down the Logical Volume Manager"
+fi
+}
+
+# vim:ts=4

diff --git a/sys-fs/lvm2/files/lvm2-2.02.100-selinux_and_udev_static.patch b/sys-fs/lvm2/files/lvm2-2.02.100-selinux_and_udev_static.patch
new file mode 100644
index 0000000..d6c8e5f
--- /dev/null
+++ b/sys-fs/lvm2/files/lvm2-2.02.100-selinux_and_udev_static.patch
@@ -0,0 +1,93 @@
+diff -ur LVM2.2.02.100.orig/configure.in LVM2.2.02.100/configure.in
+--- LVM2.2.02.100.orig/configure.in	2013-08-13 13:44:43.000000000 +0300
++++ LVM2.2.02.100/configure.in	2013-09-12 23:23:19.365329440 +0300
+@@ -954,6 +954,7 @@
+ 		pkg_config_init
+ 	fi
+ 	PKG_CHECK_MODULES(UDEV, libudev >= 143, [UDEV_PC="libudev"])
++	UDEV_STATIC_LIBS=`$PKG_CONFIG --static --libs libudev`
+ 	AC_DEFINE([UDEV_SYNC_SUPPORT], 1, [Define to 1 to enable synchronisation with udev processing.])
+ fi
+ 
+@@ -1199,19 +1200,32 @@
+ if test x$SELINUX = xyes; then
+ 	AC_CHECK_LIB([sepol], [sepol_check_context], [
+ 		AC_DEFINE([HAVE_SEPOL], 1, [Define to 1 if sepol_check_context is available.])
+-		SELINUX_LIBS="-lsepol"])
++		SEPOL_LIBS="-lsepol"])
+ 
+-	AC_CHECK_LIB([selinux], [is_selinux_enabled], [
+-		AC_CHECK_HEADERS([selinux/selinux.h],, hard_bailout)
+-		AC_CHECK_HEADERS([selinux/label.h])
+-		AC_DEFINE([HAVE_SELINUX], 1, [Define to 1 to include support for selinux.])
+-		SELINUX_LIBS="-lselinux $SELINUX_LIBS"
++	dnl -- init pkgconfig if required
++	if  test x$PKGCONFIG_INIT != x1; then
++		pkg_config_init
++	fi
++	PKG_CHECK_MODULES(SELINUX, libselinux, [
+ 		SELINUX_PC="libselinux"
+-		HAVE_SELINUX=yes ], [
+-		AC_MSG_WARN(Disabling selinux)
+-		SELINUX_LIBS=
+-		SELINUX_PC=
+-		HAVE_SELINUX=no ])
++		SELINUX_STATIC_LIBS=`$PKG_CONFIG --static --libs libselinux`
++		SELINUX_LIBS="$SELINUX_LIBS $SEPOL_LIBS"
++		AC_DEFINE([HAVE_SELINUX], 1, [Define to 1 to include support for selinux.])
++	],[
++		dnl -- old non-pkgconfig method, is buggy with static builds
++		AC_CHECK_LIB([selinux], [is_selinux_enabled], [
++			AC_CHECK_HEADERS([selinux/selinux.h],, hard_bailout)
++			AC_CHECK_HEADERS([selinux/label.h])
++			AC_DEFINE([HAVE_SELINUX], 1, [Define to 1 to include support for selinux.])
++			SELINUX_LIBS="-lselinux $SEPOL_LIBS"
++			SELINUX_STATIC_LIBS="$SELINUX_LIBS"
++			SELINUX_PC="libselinux"
++			HAVE_SELINUX=yes ], [
++			AC_MSG_WARN(Disabling selinux)
++			SELINUX_LIBS=
++			SELINUX_PC=
++			HAVE_SELINUX=no ])
++	])
+ fi
+ 
+ ################################################################################
+@@ -1615,6 +1629,7 @@
+ AC_SUBST(SALCK_CFLAGS)
+ AC_SUBST(SALCK_LIBS)
+ AC_SUBST(SELINUX_LIBS)
++AC_SUBST(SELINUX_STATIC_LIBS)
+ AC_SUBST(SELINUX_PC)
+ AC_SUBST(SNAPSHOTS)
+ AC_SUBST(STATICDIR)
+@@ -1625,6 +1640,7 @@
+ AC_SUBST(THIN_DUMP_CMD)
+ AC_SUBST(THIN_REPAIR_CMD)
+ AC_SUBST(UDEV_LIBS)
++AC_SUBST(UDEV_STATIC_LIBS)
+ AC_SUBST(UDEV_PC)
+ AC_SUBST(UDEV_RULES)
+ AC_SUBST(UDEV_SYNC)
+diff -ur LVM2.2.02.100.orig/make.tmpl.in LVM2.2.02.100/make.tmpl.in
+--- LVM2.2.02.100.orig/make.tmpl.in	2013-08-13 13:44:43.000000000 +0300
++++ LVM2.2.02.100/make.tmpl.in	2013-09-12 23:22:58.125328808 +0300
+@@ -32,7 +32,7 @@
+ 
+ LIBS = @LIBS@
+ # Extra libraries always linked with static binaries
+-STATIC_LIBS = $(SELINUX_LIBS) $(UDEV_LIBS)
++STATIC_LIBS = $(SELINUX_STATIC_LIBS) $(UDEV_STATIC_LIBS)
+ DEFS += @DEFS@
+ # FIXME set this only where it's needed, not globally?
+ CFLAGS += @CFLAGS@ @UDEV_CFLAGS@
+@@ -46,7 +46,9 @@
+ PTHREAD_LIBS = @PTHREAD_LIBS@
+ READLINE_LIBS = @READLINE_LIBS@
+ SELINUX_LIBS = @SELINUX_LIBS@
++SELINUX_STATIC_LIBS = @SELINUX_STATIC_LIBS@
+ UDEV_LIBS = @UDEV_LIBS@
++UDEV_STATIC_LIBS = @UDEV_STATIC_LIBS@
+ TESTING = @TESTING@
+ 
+ # Setup directory variables

diff --git a/sys-fs/lvm2/files/lvm2-2.02.106-pthread-pkgconfig.patch b/sys-fs/lvm2/files/lvm2-2.02.106-pthread-pkgconfig.patch
new file mode 100644
index 0000000..594d606
--- /dev/null
+++ b/sys-fs/lvm2/files/lvm2-2.02.106-pthread-pkgconfig.patch
@@ -0,0 +1,32 @@
+Make sure that libdm usage always brings in pthread libraries, both in
+pkgconfig and during manual build.
+
+--- tools/Makefile.in
++++ tools/Makefile.in
+@@ -87,6 +87,7 @@
+   INSTALL_LVM_TARGETS += install_tools_static
+   INSTALL_DMSETUP_TARGETS += install_dmsetup_static
+   INSTALL_CMDLIB_TARGETS += install_cmdlib_static
++  STATIC_LIBS += @PTHREAD_LIBS@
+ endif
+ 
+ LVMLIBS = $(LVMINTERNAL_LIBS)
+@@ -118,6 +119,10 @@
+ 
+ include $(top_builddir)/make.tmpl
+ 
++ifeq ("@STATIC_LINK@", "yes")
++  STATIC_LIBS += @PTHREAD_LIBS@
++endif
++
+ device-mapper: $(TARGETS_DM)
+ 
+ CFLAGS_dmsetup.o += $(UDEV_CFLAGS) $(EXTRA_EXEC_CFLAGS)
+--- libdm/libdevmapper.pc.in
++++ libdm/libdevmapper.pc.in
+@@ -8,4 +8,5 @@
+ Version: @DM_LIB_PATCHLEVEL@
+ Cflags: -I${includedir} 
+ Libs: -L${libdir} -ldevmapper
++Libs.private: -L${libdir} @PTHREAD_LIBS@
+ Requires.private: @SELINUX_PC@ @UDEV_PC@

diff --git a/sys-fs/lvm2/files/lvm2-2.02.107-static-pkgconfig-libs.patch b/sys-fs/lvm2/files/lvm2-2.02.107-static-pkgconfig-libs.patch
new file mode 100644
index 0000000..723cd0e
--- /dev/null
+++ b/sys-fs/lvm2/files/lvm2-2.02.107-static-pkgconfig-libs.patch
@@ -0,0 +1,104 @@
+diff -Nuar --exclude '*.orig' --exclude '*.rej' LVM2.2.02.107.orig/configure.in LVM2.2.02.107/configure.in
+--- LVM2.2.02.107.orig/configure.in	2014-07-15 12:57:55.867439868 -0700
++++ LVM2.2.02.107/configure.in	2014-07-15 17:24:02.662666091 -0700
+@@ -997,6 +997,7 @@
+ 			   fi])
+ 	if test "$BLKID_WIPING" = yes; then
+ 		BLKID_PC="blkid"
++		BLKID_STATIC_LIBS=`$PKG_CONFIG --static --libs $BLKID_PC`
+ 		AC_DEFINE([BLKID_WIPING_SUPPORT], 1, [Define to 1 to use libblkid detection of signatures when wiping.])
+ 	fi
+ fi
+@@ -1022,6 +1023,7 @@
+ if test "$UDEV_SYNC" = yes; then
+ 	pkg_config_init
+ 	PKG_CHECK_MODULES(UDEV, libudev >= 143, [UDEV_PC="libudev"])
++	UDEV_STATIC_LIBS=`$PKG_CONFIG --static --libs libudev`
+ 	AC_DEFINE([UDEV_SYNC_SUPPORT], 1, [Define to 1 to enable synchronisation with udev processing.])
+ fi
+ 
+@@ -1242,19 +1244,32 @@
+ if test "$SELINUX" = yes; then
+ 	AC_CHECK_LIB([sepol], [sepol_check_context], [
+ 		AC_DEFINE([HAVE_SEPOL], 1, [Define to 1 if sepol_check_context is available.])
+-		SELINUX_LIBS="-lsepol"])
++		SEPOL_LIBS="-lsepol"])
++
++	dnl -- init pkgconfig if required
++	if  test x$PKGCONFIG_INIT != x1; then
++		pkg_config_init
++	fi
++	PKG_CHECK_MODULES(SELINUX, libselinux, [
++		SELINUX_PC="libselinux"
++		SELINUX_STATIC_LIBS=`$PKG_CONFIG --static --libs libselinux`
++		SELINUX_LIBS="$SELINUX_LIBS $SEPOL_LIBS"
++		AC_DEFINE([HAVE_SELINUX], 1, [Define to 1 to include support for selinux.])
++	],[
++		dnl -- old non-pkgconfig method, is buggy with static builds
+ 
+ 	AC_CHECK_LIB([selinux], [is_selinux_enabled], [
+ 		AC_CHECK_HEADERS([selinux/selinux.h],, hard_bailout)
+ 		AC_CHECK_HEADERS([selinux/label.h])
+ 		AC_DEFINE([HAVE_SELINUX], 1, [Define to 1 to include support for selinux.])
+-		SELINUX_LIBS="-lselinux $SELINUX_LIBS"
++		SELINUX_LIBS="-lselinux $SEPOL_LIBS"
+ 		SELINUX_PC="libselinux"
+ 		HAVE_SELINUX=yes ], [
+ 		AC_MSG_WARN(Disabling selinux)
+ 		SELINUX_LIBS=
+ 		SELINUX_PC=
+ 		HAVE_SELINUX=no ])
++	])
+ fi
+ 
+ ################################################################################
+@@ -1556,6 +1571,7 @@
+ ################################################################################
+ AC_SUBST(APPLIB)
+ AC_SUBST(AWK)
++AC_SUBST(BLKID_STATIC_LIBS)
+ AC_SUBST(BLKID_PC)
+ AC_SUBST(BLKID_WIPING)
+ AC_SUBST(BUILD_CMIRRORD)
+@@ -1651,6 +1667,7 @@
+ AC_SUBST(SALCK_CFLAGS)
+ AC_SUBST(SALCK_LIBS)
+ AC_SUBST(SELINUX_LIBS)
++AC_SUBST(SELINUX_STATIC_LIBS)
+ AC_SUBST(SELINUX_PC)
+ AC_SUBST(SNAPSHOTS)
+ AC_SUBST(STATICDIR)
+@@ -1662,6 +1679,7 @@
+ AC_SUBST(THIN_DUMP_CMD)
+ AC_SUBST(THIN_REPAIR_CMD)
+ AC_SUBST(THIN_RESTORE_CMD)
++AC_SUBST(UDEV_STATIC_LIBS)
+ AC_SUBST(UDEV_PC)
+ AC_SUBST(UDEV_RULES)
+ AC_SUBST(UDEV_SYNC)
+diff -Nuar --exclude '*.orig' --exclude '*.rej' LVM2.2.02.107.orig/make.tmpl.in LVM2.2.02.107/make.tmpl.in
+--- LVM2.2.02.107.orig/make.tmpl.in	2014-07-15 12:57:55.868439884 -0700
++++ LVM2.2.02.107/make.tmpl.in	2014-07-15 17:23:24.060055838 -0700
+@@ -44,7 +44,7 @@
+ 
+ LIBS = @LIBS@
+ # Extra libraries always linked with static binaries
+-STATIC_LIBS = $(SELINUX_LIBS) $(UDEV_LIBS) $(BLKID_LIBS)
++STATIC_LIBS = $(SELINUX_STATIC_LIBS) $(UDEV_STATIC_LIBS) $(BLKID_STATIC_LIBS)
+ DEFS += @DEFS@
+ # FIXME set this only where it's needed, not globally?
+ CFLAGS += @CFLAGS@
+@@ -59,10 +59,13 @@
+ PTHREAD_LIBS = @PTHREAD_LIBS@
+ READLINE_LIBS = @READLINE_LIBS@
+ SELINUX_LIBS = @SELINUX_LIBS@
++SELINUX_STATIC_LIBS = @SELINUX_STATIC_LIBS@
+ UDEV_CFLAGS = @UDEV_CFLAGS@
+ UDEV_LIBS = @UDEV_LIBS@
++UDEV_STATIC_LIBS = @UDEV_STATIC_LIBS@
+ BLKID_CFLAGS = @BLKID_CFLAGS@
+ BLKID_LIBS = @BLKID_LIBS@
++BLKID_STATIC_LIBS = @BLKID_STATIC_LIBS@
+ TESTING = @TESTING@
+ 
+ # Setup directory variables

diff --git a/sys-fs/lvm2/files/lvm2-2.02.108-example.conf.in.patch b/sys-fs/lvm2/files/lvm2-2.02.108-example.conf.in.patch
new file mode 100644
index 0000000..af5a5af
--- /dev/null
+++ b/sys-fs/lvm2/files/lvm2-2.02.108-example.conf.in.patch
@@ -0,0 +1,50 @@
+Maintainer note: Forward ported without editing from lvm2-2.02.99-example.conf.in.patch to apply cleanly.
+
+--- conf/example.conf.in
++++ conf/example.conf.in
+@@ -105,6 +105,10 @@
+     # By default we accept every block device:
+     # filter = [ "a/.*/" ]
+ 
++    # Gentoo: we exclude /dev/nbd by default, because it makes a lot of kernel
++    # noise when you probed while not available.
++    filter = [ "r|/dev/nbd.*|", "a/.*/" ]
++
+     # Exclude the cdrom drive
+     # filter = [ "r|/dev/cdrom|" ]
+ 
+@@ -522,7 +526,8 @@
+     # e.g. vgscan.lvm1 and they will stop working after you start using
+     # the new lvm2 on-disk metadata format.
+     # The default value is set when the tools are built.
+-    # fallback_to_lvm1 = 0
++    # Gentoo: the LVM tools are a seperate package.
++    fallback_to_lvm1 = 0
+ 
+     # The default metadata format that commands should use - "lvm1" or "lvm2".
+     # The command line override is -M1 or -M2.
+@@ -1182,12 +1187,13 @@
+ 
+ # Metadata settings
+ #
+-# metadata {
++metadata {
+     # Default number of copies of metadata to hold on each PV.  0, 1 or 2.
+     # You might want to override it from the command line with 0 
+     # when running pvcreate on new PVs which are to be added to large VGs.
+ 
+-    # pvmetadatacopies = 1
++    # Gentoo: enable for data safety, but PV resize is then disabled.
++    # pvmetadatacopies = 2
+ 
+     # Default number of copies of metadata to maintain for each VG.
+     # If set to a non-zero value, LVM automatically chooses which of
+@@ -1222,7 +1228,7 @@
+     # the supplied toolset to make changes (e.g. vgcfgrestore).
+ 
+     # dirs = [ "/etc/lvm/metadata", "/mnt/disk2/lvm/metadata2" ]
+-#}
++}
+ 
+ # Event daemon
+ #

diff --git a/sys-fs/lvm2/files/lvm2-2.02.108-static-pkgconfig-libs.patch b/sys-fs/lvm2/files/lvm2-2.02.108-static-pkgconfig-libs.patch
new file mode 100644
index 0000000..3ab6998
--- /dev/null
+++ b/sys-fs/lvm2/files/lvm2-2.02.108-static-pkgconfig-libs.patch
@@ -0,0 +1,104 @@
+Maintainer note: Forward ported without editing from lvm2-2.02.107-static-pkgconfig-libs.patch to apply cleanly.
+
+--- configure.in
++++ configure.in
+@@ -1067,6 +1067,7 @@
+ 			   fi])
+ 	if test "$BLKID_WIPING" = yes; then
+ 		BLKID_PC="blkid"
++		BLKID_STATIC_LIBS=`$PKG_CONFIG --static --libs $BLKID_PC`
+ 		AC_DEFINE([BLKID_WIPING_SUPPORT], 1, [Define to 1 to use libblkid detection of signatures when wiping.])
+ 	fi
+ fi
+@@ -1092,6 +1093,7 @@
+ if test "$UDEV_SYNC" = yes; then
+ 	pkg_config_init
+ 	PKG_CHECK_MODULES(UDEV, libudev >= 143, [UDEV_PC="libudev"])
++	UDEV_STATIC_LIBS=`$PKG_CONFIG --static --libs libudev`
+ 	AC_DEFINE([UDEV_SYNC_SUPPORT], 1, [Define to 1 to enable synchronisation with udev processing.])
+ fi
+ 
+@@ -1312,19 +1314,32 @@
+ if test "$SELINUX" = yes; then
+ 	AC_CHECK_LIB([sepol], [sepol_check_context], [
+ 		AC_DEFINE([HAVE_SEPOL], 1, [Define to 1 if sepol_check_context is available.])
+-		SELINUX_LIBS="-lsepol"])
++		SEPOL_LIBS="-lsepol"])
++
++	dnl -- init pkgconfig if required
++	if  test x$PKGCONFIG_INIT != x1; then
++		pkg_config_init
++	fi
++	PKG_CHECK_MODULES(SELINUX, libselinux, [
++		SELINUX_PC="libselinux"
++		SELINUX_STATIC_LIBS=`$PKG_CONFIG --static --libs libselinux`
++		SELINUX_LIBS="$SELINUX_LIBS $SEPOL_LIBS"
++		AC_DEFINE([HAVE_SELINUX], 1, [Define to 1 to include support for selinux.])
++	],[
++		dnl -- old non-pkgconfig method, is buggy with static builds
+ 
+ 	AC_CHECK_LIB([selinux], [is_selinux_enabled], [
+ 		AC_CHECK_HEADERS([selinux/selinux.h],, hard_bailout)
+ 		AC_CHECK_HEADERS([selinux/label.h])
+ 		AC_DEFINE([HAVE_SELINUX], 1, [Define to 1 to include support for selinux.])
+-		SELINUX_LIBS="-lselinux $SELINUX_LIBS"
++		SELINUX_LIBS="-lselinux $SEPOL_LIBS"
+ 		SELINUX_PC="libselinux"
+ 		HAVE_SELINUX=yes ], [
+ 		AC_MSG_WARN(Disabling selinux)
+ 		SELINUX_LIBS=
+ 		SELINUX_PC=
+ 		HAVE_SELINUX=no ])
++	])
+ fi
+ 
+ ################################################################################
+@@ -1626,6 +1641,7 @@
+ ################################################################################
+ AC_SUBST(APPLIB)
+ AC_SUBST(AWK)
++AC_SUBST(BLKID_STATIC_LIBS)
+ AC_SUBST(BLKID_PC)
+ AC_SUBST(BLKID_WIPING)
+ AC_SUBST(BUILD_CMIRRORD)
+@@ -1721,6 +1737,7 @@
+ AC_SUBST(SALCK_CFLAGS)
+ AC_SUBST(SALCK_LIBS)
+ AC_SUBST(SELINUX_LIBS)
++AC_SUBST(SELINUX_STATIC_LIBS)
+ AC_SUBST(SELINUX_PC)
+ AC_SUBST(SNAPSHOTS)
+ AC_SUBST(STATICDIR)
+@@ -1735,6 +1752,7 @@
+ AC_SUBST(CACHE_DUMP_CMD)
+ AC_SUBST(CACHE_REPAIR_CMD)
+ AC_SUBST(CACHE_RESTORE_CMD)
++AC_SUBST(UDEV_STATIC_LIBS)
+ AC_SUBST(UDEV_PC)
+ AC_SUBST(UDEV_RULES)
+ AC_SUBST(UDEV_SYNC)
+--- make.tmpl.in
++++ make.tmpl.in
+@@ -43,7 +43,7 @@
+ 
+ LIBS = @LIBS@
+ # Extra libraries always linked with static binaries
+-STATIC_LIBS = $(SELINUX_LIBS) $(UDEV_LIBS) $(BLKID_LIBS)
++STATIC_LIBS = $(SELINUX_STATIC_LIBS) $(UDEV_STATIC_LIBS) $(BLKID_STATIC_LIBS)
+ DEFS += @DEFS@
+ # FIXME set this only where it's needed, not globally?
+ CFLAGS += @CFLAGS@
+@@ -57,10 +57,13 @@
+ PTHREAD_LIBS = @PTHREAD_LIBS@
+ READLINE_LIBS = @READLINE_LIBS@
+ SELINUX_LIBS = @SELINUX_LIBS@
++SELINUX_STATIC_LIBS = @SELINUX_STATIC_LIBS@
+ UDEV_CFLAGS = @UDEV_CFLAGS@
+ UDEV_LIBS = @UDEV_LIBS@
++UDEV_STATIC_LIBS = @UDEV_STATIC_LIBS@
+ BLKID_CFLAGS = @BLKID_CFLAGS@
+ BLKID_LIBS = @BLKID_LIBS@
++BLKID_STATIC_LIBS = @BLKID_STATIC_LIBS@
+ TESTING = @TESTING@
+ 
+ # Setup directory variables

diff --git a/sys-fs/lvm2/files/lvm2-2.02.56-lvm2create_initrd.patch b/sys-fs/lvm2/files/lvm2-2.02.56-lvm2create_initrd.patch
new file mode 100644
index 0000000..59aaa9b
--- /dev/null
+++ b/sys-fs/lvm2/files/lvm2-2.02.56-lvm2create_initrd.patch
@@ -0,0 +1,72 @@
+--- LVM2.2.02.56/scripts/lvm2create_initrd/lvm2create_initrd.orig	2006-11-21 22:41:56.000000000 +0000
++++ LVM2.2.02.56/scripts/lvm2create_initrd/lvm2create_initrd	2009-12-26 01:47:08.025224602 +0000
+@@ -54,7 +54,9 @@
+ DEVRAM=/tmp/initrd.$$
+ 
+ # set defaults
+-BINFILES=${BINFILES:-"`which lvm` `which bash` `which busybox` `which pivot_root`"}
++LVM=`which lvm.static`
++LVM=${LVM:-"`which lvm`"}
++BINFILES=${BINFILES:-"${LVM} `which bash` `which busybox` `which pivot_root`"}
+ BASICDEVICES=${BASICDEVICES:-"std consoleonly fd"}
+ BLOCKDEVICES=${BLOCKDEVICES:-"md hda hdb hdc hdd sda sdb sdc sdd"}
+ MAKEDEV=${MAKEDEV:-"debian"}
+@@ -119,6 +121,10 @@
+ echo "$PRE Mounting /proc"
+ mount -t proc none /proc
+ 
++# We need /sys for lvm
++echo "$PRE Mounting /sys"
++mount -t sysfs sysfs /sys
++
+ # plug in modules listed in /etc/modules
+ if [ -f /etc/modules ]; then
+     echo -n "$PRE plugging in kernel modules:"
+@@ -179,26 +185,29 @@
+ # run a shell if we're passed lvm2rescue on commandline
+ grep lvm2rescue /proc/cmdline 1>/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+-    lvm vgchange --ignorelockingfailure -P -a y
++    $LVM vgchange --ignorelockingfailure -P -a y
+     do_shell
+ else
+-    lvm vgchange --ignorelockingfailure -a y
++    $LVM vgchange --ignorelockingfailure -a y
+ fi
+ 
+ echo "$PRE Mounting root filesystem $rootvol ro"
+ mkdir /rootvol
+ if ! mount -t auto -o ro $rootvol /rootvol; then
+-	echo "\t*FAILED*";
++	echo "\t*FAILED TRYING TO MOUNT ROOTVOL*";
+ 	do_shell
+ fi
+ 
+ echo "$PRE Umounting /proc"
+ umount /proc
+ 
++echo "$PRE Umounting /sys"
++umount /sys
++
+ echo "$PRE Changing roots"
+ cd /rootvol
+ if ! pivot_root . initrd ; then
+-	echo "\t*FAILED*"
++	echo "\t*FAILED PIVOT TO NEW ROOT*"
+ 	do_shell
+ fi
+ 
+@@ -356,7 +365,7 @@
+ fi
+ 
+ verbose "creating basic set of directories in $TMPMNT"
+-(cd $TMPMNT; mkdir bin dev etc lib proc sbin var)
++(cd $TMPMNT; mkdir bin dev etc lib proc sbin sys var)
+ if [ $? -ne 0 ]; then
+    echo "$cmd -- ERROR creating directories in $TMPMNT"
+    cleanup 1
+@@ -499,4 +508,3 @@
+ FINALTXT
+ 
+ cleanup 0
+-

diff --git a/sys-fs/lvm2/files/lvm2-2.02.63-always-make-static-libdm.patch b/sys-fs/lvm2/files/lvm2-2.02.63-always-make-static-libdm.patch
new file mode 100644
index 0000000..5ddcb4e
--- /dev/null
+++ b/sys-fs/lvm2/files/lvm2-2.02.63-always-make-static-libdm.patch
@@ -0,0 +1,42 @@
+diff -Nuar --exclude '*~' LVM2.2.02.63.orig/daemons/dmeventd/Makefile.in LVM2.2.02.63/daemons/dmeventd/Makefile.in
+--- LVM2.2.02.63.orig/daemons/dmeventd/Makefile.in	2010-04-09 14:42:48.000000000 -0700
++++ LVM2.2.02.63/daemons/dmeventd/Makefile.in	2010-04-19 11:53:27.000000000 -0700
+@@ -28,11 +28,12 @@
+ INSTALL_LIB_TARGETS = install_lib_dynamic
+ 
+ LIB_NAME = libdevmapper-event
++LIB_STATIC = $(LIB_NAME).a
++INSTALL_LIB_TARGETS += install_lib_static
++TARGETS += $(LIB_STATIC)
+ ifeq ("@STATIC_LINK@", "yes")
+-  LIB_STATIC = $(LIB_NAME).a
+-  TARGETS += $(LIB_STATIC) dmeventd.static
++  TARGETS += dmeventd.static
+   INSTALL_DMEVENTD_TARGETS += install_dmeventd_static
+-  INSTALL_LIB_TARGETS += install_lib_static
+ endif
+ 
+ LIB_VERSION = $(LIB_VERSION_DM)
+diff -Nuar --exclude '*~' LVM2.2.02.63.orig/libdm/Makefile.in LVM2.2.02.63/libdm/Makefile.in
+--- LVM2.2.02.63.orig/libdm/Makefile.in	2010-04-09 14:42:51.000000000 -0700
++++ LVM2.2.02.63/libdm/Makefile.in	2010-04-19 11:52:20.000000000 -0700
+@@ -34,8 +34,8 @@
+ 
+ INCLUDES = -I$(srcdir)/$(interface) -I$(srcdir)
+ 
+-ifeq ("@STATIC_LINK@", "yes")
+ LIB_STATIC = $(interface)/libdevmapper.a
++ifeq ("@STATIC_LINK@", "yes")
+ endif
+ 
+ LIB_SHARED = $(interface)/libdevmapper.$(LIB_SUFFIX)
+@@ -63,8 +63,8 @@
+ 
+ INSTALL_TYPE = install_dynamic
+ 
+-ifeq ("@STATIC_LINK@", "yes")
+   INSTALL_TYPE += install_static
++ifeq ("@STATIC_LINK@", "yes")
+ endif
+ 
+ ifeq ("@PKGCONFIG@", "yes")

diff --git a/sys-fs/lvm2/files/lvm2-2.02.67-createinitrd.patch b/sys-fs/lvm2/files/lvm2-2.02.67-createinitrd.patch
new file mode 100644
index 0000000..7f0bfb8
--- /dev/null
+++ b/sys-fs/lvm2/files/lvm2-2.02.67-createinitrd.patch
@@ -0,0 +1,18 @@
+X-Gentoo-Bug-URL: http://bugs.gentoo.org/show_bug.cgi?id=301331
+X-Gentoo-Bug: 301331
+
+diff -Nuar LVM2.2.02.67.orig/scripts/lvm2create_initrd/lvm2create_initrd LVM2.2.02.67/scripts/lvm2create_initrd/lvm2create_initrd
+--- LVM2.2.02.67.orig/scripts/lvm2create_initrd/lvm2create_initrd	2010-06-07 18:44:34.182980475 +0000
++++ LVM2.2.02.67/scripts/lvm2create_initrd/lvm2create_initrd	2010-06-07 18:51:27.636312899 +0000
+@@ -469,9 +469,9 @@
+ rmdir $TMPMNT/lost+found
+ 
+ echo "$cmd -- ummounting ram disk"
+-umount $DEVRAM
++umount $TMPMNT
+ if [ $? -ne 0 ]; then
+-   echo "$cmd -- ERROR umounting $DEVRAM"
++   echo "$cmd -- ERROR umounting $TMPMNT"
+    cleanup 1
+ fi
+ 

diff --git a/sys-fs/lvm2/files/lvm2-2.02.70-asneeded.patch b/sys-fs/lvm2/files/lvm2-2.02.70-asneeded.patch
new file mode 100644
index 0000000..7576e19
--- /dev/null
+++ b/sys-fs/lvm2/files/lvm2-2.02.70-asneeded.patch
@@ -0,0 +1,15 @@
+http://bugs.gentoo.org/330255
+
+liblvm2app.so: undefined reference to `floor'
+
+--- liblvm/Makefile.in
++++ liblvm/Makefile.in
+@@ -39,7 +39,7 @@
+ 
+ include $(top_builddir)/make.tmpl
+ 
+-LIBS += $(LVMINTERNAL_LIBS) -ldevmapper
++LIBS += $(LVMINTERNAL_LIBS) -ldevmapper -lm
+ 
+ ifeq ("@DMEVENTD@", "yes")
+   LIBS += -ldevmapper-event

diff --git a/sys-fs/lvm2/files/lvm2-2.02.92-dynamic-static-ldflags.patch b/sys-fs/lvm2/files/lvm2-2.02.92-dynamic-static-ldflags.patch
new file mode 100644
index 0000000..de2b294
--- /dev/null
+++ b/sys-fs/lvm2/files/lvm2-2.02.92-dynamic-static-ldflags.patch
@@ -0,0 +1,63 @@
+diff -Nuar --exclude '*.rej' --exclude '*.orig' LVM2.2.02.92.orig/configure.in LVM2.2.02.92/configure.in
+--- LVM2.2.02.92.orig/configure.in	2012-02-20 11:36:27.000000000 -0800
++++ LVM2.2.02.92/configure.in	2012-02-20 15:53:40.700124222 -0800
+@@ -32,6 +32,7 @@
+ 		COPTIMISE_FLAG="-O2"
+ 		CLDFLAGS="$CLDFLAGS -Wl,--version-script,.export.sym"
+ 		ELDFLAGS="-Wl,--export-dynamic"
++		STATIC_LDFLAGS="-Wl,--no-export-dynamic"
+ 		# FIXME Generate list and use --dynamic-list=.dlopen.sym
+ 		CLDWHOLEARCHIVE="-Wl,-whole-archive"
+ 		CLDNOWHOLEARCHIVE="-Wl,-no-whole-archive"
+@@ -1458,6 +1459,7 @@
+ AC_SUBST(SELINUX_PC)
+ AC_SUBST(SNAPSHOTS)
+ AC_SUBST(STATICDIR)
++AC_SUBST(STATIC_LDFLAGS)
+ AC_SUBST(STATIC_LINK)
+ AC_SUBST(TESTING)
+ AC_SUBST(THIN)
+diff -Nuar --exclude '*.rej' --exclude '*.orig' LVM2.2.02.92.orig/daemons/dmeventd/Makefile.in LVM2.2.02.92/daemons/dmeventd/Makefile.in
+--- LVM2.2.02.92.orig/daemons/dmeventd/Makefile.in	2012-02-20 15:48:04.861683196 -0800
++++ LVM2.2.02.92/daemons/dmeventd/Makefile.in	2012-02-20 15:52:50.732314588 -0800
+@@ -65,7 +65,7 @@
+ 	$(DL_LIBS) $(LVMLIBS) $(LIBS) -rdynamic
+ 
+ dmeventd.static: $(LIB_STATIC) dmeventd.o $(interfacebuilddir)/libdevmapper.a
+-	$(CC) $(CFLAGS) $(LDFLAGS) $(ELDFLAGS) -static -L. -L$(interfacebuilddir) -o $@ \
++	$(CC) $(CFLAGS) $(LDFLAGS) $(ELDFLAGS) $(STATIC_LDFLAGS) -static -L. -L$(interfacebuilddir) -o $@ \
+ 	dmeventd.o $(DL_LIBS) $(LVMLIBS) $(LIBS) $(STATIC_LIBS)
+ 
+ ifeq ("@PKGCONFIG@", "yes")
+diff -Nuar --exclude '*.rej' --exclude '*.orig' LVM2.2.02.92.orig/make.tmpl.in LVM2.2.02.92/make.tmpl.in
+--- LVM2.2.02.92.orig/make.tmpl.in	2012-02-20 15:48:05.034685963 -0800
++++ LVM2.2.02.92/make.tmpl.in	2012-02-20 15:48:58.622550855 -0800
+@@ -38,6 +38,7 @@
+ ELDFLAGS += @ELDFLAGS@
+ LDDEPS += @LDDEPS@
+ LDFLAGS += @LDFLAGS@
++STATIC_LDFLAGS += @STATIC_LDFLAGS@
+ LIB_SUFFIX = @LIB_SUFFIX@
+ LVMINTERNAL_LIBS = -llvm-internal $(UDEV_LIBS) $(DL_LIBS)
+ DL_LIBS = @DL_LIBS@
+diff -Nuar --exclude '*.rej' --exclude '*.orig' LVM2.2.02.92.orig/tools/Makefile.in LVM2.2.02.92/tools/Makefile.in
+--- LVM2.2.02.92.orig/tools/Makefile.in	2011-11-14 13:30:36.000000000 -0800
++++ LVM2.2.02.92/tools/Makefile.in	2012-02-20 15:52:25.242901501 -0800
+@@ -126,7 +126,7 @@
+ 	      -o $@ dmsetup.o -ldevmapper $(LIBS)
+ 
+ dmsetup.static: dmsetup.o $(interfacebuilddir)/libdevmapper.a
+-	$(CC) $(CFLAGS) $(LDFLAGS) -static -L$(interfacebuilddir) \
++	$(CC) $(CFLAGS) $(LDFLAGS) $(STATIC_LDFLAGS) -static -L$(interfacebuilddir) \
+ 	      -o $@ dmsetup.o -ldevmapper $(STATIC_LIBS) $(LIBS)
+ 
+ all: device-mapper
+@@ -136,7 +136,7 @@
+ 		$(LVMLIBS) $(READLINE_LIBS) $(LIBS) -rdynamic
+ 
+ lvm.static: $(OBJECTS) lvm-static.o $(top_builddir)/lib/liblvm-internal.a  $(interfacebuilddir)/libdevmapper.a
+-	$(CC) $(CFLAGS) $(LDFLAGS) -static -L$(interfacebuilddir) -o $@ \
++	$(CC) $(CFLAGS) $(LDFLAGS) $(STATIC_LDFLAGS) -static -L$(interfacebuilddir) -o $@ \
+ 	      $(OBJECTS) lvm-static.o $(LVMLIBS) $(STATIC_LIBS) $(LIBS)
+ 
+ liblvm2cmd.a: $(top_builddir)/lib/liblvm-internal.a $(OBJECTS) lvmcmdlib.o lvm2cmd.o

diff --git a/sys-fs/lvm2/files/lvm2-2.02.99-example.conf.in.patch b/sys-fs/lvm2/files/lvm2-2.02.99-example.conf.in.patch
new file mode 100644
index 0000000..38be5df
--- /dev/null
+++ b/sys-fs/lvm2/files/lvm2-2.02.99-example.conf.in.patch
@@ -0,0 +1,47 @@
+--- conf/example.conf.in
++++ conf/example.conf.in
+@@ -50,7 +50,9 @@
+ 
+ 
+     # By default we accept every block device:
+-    filter = [ "a/.*/" ]
++    # Gentoo: we exclude /dev/nbd by default, because it makes a lot of kernel
++    # noise when you probed while not available.
++    filter = [ "r|/dev/nbd.*|", "a/.*/" ]
+ 
+     # Exclude the cdrom drive
+     # filter = [ "r|/dev/cdrom|" ]
+@@ -259,6 +261,8 @@
+     # the new lvm2 on-disk metadata format.
+     # The default value is set when the tools are built.
+     # fallback_to_lvm1 = 0
++    # Gentoo: the LVM tools are a seperate package.
++    fallback_to_lvm1 = 0
+ 
+     # The default metadata format that commands should use - "lvm1" or "lvm2".
+     # The command line override is -M1 or -M2.
+@@ -449,12 +453,12 @@
+ 
+ # Metadata settings
+ #
+-# metadata {
++metadata {
+     # Default number of copies of metadata to hold on each PV.  0, 1 or 2.
+     # You might want to override it from the command line with 0 
+     # when running pvcreate on new PVs which are to be added to large VGs.
+-
+-    # pvmetadatacopies = 1
++    # Gentoo: enable for data safety, but PV resize is then disabled.
++    #pvmetadatacopies = 2
+ 
+     # Approximate default size of on-disk metadata areas in sectors.
+     # You should increase this if you have large volume groups or
+@@ -476,7 +480,7 @@
+     # the supplied toolset to make changes (e.g. vgcfgrestore).
+ 
+     # dirs = [ "/etc/lvm/metadata", "/mnt/disk2/lvm/metadata2" ]
+-#}
++}
+ 
+ # Event daemon
+ #

diff --git a/sys-fs/lvm2/files/lvm2-2.02.99-locale-muck.patch b/sys-fs/lvm2/files/lvm2-2.02.99-locale-muck.patch
new file mode 100644
index 0000000..364fbd4
--- /dev/null
+++ b/sys-fs/lvm2/files/lvm2-2.02.99-locale-muck.patch
@@ -0,0 +1,11 @@
+--- make.tmpl.in
++++ make.tmpl.in
+@@ -395,7 +395,7 @@
+ 	( cat $(srcdir)/.exported_symbols; \
+ 	  if test x$(EXPORTED_HEADER) != x; then \
+ 		$(CC) -E -P $(INCLUDES) $(DEFS) $(EXPORTED_HEADER) | \
+-		$(SED) -ne "/^typedef|}/!s/.*[ *]\($(EXPORTED_FN_PREFIX)_[a-z0-9_]*\)(.*/\1/p"; \
++		LC_ALL=C $(SED) -ne "/^typedef|}/!s/.*[ *]\($(EXPORTED_FN_PREFIX)_[a-z0-9_]*\)(.*/\1/p"; \
+ 	  fi \
+ 	) > $@
+ 

diff --git a/sys-fs/lvm2/files/lvm2-fix-stdio-usage.patch b/sys-fs/lvm2/files/lvm2-fix-stdio-usage.patch
new file mode 100644
index 0000000..71fa5bf
--- /dev/null
+++ b/sys-fs/lvm2/files/lvm2-fix-stdio-usage.patch
@@ -0,0 +1,111 @@
+--- LVM2.2.02.103.orig/lib/commands/toolcontext.c
++++ LVM2.2.02.103/lib/commands/toolcontext.c
+@@ -1336,7 +1336,10 @@
+ /*
+  * Close and reopen stream on file descriptor fd.
+  */
+-static int _reopen_stream(FILE *stream, int fd, const char *mode, const char *name, FILE **new_stream)
++#ifdef __GLIBC__
++#define _reopen_stream(stream, fd, mode, name) __reopen_stream(stream, fd, mode, name, &stream)
++
++static int __reopen_stream(FILE *stream, int fd, const char *mode, const char *name, FILE **new_stream)
+ {
+ 	int fd_copy, new_fd;
+ 
+@@ -1363,6 +1366,9 @@
+ 
+ 	return 1;
+ }
++#else
++#define _reopen_stream(stream, fd, mode, name) (freopen(NULL, mode, stream) != NULL)
++#endif
+ 
+ /* Entry point */
+ struct cmd_context *create_toolcontext(unsigned is_long_lived,
+@@ -1371,7 +1377,6 @@
+ 				       unsigned threaded)
+ {
+ 	struct cmd_context *cmd;
+-	FILE *new_stream;
+ 	int flags;
+ 
+ #ifdef M_MMAP_MAX
+@@ -1421,9 +1426,8 @@
+ 		if (is_valid_fd(STDIN_FILENO) &&
+ 		    ((flags = fcntl(STDIN_FILENO, F_GETFL)) > 0) &&
+ 		    (flags & O_ACCMODE) != O_WRONLY) {
+-			if (!_reopen_stream(stdin, STDIN_FILENO, "r", "stdin", &new_stream))
++			if (!_reopen_stream(stdin, STDIN_FILENO, "r", "stdin"))
+ 				goto_out;
+-			stdin = new_stream;
+ 			if (setvbuf(stdin, cmd->linebuffer, _IOLBF, linebuffer_size)) {
+ 				log_sys_error("setvbuf", "");
+ 				goto out;
+@@ -1433,9 +1437,8 @@
+ 		if (is_valid_fd(STDOUT_FILENO) &&
+ 		    ((flags = fcntl(STDOUT_FILENO, F_GETFL)) > 0) &&
+ 		    (flags & O_ACCMODE) != O_RDONLY) {
+-			if (!_reopen_stream(stdout, STDOUT_FILENO, "w", "stdout", &new_stream))
++			if (!_reopen_stream(stdout, STDOUT_FILENO, "w", "stdout"))
+ 				goto_out;
+-			stdout = new_stream;
+ 			if (setvbuf(stdout, cmd->linebuffer + linebuffer_size,
+ 				     _IOLBF, linebuffer_size)) {
+ 				log_sys_error("setvbuf", "");
+@@ -1715,7 +1718,6 @@
+ void destroy_toolcontext(struct cmd_context *cmd)
+ {
+ 	struct dm_config_tree *cft_cmdline;
+-	FILE *new_stream;
+ 	int flags;
+ 
+ 	if (cmd->dump_filter && cmd->filter && cmd->filter->dump &&
+@@ -1752,8 +1754,7 @@
+ 		if (is_valid_fd(STDIN_FILENO) &&
+ 		    ((flags = fcntl(STDIN_FILENO, F_GETFL)) > 0) &&
+ 		    (flags & O_ACCMODE) != O_WRONLY) {
+-			if (_reopen_stream(stdin, STDIN_FILENO, "r", "stdin", &new_stream)) {
+-				stdin = new_stream;
++			if (_reopen_stream(stdin, STDIN_FILENO, "r", "stdin")) {
+ 				setlinebuf(stdin);
+ 			} else
+ 				cmd->linebuffer = NULL;	/* Leave buffer in place (deliberate leak) */
+@@ -1762,8 +1763,7 @@
+ 		if (is_valid_fd(STDOUT_FILENO) &&
+ 		    ((flags = fcntl(STDOUT_FILENO, F_GETFL)) > 0) &&
+ 		    (flags & O_ACCMODE) != O_RDONLY) {
+-			if (_reopen_stream(stdout, STDOUT_FILENO, "w", "stdout", &new_stream)) {
+-				stdout = new_stream;
++			if (_reopen_stream(stdout, STDOUT_FILENO, "w", "stdout")) {
+ 				setlinebuf(stdout);
+ 			} else
+ 				cmd->linebuffer = NULL;	/* Leave buffer in place (deliberate leak) */
+--- LVM2.2.02.103.orig/tools/lvmcmdline.c
++++ LVM2.2.02.103/tools/lvmcmdline.c
+@@ -1252,7 +1252,7 @@
+ 	int err = is_valid_fd(STDERR_FILENO);
+ 
+ 	if (!is_valid_fd(STDIN_FILENO) &&
+-	    !(stdin = fopen(_PATH_DEVNULL, "r"))) {
++	    !freopen(_PATH_DEVNULL, "r", stdin)) {
+ 		if (err)
+ 			perror("stdin stream open");
+ 		else
+@@ -1262,7 +1262,7 @@
+ 	}
+ 
+ 	if (!is_valid_fd(STDOUT_FILENO) &&
+-	    !(stdout = fopen(_PATH_DEVNULL, "w"))) {
++	    !freopen(_PATH_DEVNULL, "w", stdout)) {
+ 		if (err)
+ 			perror("stdout stream open");
+ 		/* else no stdout */
+@@ -1270,7 +1270,7 @@
+ 	}
+ 
+ 	if (!is_valid_fd(STDERR_FILENO) &&
+-	    !(stderr = fopen(_PATH_DEVNULL, "w"))) {
++	    !freopen(_PATH_DEVNULL, "w", stderr)) {
+ 		printf("stderr stream open: %s\n",
+ 		       strerror(errno));
+ 		return 0;

diff --git a/sys-fs/lvm2/files/lvm2-musl-fixes.patch b/sys-fs/lvm2/files/lvm2-musl-fixes.patch
new file mode 100644
index 0000000..b62e80a
--- /dev/null
+++ b/sys-fs/lvm2/files/lvm2-musl-fixes.patch
@@ -0,0 +1,33 @@
+diff -uar LVM2.2.02.110-old/daemons/lvmetad/lvmetad-core.c LVM2.2.02.110/daemons/lvmetad/lvmetad-core.c
+--- LVM2.2.02.110-old/daemons/lvmetad/lvmetad-core.c	2015-05-14 21:37:01.226755157 +0000
++++ LVM2.2.02.110/daemons/lvmetad/lvmetad-core.c	2015-05-14 21:44:08.098585801 +0000
+@@ -124,7 +124,7 @@
+ 	if (!(vg = dm_hash_lookup(s->lock.vg, id))) {
+ 		if (!(vg = malloc(sizeof(pthread_mutex_t))) ||
+ 		    pthread_mutexattr_init(&rec) ||
+-		    pthread_mutexattr_settype(&rec, PTHREAD_MUTEX_RECURSIVE_NP) ||
++		    pthread_mutexattr_settype(&rec, PTHREAD_MUTEX_RECURSIVE) ||
+ 		    pthread_mutex_init(vg, &rec))
+ 			goto bad;
+ 		if (!dm_hash_insert(s->lock.vg, id, vg)) {
+@@ -1152,7 +1152,7 @@
+ 	ls->log = s->log;
+ 
+ 	pthread_mutexattr_init(&rec);
+-	pthread_mutexattr_settype(&rec, PTHREAD_MUTEX_RECURSIVE_NP);
++	pthread_mutexattr_settype(&rec, PTHREAD_MUTEX_RECURSIVE);
+ 	pthread_mutex_init(&ls->lock.pvid_to_pvmeta, &rec);
+ 	pthread_mutex_init(&ls->lock.vgid_to_metadata, &rec);
+ 	pthread_mutex_init(&ls->lock.pvid_to_vgid, NULL);
+Only in LVM2.2.02.110/lib/commands: toolcontext.c.orig
+diff -uar LVM2.2.02.110-old/libdaemon/server/daemon-server.c LVM2.2.02.110/libdaemon/server/daemon-server.c
+--- LVM2.2.02.110-old/libdaemon/server/daemon-server.c	2015-05-14 21:37:01.256755555 +0000
++++ LVM2.2.02.110/libdaemon/server/daemon-server.c	2015-05-14 21:37:51.108437752 +0000
+@@ -26,6 +26,7 @@
+ #include <sys/un.h>
+ #include <unistd.h>
+ #include <signal.h>
++#include <fcntl.h>
+ 
+ #include <syslog.h> /* FIXME. For the global closelog(). */
+ 

diff --git a/sys-fs/lvm2/files/lvmetad.initd-2.02.105-r2 b/sys-fs/lvm2/files/lvmetad.initd-2.02.105-r2
new file mode 100755
index 0000000..e16d55c
--- /dev/null
+++ b/sys-fs/lvm2/files/lvmetad.initd-2.02.105-r2
@@ -0,0 +1,13 @@
+#!/sbin/runscript
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-fs/lvm2/files/lvmetad.initd-2.02.105-r2,v 1.2 2014/02/08 21:17:46 robbat2 Exp $
+
+pidfile="/run/lvmetad.pid"
+command="/sbin/lvmetad"
+command_args="${LVMETAD_OPTS:=-p ${pidfile}}"
+start_stop_daemon_args="--pidfile ${pidfile}"
+
+depend() {
+	:
+}

diff --git a/sys-fs/lvm2/lvm2-2.02.110-r99.ebuild b/sys-fs/lvm2/lvm2-2.02.110-r99.ebuild
new file mode 100644
index 0000000..4cffcec
--- /dev/null
+++ b/sys-fs/lvm2/lvm2-2.02.110-r99.ebuild
@@ -0,0 +1,275 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-fs/lvm2/lvm2-2.02.110.ebuild,v 1.3 2014/08/29 07:15:02 ssuominen Exp $
+
+EAPI=5
+inherit autotools eutils linux-info multilib systemd toolchain-funcs udev flag-o-matic
+
+DESCRIPTION="User-land utilities for LVM2 (device-mapper) software"
+HOMEPAGE="http://sources.redhat.com/lvm2/"
+SRC_URI="ftp://sources.redhat.com/pub/lvm2/${PN/lvm/LVM}.${PV}.tgz
+	ftp://sources.redhat.com/pub/lvm2/old/${PN/lvm/LVM}.${PV}.tgz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-linux ~x86-linux"
+IUSE="readline static static-libs systemd clvm cman lvm1 lvm2create_initrd selinux +udev +thin device-mapper-only"
+REQUIRED_USE="device-mapper-only? ( !clvm !cman !lvm1 !lvm2create_initrd !thin )
+	systemd? ( udev )
+	static? ( !udev )" #520450
+
+DEPEND_COMMON="clvm? ( cman? ( =sys-cluster/cman-3* ) =sys-cluster/libdlm-3* )
+	readline? ( sys-libs/readline )
+	udev? ( >=virtual/libudev-208:=[static-libs?] )"
+# /run is now required for locking during early boot. /var cannot be assumed to
+# be available -- thus, pull in recent enough baselayout for /run.
+# This version of LVM is incompatible with cryptsetup <1.1.2.
+RDEPEND="${DEPEND_COMMON}
+	>=sys-apps/baselayout-2.2
+	!<sys-apps/openrc-0.11
+	!<sys-fs/cryptsetup-1.1.2
+	!!sys-fs/clvm
+	!!sys-fs/lvm-user
+	>=sys-apps/util-linux-2.16
+	lvm2create_initrd? ( sys-apps/makedev )
+	thin? ( >=sys-block/thin-provisioning-tools-0.3.0 )"
+# note: thin- 0.3.0 is required to avoid --disable-thin_check_needs_check
+DEPEND="${DEPEND_COMMON}
+	virtual/pkgconfig
+	>=sys-devel/binutils-2.20.1-r1
+	static? (
+		selinux? ( sys-libs/libselinux[static-libs] )
+		udev? ( >=virtual/libudev-208:=[static-libs] )
+		>=sys-apps/util-linux-2.16[static-libs]
+	)"
+
+S=${WORKDIR}/${PN/lvm/LVM}.${PV}
+
+pkg_setup() {
+	local CONFIG_CHECK="~SYSVIPC"
+
+	if use udev; then
+		local WARNING_SYSVIPC="CONFIG_SYSVIPC:\tis not set (required for udev sync)\n"
+		if linux_config_exists; then
+			local uevent_helper_path=$(linux_chkconfig_string UEVENT_HELPER_PATH)
+			if [ -n "${uevent_helper_path}" ] && [ "${uevent_helper_path}" != '""' ]; then
+				ewarn "It's recommended to set an empty value to the following kernel config option:"
+				ewarn "CONFIG_UEVENT_HELPER_PATH=${uevent_helper_path}"
+			fi
+		fi
+	fi
+
+	check_extra_config
+
+	# 1. Genkernel no longer copies /sbin/lvm blindly.
+	if use static; then
+		elog "Warning, we no longer overwrite /sbin/lvm and /sbin/dmsetup with"
+		elog "their static versions. If you need the static binaries,"
+		elog "you must append .static to the filename!"
+	fi
+}
+
+src_prepare() {
+	# Gentoo specific modification(s):
+	epatch "${FILESDIR}"/${PN}-2.02.108-example.conf.in.patch
+
+	sed -i \
+		-e "1iAR = $(tc-getAR)" \
+		-e "s:CC ?= @CC@:CC = $(tc-getCC):" \
+		make.tmpl.in || die #444082
+
+	sed -i -e '/FLAG/s:-O2::' configure{.in,} || die #480212
+
+	if use udev && ! use device-mapper-only; then
+		sed -i -e '/use_lvmetad =/s:0:1:' conf/example.conf.in || die #514196
+		elog "Notice that \"use_lvmetad\" setting is enabled with USE=\"udev\" in"
+		elog "/etc/lvm/lvm.conf, which will require restart of udev, lvm, and lvmetad"
+		elog "if it was previously disabled."
+	fi
+
+	sed -i -e "s:/usr/bin/true:$(type -P true):" scripts/blk_availability_systemd_red_hat.service.in || die #517514
+
+	# For upstream -- review and forward:
+	epatch "${FILESDIR}"/${PN}-2.02.63-always-make-static-libdm.patch
+	epatch "${FILESDIR}"/${PN}-2.02.56-lvm2create_initrd.patch
+	epatch "${FILESDIR}"/${PN}-2.02.67-createinitrd.patch #301331
+	epatch "${FILESDIR}"/${PN}-2.02.99-locale-muck.patch #330373
+	epatch "${FILESDIR}"/${PN}-2.02.70-asneeded.patch # -Wl,--as-needed
+	epatch "${FILESDIR}"/${PN}-2.02.92-dynamic-static-ldflags.patch #332905
+	epatch "${FILESDIR}"/${PN}-2.02.108-static-pkgconfig-libs.patch #370217, #439414 + blkid
+	epatch "${FILESDIR}"/${PN}-2.02.106-pthread-pkgconfig.patch #492450
+	# Patches for musl
+	epatch "${FILESDIR}"/${PN}-fix-stdio-usage.patch # Patch from alpine linux
+	epatch "${FILESDIR}"/${PN}-musl-fixes.patch
+
+	# Without thin-privision-tools, there is nothing to install for target install_man7:
+	use thin || { sed -i -e '/^install_lvm2/s:install_man7::' man/Makefile.in || die; }
+
+	eautoreconf
+}
+
+src_configure() {
+	filter-flags -flto
+	local myconf
+	local buildmode
+
+	myconf="${myconf} $(use_enable !device-mapper-only dmeventd)"
+	myconf="${myconf} $(use_enable !device-mapper-only cmdlib)"
+	myconf="${myconf} $(use_enable !device-mapper-only applib)"
+	myconf="${myconf} $(use_enable !device-mapper-only fsadm)"
+	myconf="${myconf} $(use_enable !device-mapper-only lvmetad)"
+	use device-mapper-only && myconf="${myconf} --disable-udev-systemd-background-jobs"
+
+	# Most of this package does weird stuff.
+	# The build options are tristate, and --without is NOT supported
+	# options: 'none', 'internal', 'shared'
+	if use static; then
+		buildmode="internal"
+		# This only causes the .static versions to become available
+		myconf="${myconf} --enable-static_link"
+	else
+		buildmode="shared"
+	fi
+	dmbuildmode=$(use !device-mapper-only && echo internal || echo none)
+
+	# dmeventd requires mirrors to be internal, and snapshot available
+	# so we cannot disable them
+	myconf="${myconf} --with-mirrors=${dmbuildmode}"
+	myconf="${myconf} --with-snapshots=${dmbuildmode}"
+	if use thin; then
+		myconf="${myconf} --with-thin=internal --with-cache=internal"
+		local texec
+		for texec in check dump repair restore; do
+			myconf="${myconf} --with-thin-${texec}=${EPREFIX}/sbin/thin_${texec}"
+			myconf="${myconf} --with-cache-${texec}=${EPREFIX}/sbin/cache_${texec}"
+		done
+	else
+		myconf="${myconf} --with-thin=none --with-cache=none"
+	fi
+
+	if use lvm1; then
+		myconf="${myconf} --with-lvm1=${buildmode}"
+	else
+		myconf="${myconf} --with-lvm1=none"
+	fi
+
+	# disable O_DIRECT support on hppa, breaks pv detection (#99532)
+	use hppa && myconf="${myconf} --disable-o_direct"
+
+	if use clvm; then
+		myconf="${myconf} --with-cluster=${buildmode}"
+		# 4-state! Make sure we get it right, per bug 210879
+		# Valid options are: none, cman, gulm, all
+		#
+		# 2009/02:
+		# gulm is removed now, now dual-state:
+		# cman, none
+		# all still exists, but is not needed
+		#
+		# 2009/07:
+		# TODO: add corosync and re-enable ALL
+		local clvmd=""
+		use cman && clvmd="cman"
+		#clvmd="${clvmd/cmangulm/all}"
+		[ -z "${clvmd}" ] && clvmd="none"
+		myconf="${myconf} --with-clvmd=${clvmd}"
+		myconf="${myconf} --with-pool=${buildmode}"
+	else
+		myconf="${myconf} --with-clvmd=none --with-cluster=none"
+	fi
+
+	econf \
+		$(use_enable readline) \
+		$(use_enable selinux) \
+		--enable-pkgconfig \
+		--with-confdir="${EPREFIX}"/etc \
+		--exec-prefix="${EPREFIX}" \
+		--sbindir="${EPREFIX}/sbin" \
+		--with-staticdir="${EPREFIX}"/sbin \
+		--libdir="${EPREFIX}/$(get_libdir)" \
+		--with-usrlibdir="${EPREFIX}/usr/$(get_libdir)" \
+		--with-default-dm-run-dir=/run \
+		--with-default-run-dir=/run/lvm \
+		--with-default-locking-dir=/run/lock/lvm \
+		--with-default-pid-dir=/run \
+		$(use_enable udev udev_rules) \
+		$(use_enable udev udev_sync) \
+		$(use_with udev udevdir "$(get_udevdir)"/rules.d) \
+		$(use_enable systemd udev-systemd-background-jobs) \
+		"$(systemd_with_unitdir)" \
+		${myconf} \
+		CLDFLAGS="${LDFLAGS}"
+}
+
+src_compile() {
+	pushd include >/dev/null
+	emake
+	popd >/dev/null
+
+	if use device-mapper-only ; then
+		emake device-mapper
+	else
+		emake
+		emake CC="$(tc-getCC)" -C scripts lvm2_activation_generator_systemd_red_hat
+	fi
+}
+
+src_install() {
+	local inst
+	INSTALL_TARGETS="install install_systemd_units install_systemd_generators install_tmpfiles_configuration"
+	use device-mapper-only && INSTALL_TARGETS="install_device-mapper"
+	for inst in ${INSTALL_TARGETS}; do
+		emake DESTDIR="${D}" ${inst}
+	done
+
+	newinitd "${FILESDIR}"/device-mapper.rc-2.02.105-r2 device-mapper
+	newconfd "${FILESDIR}"/device-mapper.conf-1.02.22-r3 device-mapper
+
+	if use !device-mapper-only ; then
+		newinitd "${FILESDIR}"/dmeventd.initd-2.02.67-r1 dmeventd
+		newinitd "${FILESDIR}"/lvm.rc-2.02.105-r2 lvm
+		newconfd "${FILESDIR}"/lvm.confd-2.02.28-r2 lvm
+
+		newinitd "${FILESDIR}"/lvm-monitoring.initd-2.02.105-r2 lvm-monitoring
+		newinitd "${FILESDIR}"/lvmetad.initd-2.02.105-r2 lvmetad
+	fi
+
+	if use clvm; then
+		newinitd "${FILESDIR}"/clvmd.rc-2.02.39 clvmd
+		newconfd "${FILESDIR}"/clvmd.confd-2.02.39 clvmd
+	fi
+
+	if use static-libs; then
+		dolib.a libdm/ioctl/libdevmapper.a
+		dolib.a libdaemon/client/libdaemonclient.a #462908
+		#gen_usr_ldscript libdevmapper.so
+		dolib.a daemons/dmeventd/libdevmapper-event.a
+		#gen_usr_ldscript libdevmapper-event.so
+	else
+		rm -f "${ED}"usr/$(get_libdir)/{libdevmapper-event,liblvm2cmd,liblvm2app,libdevmapper}.a
+	fi
+
+	if use lvm2create_initrd; then
+		dosbin scripts/lvm2create_initrd/lvm2create_initrd
+		doman scripts/lvm2create_initrd/lvm2create_initrd.8
+		newdoc scripts/lvm2create_initrd/README README.lvm2create_initrd
+	fi
+
+	insinto /etc
+	doins "${FILESDIR}"/dmtab
+
+	dodoc README VERSION* WHATS_NEW WHATS_NEW_DM doc/*.{c,txt} conf/*.conf
+}
+
+pkg_postinst() {
+	ewarn "Make sure the \"lvm\" init script is in the runlevels:"
+	ewarn "# rc-update add lvm boot"
+	ewarn
+	ewarn "Make sure to enable lvmetad in /etc/lvm/lvm.conf if you want"
+	ewarn "to enable lvm autoactivation and metadata caching."
+}
+
+src_test() {
+	einfo "Tests are disabled because of device-node mucking, if you want to"
+	einfo "run tests, compile the package and see ${S}/tests"
+}

diff --git a/sys-fs/lvm2/metadata.xml b/sys-fs/lvm2/metadata.xml
new file mode 100644
index 0000000..74f768f
--- /dev/null
+++ b/sys-fs/lvm2/metadata.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+	<maintainer>
+		<email>robbat2@gentoo.org</email>
+		<name>Robin H. Johnson</name>
+	</maintainer>
+	<maintainer>
+		<email>agk@redhat.com</email>
+		<name>Alasdair Kergon</name>
+		<description>Upstream Maintainer (please CC on bugs)</description>
+	</maintainer>
+	<use>
+		<flag name='clvm'>Allow users to build clustered lvm2</flag>
+		<flag name='cman'>Cman support for clustered lvm</flag>
+		<flag name='lvm1'>Allow users to build lvm2 with lvm1 support</flag>
+		<flag name='lvm2create_initrd'>Install lvm2create_initrd script and pull in <pkg>sys-apps/makedev</pkg> for the /sbin/MAKEDEV command</flag>
+		<flag name='thin'>Support for thin volumes</flag>
+		<flag name='device-mapper-only'>Build only device-mapper and not the rest of LVM2 (UNSUPPORTED)</flag>
+	</use>
+	<upstream>
+		<remote-id type="cpe">cpe:/a:heinz_mauelshagen:lvm2</remote-id>
+	</upstream>
+</pkgmetadata>


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2015-05-15 22:42 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-15 22:42 [gentoo-commits] proj/hardened-dev:musl commit in: sys-fs/lvm2/, sys-fs/lvm2/files/ Anthony G. Basile

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox