From: Mark Syms <mark.syms@citrix.com>
Date: Wed, 10 May 2017 11:06:49 +0100
Subject: Fix udev rules to prevent td devices being bound by Dom0 services

Remove obsolete udev rules which no longer work.
Patch override copy of 65-md-incremental.rules to prevent Dom0 mdadm from binding the devices.

Signed-off-by: Mark Syms <mark.syms@citrix.com>
---
 control/Makefile.am                 |  3 ---
 control/blktap.rules                |  3 ---
 mk/Makefile                         |  6 ------
 mk/blktap-udev-ignore-tapdevs.patch |  8 --------
 mk/blktap.spec.in                   | 10 +++++++---
 5 files changed, 7 insertions(+), 23 deletions(-)
 delete mode 100644 control/blktap.rules
 delete mode 100644 mk/blktap-udev-ignore-tapdevs.patch

diff --git a/control/Makefile.am b/control/Makefile.am
index 39ba83d..728cb60 100644
--- a/control/Makefile.am
+++ b/control/Makefile.am
@@ -34,6 +34,3 @@ libblktapctl_la_SOURCES += tap-ctl-xen.c
 libblktapctl_la_SOURCES += tap-ctl-info.c
 
 libblktapctl_la_LDFLAGS = -version-info 1:1:1
-
-udev_rulesdir = $(sysconfdir)/udev/rules.d
-dist_udev_rules_DATA = blktap.rules
diff --git a/control/blktap.rules b/control/blktap.rules
deleted file mode 100644
index b74fce3..0000000
--- a/control/blktap.rules
+++ /dev/null
@@ -1,3 +0,0 @@
-SUBSYSTEM=="misc",	KERNEL=="blktap-control",	NAME="blktap/control"
-SUBSYSTEM=="blktap2",	KERNEL=="blktap[0-9]*",		NAME="blktap/%k"
-SUBSYSTEM=="block",	KERNEL=="td[a-z]*",		NAME="%k"
diff --git a/mk/Makefile b/mk/Makefile
index 5073729..36afc06 100644
--- a/mk/Makefile
+++ b/mk/Makefile
@@ -19,8 +19,6 @@ BLKTAP_RPMSPEC  = $(RPM_SPECSDIR)/blktap.spec
 BLKTAP_SRPMOUT  = $(MY_OUTPUT_DIR)/SRPMS/$(BLKTAP_PKGNAME)-$(BLKTAP_VERSION)-$(BLKTAP_RELEASE).src.rpm
 BLKTAP_CHANGES  = $(MY_OBJ_DIR)/changelog.tmp
 
-BLKTAP_PATCHES	= $(RPM_SOURCESDIR)/blktap-udev-ignore-tapdevs.patch
-
 BLKTAP_OUTPUT  = $(MY_SOURCES)/MANIFEST
 BLKTAP_OUTPUT += $(MY_SOURCES)/$(BLKTAP_SOURCES)
 BLKTAP_OUTPUT += $(MY_OUTPUT_DIR)/blktap.inc
@@ -32,7 +30,6 @@ CHANGELOG_MESSAGE := - Build blktap.
 
 BLKTAP_RPM_SOURCES  = $(BLKTAP_RPMSPEC)
 BLKTAP_RPM_SOURCES += $(RPM_SOURCESDIR)/$(BLKTAP_SOURCES)
-BLKTAP_RPM_SOURCES += $(BLKTAP_PATCHES)
 
 .PHONY: build clean
 
@@ -83,9 +80,6 @@ $(STAMP_RPMBUILD): $(RPM_DIRECTORIES) $(BLKTAP_RPM_SOURCES)
 	$(RPMBUILD) --target $(DOMAIN0_ARCH_OPTIMIZED) -ba $(BLKTAP_RPMSPEC)
 	touch $@
 
-$(BLKTAP_PATCHES): $(RPM_SOURCESDIR)/%: %
-	cp $< $@
-
 .PHONY: clean
 clean: 
 	rm -rf $(RPM_SOURCESDIR)
diff --git a/mk/blktap-udev-ignore-tapdevs.patch b/mk/blktap-udev-ignore-tapdevs.patch
deleted file mode 100644
index 8581d28..0000000
--- a/mk/blktap-udev-ignore-tapdevs.patch
+++ /dev/null
@@ -1,8 +0,0 @@
-diff -r d91ddfaf89c9 control/blktap.rules
---- a/control/blktap.rules	Fri Jul 16 15:19:53 2010 -0700
-+++ b/control/blktap.rules	Fri Jul 16 15:21:43 2010 -0700
-@@ -1,3 +1,1 @@
--SUBSYSTEM=="misc",	KERNEL=="blktap-control",	NAME="blktap/control"
--SUBSYSTEM=="blktap2",	KERNEL=="blktap[0-9]*",		NAME="blktap/%k"
--SUBSYSTEM=="block",	KERNEL=="td[a-z]*",		NAME="%k"
-+SUBSYSTEM=="block",	KERNEL=="td[a-z]*",		OPTIONS="ignore_device"
diff --git a/mk/blktap.spec.in b/mk/blktap.spec.in
index c7b8c4c..0d1a1ab 100644
--- a/mk/blktap.spec.in
+++ b/mk/blktap.spec.in
@@ -6,7 +6,6 @@ License: BSD
 Group: System/Hypervisor
 Source0: %{name}-%{version}.tar.bz2
 
-Patch1: %{name}-udev-ignore-tapdevs.patch
 BuildRoot: %{_tmppath}/%{name}-%{release}-buildroot
 Obsoletes: xen-blktap
 BuildRequires: e2fsprogs-devel, libaio-devel, systemd
@@ -39,7 +38,6 @@ Blktap and VHD development files.
 
 %prep
 %setup -q
-%patch1 -p1
 
 %build
 %configure
@@ -50,6 +48,10 @@ rm -rf %{buildroot}
 make install DESTDIR=%{buildroot}
 mkdir -p %{buildroot}%{_localstatedir}/log/blktap
 
+%triggerin -- mdadm
+echo 'KERNEL=="td[a-z]*", GOTO="md_end"' > /etc/udev/rules.d/65-md-incremental.rules
+cat /usr/lib/udev/rules.d/65-md-incremental.rules >> /etc/udev/rules.d/65-md-incremental.rules
+
 %files
 %defattr(-,root,root,-)
 %docdir /usr/share/doc/%{name}
@@ -68,7 +70,6 @@ mkdir -p %{buildroot}%{_localstatedir}/log/blktap
 %{_sbindir}/part-util
 %{_sbindir}/vhdpartx
 %{_libexecdir}/tapdisk
-%{_sysconfdir}/udev/rules.d/blktap.rules
 %{_sysconfdir}/logrotate.d/blktap
 %{_sysconfdir}/xensource/bugtool/tapdisk-logs.xml
 %{_sysconfdir}/xensource/bugtool/tapdisk-logs/description.xml
@@ -95,5 +96,8 @@ mkdir -p %{buildroot}%{_localstatedir}/log/blktap
 %postun
 %systemd_postun tapback.service
 %systemd_postun cpumond.service
+if [ $1 -eq 0 ]; then
+    rm -f %{_sysconfdir}/udev/rules.d/65-md-incremental.rules
+fi
 
 %changelog
-- 
1.8.3.1

