Package: devmapper Version: 2:1.02.20-2 Severity: wishlist Tags: patch Please consider applying our attached patch that enables udev to know about the devicemapper device nodes, create /dev/disk symlinks to them and populate vol_id information so that filesystems on the devices can be used.
This patch depends on the dmsetup "export" option filed as Debian #434241 and the atomic device creation patch filed as Debian #455745. -- System Information: Debian Release: lenny/sid APT prefers gutsy-updates APT policy: (500, 'gutsy-updates'), (500, 'gutsy-security'), (500, 'gutsy') Architecture: amd64 (x86_64) Kernel: Linux 2.6.22-14-generic (SMP w/2 CPU cores) Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash
--- devmapper-1.02.20.orig/debian/dmsetup.udev +++ devmapper-1.02.20/debian/dmsetup.udev @@ -0,0 +1,31 @@ +# This file causes devicemapper devices to be assigned names by udev +# based on the name given to dmsetup. +# See udev(8) for syntax. + +SUBSYSTEM!="block", GOTO="dmsetup_end" +KERNEL!="dm-*", GOTO="dmsetup_end" +ACTION!="add|change", GOTO="dmsetup_end" + +# Obtain device status +IMPORT{program}="/sbin/dmsetup export -j%M -m%m" +ENV{DM_NAME}!="?*", GOTO="dmsetup_end" + +# Make the device take the /dev/mapper name +OPTIONS+="string_escape=none", NAME="mapper/$env{DM_NAME}" +SYMLINK+="disk/by-id/dm-name-$env{DM_NAME}" +ENV{DM_UUID}=="?*", SYMLINK+="disk/by-id/dm-uuid-$env{DM_UUID}" + +# Skip vol_id for suspended devices and those with empty or error tables +ENV{DM_STATE}=="SUSPENDED", GOTO="dmsetup_end" +ENV{DM_TARGET_TYPES}=="|*error*", GOTO="dmsetup_end" + +# by-uuid and by-label symlinks +IMPORT{program}="vol_id --export $tempnode" +OPTIONS="link_priority=-100" +ENV{DM_TARGET_TYPES}=="*snapshot-origin*", OPTIONS="link_priority=-90" +ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", \ + SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}" +ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", \ + SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}" + +LABEL="dmsetup_end" --- devmapper-1.02.20/debian/control +++ devmapper-1.02.20/debian/control @@ -26,6 +27,7 @@ Priority: required Architecture: any Depends: ${shlibs:Depends} +Recommends: dmsetup (>= 2:1.02.08-1ubuntu2) Provides: libdevmapper Description: The Linux Kernel Device Mapper userspace library The Linux Kernel Device Mapper is the LVM (Linux Logical Volume Management) @@ -44,6 +46,7 @@ Architecture: any Depends: ${shlibs:Depends} Provides: libdevmapper1.02.1 +Recommends: dmsetup-udeb Description: The Linux Kernel Device Mapper userspace library This is a udeb, or a microdeb, for the debian-installer. . --- devmapper-1.02.20/debian/rules +++ devmapper-1.02.20/debian/rules @@ -78,6 +80,7 @@ clean: dh_testdir rm -rf $(BUILD_DIR) + rm -f debian/dmsetup-udeb.udev dh_clean @@ -94,6 +98,10 @@ rm -rf $(INSTALL_DIR) $(MAKE) -C $(DIR) install DESTDIR=$(CURDIR)/$(INSTALL_DIR) LIB_VERSION=$(LIBDEVMAPPER_ABINAME) + install -d $(INSTALL_DIR)/usr/share/initramfs-tools/hooks + install -m 0755 debian/dmsetup.initramfs \ + $(INSTALL_DIR)/usr/share/initramfs-tools/hooks/dmsetup + dh_install --sourcedir=$(INSTALL_DIR) install-udeb: export DH_OPTIONS = $(addprefix -p,$(PACKAGES_UDEB)) @@ -108,6 +116,8 @@ rm -rf $(INSTALL_DIR) $(MAKE) -C $(DIR) install DESTDIR=$(CURDIR)/$(INSTALL_DIR) LIB_VERSION=$(LIBDEVMAPPER_ABINAME) + cp -a debian/dmsetup.udev debian/dmsetup-udeb.udev + dh_install --sourcedir=$(INSTALL_DIR) # Build architecture-independent files here. @@ -119,7 +129,7 @@ dh_testroot -a dh_installchangelogs WHATS_NEW -a dh_installdocs -a - dh_installinit -a -- start 25 S . + dh_installudev -a --priority=65 dh_strip -a dh_link -p libdevmapper-dev lib/libdevmapper.so.$(LIBDEVMAPPER_ABINAME) usr/lib/libdevmapper.so dh_compress -a --- devmapper-1.02.20.orig/debian/dmsetup.initramfs +++ devmapper-1.02.20/debian/dmsetup.initramfs @@ -0,0 +1,24 @@ +#!/bin/sh -e +# initramfs hook for dmsetup + +PREREQ="udev" + +# Output pre-requisites +prereqs() +{ + echo "$PREREQ" +} + +case "$1" in + prereqs) + prereqs + exit 0 + ;; +esac + + +. /usr/share/initramfs-tools/hook-functions + +copy_exec /sbin/dmsetup /sbin + +cp -p /etc/udev/rules.d/65-dmsetup.rules ${DESTDIR}/etc/udev/rules.d --- devmapper-1.02.20/debian/dmsetup.install +++ devmapper-1.02.20/debian/dmsetup.install @@ -2,0 +3 @@ +usr/share/initramfs-tools/hooks/dmsetup --- devmapper-1.02.20.orig/debian/dmsetup.postinst +++ devmapper-1.02.20/debian/dmsetup.postinst @@ -0,0 +1,9 @@ +#!/bin/sh + +if [ "$1" = "configure" ]; then + if type update-initramfs >/dev/null 2>&1; then + update-initramfs -u + fi +fi + +#DEBHELPER#