OBS User unknown 2007-08-30 21:18:45 +00:00 committed by Git OBS Bridge
parent 9a4aa4389f
commit 50b66891a4
3 changed files with 129 additions and 38 deletions

View File

@ -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"

View File

@ -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

View File

@ -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