This commit is contained in:
parent
9a4aa4389f
commit
50b66891a4
@ -1,56 +1,138 @@
|
||||
tree 9a91aba3efd7bd5d7cda9856b64aafb67ebed4d4
|
||||
parent 3cba05dca8ad0b09db7b738f7c3151047baccbc1
|
||||
author Hannes Reinecke <hare@suse.de> 1186757218 +0200
|
||||
committer Hannes Reinecke <hare@suse.de> 1186757218 +0200
|
||||
|
||||
Implement dm_linear
|
||||
|
||||
dm_linear can be used to activate kpartx-generated partitions
|
||||
instead of the 'normal' block-based partitions.
|
||||
|
||||
Signed-off-by: Hannes Reinecke <hare@suse.de>
|
||||
c595834d093c7d2f5a5c93d976ea18b8c271b490
|
||||
kpartx/Makefile | 2 ++
|
||||
kpartx/dm_linear | 6 ++++++
|
||||
kpartx/dm_linear.rules | 1 +
|
||||
kpartx/kpartx.rules | 6 ++++++
|
||||
kpartx/kpartx_id | 13 ++++++++++---
|
||||
5 files changed, 25 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/kpartx/Makefile b/kpartx/Makefile
|
||||
index d970d29..c2b9c50 100644
|
||||
index d970d29..e6a7296 100644
|
||||
--- a/kpartx/Makefile
|
||||
+++ b/kpartx/Makefile
|
||||
@@ -39,8 +39,10 @@ install: $(EXEC) kpartx_id $(EXEC).8
|
||||
@@ -37,8 +37,10 @@ $(MULTIPATHLIB)-$(BUILD).a:
|
||||
install: $(EXEC) kpartx_id $(EXEC).8
|
||||
install -d $(DESTDIR)$(bindir)
|
||||
$(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir)
|
||||
+ install -m 755 activate_dm_linear $(DESTDIR)$(bindir)
|
||||
install -d $(DESTDIR)$(libudevdir)
|
||||
install -m 755 kpartx_id $(DESTDIR)$(libudevdir)
|
||||
+ install -m 755 dm_linear $(DESTDIR)$(libudevdir)
|
||||
install -d $(DESTDIR)/etc/udev/rules.d
|
||||
install -m 644 kpartx.rules $(DESTDIR)/etc/udev/rules.d/70-kpartx.rules
|
||||
+ install -m 644 dm_linear.rules $(DESTDIR)/etc/udev/rules.d/62-dm_linear.rules
|
||||
install -d $(DESTDIR)$(mandir)
|
||||
install -m 644 $(EXEC).8 $(DESTDIR)$(mandir)
|
||||
@@ -46,6 +48,11 @@ install: $(EXEC) kpartx_id $(EXEC).8
|
||||
|
||||
uninstall:
|
||||
rm -f $(DESTDIR)$(bindir)/$(EXEC)
|
||||
+ rm -f $(DESTDIR)$(bindir)/activate_dm_linear
|
||||
+ rm -f $(DESTDIR)$(libudevdir)/kpartx_id
|
||||
+ rm -f $(DESTDIR)$(libudevdir)/dm_linear
|
||||
+ rm -f $(DESTDIR)/etc/udev/rules.d/70-kpartx.rules
|
||||
+ rm -f $(DESTDIR)$(mandir)/$(EXEC).8
|
||||
|
||||
clean:
|
||||
rm -f core *.o $(EXEC)
|
||||
diff --git a/kpartx/activate_dm_linear b/kpartx/activate_dm_linear
|
||||
new file mode 100644
|
||||
index 0000000..ee5c9ed
|
||||
--- /dev/null
|
||||
+++ b/kpartx/activate_dm_linear
|
||||
@@ -0,0 +1,69 @@
|
||||
+#!/bin/sh
|
||||
+#
|
||||
+# activate_dm_linear
|
||||
+#
|
||||
+# Activate a linear mapping on top of an existing block device.
|
||||
+# This allows for partitions to be mapped via kpartx, so all
|
||||
+# partitions on a device can be accessed.
|
||||
+#
|
||||
+
|
||||
+RULE=/etc/udev/rules.d/62-dm_linear.rules
|
||||
+
|
||||
+if [ -z "$1" ] ; then
|
||||
+ echo "Usage: $0 [-d] devname"
|
||||
+ exit 1
|
||||
+fi
|
||||
+
|
||||
+if [ "$1" == "-d" ] ; then
|
||||
+ remove_only=1
|
||||
+ shift
|
||||
+fi
|
||||
+
|
||||
+if [ ! -b "$1" ] ; then
|
||||
+ echo "$1 is not a block device"
|
||||
+ exit 1
|
||||
+fi
|
||||
+
|
||||
+dev=${1#/dev/}
|
||||
+
|
||||
+if [ ! -d /sys/block/$dev ] ; then
|
||||
+ echo "$1 is not a disk device"
|
||||
+ exit 1
|
||||
+fi
|
||||
+
|
||||
+blksize=$(/sbin/blockdev --getsize $1)
|
||||
+if [ $? -ne 0 ] ; then
|
||||
+ echo "blockdev --getsize $1 failed: $?"
|
||||
+ exit 1
|
||||
+fi
|
||||
+
|
||||
+for link in $(udevinfo -q symlink -p /block/$dev) ; do
|
||||
+ case "$link" in
|
||||
+ */by-id/ata*)
|
||||
+ atalink=${link#*/by-id/ata-}
|
||||
+ ;;
|
||||
+ */by-id/scsi*)
|
||||
+ scsilink=${link#*/by-id/scsi-}
|
||||
+ ;;
|
||||
+ esac
|
||||
+done
|
||||
+if [ "$scsilink" ] ; then
|
||||
+ serial="$scsilink"
|
||||
+ bus="scsi"
|
||||
+fi
|
||||
+if [ "$atalink" ] ; then
|
||||
+ serial="$atalink"
|
||||
+ bus="ata"
|
||||
+fi
|
||||
+if [ "$serial" ]; then
|
||||
+ # Remove existing rules
|
||||
+ echo "/$serial/d
|
||||
+w
|
||||
+q
|
||||
+" | ed $RULE > /dev/null 2>&1
|
||||
+ [ "$remove_only" = 1 ] && exit 0
|
||||
+ # And create a new one
|
||||
+ cat >> $RULE <<EOF
|
||||
+ACTION=="add", KERNEL=="sd*[!0-9]", ID_BUS=="$bus", ID_SERIAL=="$serial", RUN+="/lib/udev/dm_linear \$kernel $blksize $bus-$serial"
|
||||
+EOF
|
||||
+fi
|
||||
diff --git a/kpartx/dm_linear b/kpartx/dm_linear
|
||||
new file mode 100755
|
||||
index 0000000..1584019
|
||||
index 0000000..162cb60
|
||||
--- /dev/null
|
||||
+++ b/kpartx/dm_linear
|
||||
@@ -0,0 +1,6 @@
|
||||
@@ -0,0 +1,27 @@
|
||||
+#!/bin/sh
|
||||
+#
|
||||
+# Create a linear table on top of a given device
|
||||
+# usage:
|
||||
+# dm_linear <dev> <size> <name>
|
||||
+#
|
||||
+
|
||||
+. /etc/sysconfig/kernel
|
||||
+if [ "DM_BLOCK" ]; then
|
||||
+ echo 0 $(/sbin/blockdev --getsize /dev/$1) linear /dev/$1 0 | /sbin/dmsetup create "linear-$ID_BUS-$ID_SERIAL" -u "linear-$ID_BUS-$ID_SERIAL"
|
||||
+if [ -z "$1" ] ; then
|
||||
+ exit 1
|
||||
+fi
|
||||
diff --git a/kpartx/dm_linear.rules b/kpartx/dm_linear.rules
|
||||
new file mode 100644
|
||||
index 0000000..7bfcc50
|
||||
--- /dev/null
|
||||
+++ b/kpartx/dm_linear.rules
|
||||
@@ -0,0 +1 @@
|
||||
+ACTION=="add", KERNEL=="sd*[!0-9]", RUN+="/lib/udev/dm_linear $kernel"
|
||||
+
|
||||
+if [ ! -b "$1" ] ; then
|
||||
+ exit 2
|
||||
+fi
|
||||
+
|
||||
+if [ -z "$2" ] ; then
|
||||
+ exit 3
|
||||
+fi
|
||||
+
|
||||
+if [ -z "$3" ] ; then
|
||||
+ exit 4
|
||||
+fi
|
||||
+
|
||||
+echo 0 $2 linear $1 0 | /sbin/dmsetup create "linear-$3" -u "linear-$3"
|
||||
+
|
||||
+exit $?
|
||||
+
|
||||
diff --git a/kpartx/kpartx.rules b/kpartx/kpartx.rules
|
||||
index 9ab9a49..2746eff 100644
|
||||
--- a/kpartx/kpartx.rules
|
||||
@ -66,7 +148,7 @@ index 9ab9a49..2746eff 100644
|
||||
# Create persistent links for partitions
|
||||
ENV{DM_PART}=="?*", \
|
||||
SYMLINK+="disk/by-id/$env{DM_TYPE}-$env{DM_NAME}-part$env{DM_PART}"
|
||||
@@ -30,6 +34,8 @@ ENV{DM_STATE}=="ACTIVE", ENV{DM_UUID}=="mpath-*", \
|
||||
@@ -30,6 +34,8 @@ ENV{DM_STATE}=="ACTIVE", ENV{DM_UUID}=="
|
||||
RUN+="/sbin/kpartx -a -p _part /dev/$kernel"
|
||||
ENV{DM_STATE}=="ACTIVE", ENV{DM_UUID}=="dmraid-*", \
|
||||
RUN+="/sbin/kpartx -a -p _part /dev/$kernel"
|
||||
|
@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Aug 30 09:24:27 CEST 2007 - hare@suse.de
|
||||
|
||||
- Rework dm_linear; udev rules should only be
|
||||
created if the feature was activated (#302422)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Aug 10 16:48:31 CEST 2007 - hare@suse.de
|
||||
|
||||
|
@ -19,7 +19,7 @@ Requires: device-mapper kpartx
|
||||
PreReq: %insserv_prereq
|
||||
Autoreqprov: on
|
||||
Version: 0.4.7
|
||||
Release: 67
|
||||
Release: 74
|
||||
Summary: Tools to Manage Multipathed Devices with the device-mapper
|
||||
Source: multipath-tools-%{version}.tar.bz2
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
@ -126,14 +126,17 @@ mkdir -p $RPM_BUILD_ROOT/var/cache/multipath/
|
||||
%dir /etc/udev
|
||||
%dir /etc/udev/rules.d
|
||||
%dir /lib/udev
|
||||
%config /etc/udev/rules.d/62-dm_linear.rules
|
||||
%config /etc/udev/rules.d/70-kpartx.rules
|
||||
/sbin/kpartx
|
||||
/sbin/activate_dm_linear
|
||||
/lib/udev/kpartx_id
|
||||
/lib/udev/dm_linear
|
||||
%{_mandir}/man8/kpartx.8*
|
||||
|
||||
%changelog
|
||||
* Thu Aug 30 2007 - hare@suse.de
|
||||
- Rework dm_linear; udev rules should only be
|
||||
created if the feature was activated (#302422)
|
||||
* Fri Aug 10 2007 - hare@suse.de
|
||||
- Implement dm_linear (#218122)
|
||||
* Thu Aug 02 2007 - hare@suse.de
|
||||
|
Loading…
Reference in New Issue
Block a user