[1/2] tools: remove blktap2 related code and documentation
diff mbox series

Message ID 20190514103030.8393-2-wei.liu2@citrix.com
State New, archived
Headers show
Series
  • Drop blktap2 from xen
Related show

Commit Message

Wei Liu May 14, 2019, 10:30 a.m. UTC
Blktap2 is effectively dead for a few years.

Notable changes in this patch:

0. Unhook blktap2 from build system
1. libxl no longer supports TAP disk backend, with appropriate assertions
   added and some code paths now return ERROR_FAIL
2. Tap is no longer a supported backend
3. Remove blktap2 entry from MAINTAINERS

A patch to remove blktap2 directory will come later.

Signed-off-by: Wei Liu <wei.liu2@citrix.com>
---
 .gitignore                           | 15 -----
 .hgignore                            | 12 ----
 INSTALL                              |  4 --
 MAINTAINERS                          |  4 --
 config/Tools.mk.in                   |  1 -
 docs/man/xl-disk-configuration.5.pod |  2 +-
 tools/Makefile                       |  1 -
 tools/Rules.mk                       | 16 +----
 tools/config.h.in                    |  6 --
 tools/configure                      | 78 -----------------------
 tools/configure.ac                   | 18 ------
 tools/golang/xenlight/xenlight.go    |  2 +-
 tools/libxl/Makefile                 |  8 +--
 tools/libxl/check-xl-disk-parse      |  2 +-
 tools/libxl/libxl_blktap2.c          | 94 ----------------------------
 tools/libxl/libxl_device.c           | 40 +-----------
 tools/libxl/libxl_disk.c             | 25 +-------
 tools/libxl/libxl_dm.c               | 17 +----
 tools/libxl/libxl_internal.h         | 26 --------
 tools/libxl/libxl_noblktap2.c        | 42 -------------
 tools/libxl/xenlight.pc.in           |  2 +-
 tools/xenstore/hashtable.c           |  5 --
 tools/xenstore/hashtable.h           |  5 --
 tools/xenstore/hashtable_private.h   |  5 --
 24 files changed, 15 insertions(+), 415 deletions(-)
 delete mode 100644 tools/libxl/libxl_blktap2.c
 delete mode 100644 tools/libxl/libxl_noblktap2.c

Comments

Jan Beulich May 14, 2019, 11:35 a.m. UTC | #1
>>> On 14.05.19 at 12:30, <wei.liu2@citrix.com> wrote:
> Blktap2 is effectively dead for a few years.
> 
> Notable changes in this patch:
> 
> 0. Unhook blktap2 from build system
> 1. libxl no longer supports TAP disk backend, with appropriate assertions
>    added and some code paths now return ERROR_FAIL

And also appropriate error messages, allowing people to know
what needs changing without first digging through the sources?

Jan
Wei Liu May 14, 2019, 11:39 a.m. UTC | #2
On Tue, May 14, 2019 at 05:35:25AM -0600, Jan Beulich wrote:
> >>> On 14.05.19 at 12:30, <wei.liu2@citrix.com> wrote:
> > Blktap2 is effectively dead for a few years.
> > 
> > Notable changes in this patch:
> > 
> > 0. Unhook blktap2 from build system
> > 1. libxl no longer supports TAP disk backend, with appropriate assertions
> >    added and some code paths now return ERROR_FAIL
> 
> And also appropriate error messages, allowing people to know
> what needs changing without first digging through the sources?

Yes there have always been appropriate error messages in the error
paths.

Wei.

> 
> Jan
> 
>
Jan Beulich May 14, 2019, 11:52 a.m. UTC | #3
>>> On 14.05.19 at 13:39, <wei.liu2@citrix.com> wrote:
> On Tue, May 14, 2019 at 05:35:25AM -0600, Jan Beulich wrote:
>> >>> On 14.05.19 at 12:30, <wei.liu2@citrix.com> wrote:
>> > Blktap2 is effectively dead for a few years.
>> > 
>> > Notable changes in this patch:
>> > 
>> > 0. Unhook blktap2 from build system
>> > 1. libxl no longer supports TAP disk backend, with appropriate assertions
>> >    added and some code paths now return ERROR_FAIL
>> 
>> And also appropriate error messages, allowing people to know
>> what needs changing without first digging through the sources?
> 
> Yes there have always been appropriate error messages in the error
> paths.

Well, good to know, but it doesn't match my experience, so at the
very least I'm in doubt of your use of "always". But it's been a while,
iirc this was painful mainly when, over an extended period of time
(i.e. as they got used for testing), having switched domain configs
from xend to xl shape. Which is to say: I can't give any concrete
recent examples of unclear error messages.

Jan

Patch
diff mbox series

diff --git a/.gitignore b/.gitignore
index 26bc583f74..b4f5e82d1d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -114,20 +114,6 @@  tools/libs/foreignmemory/headers.chk
 tools/libs/foreignmemory/xenforeignmemory.pc
 tools/libs/devicemodel/headers.chk
 tools/libs/devicemodel/xendevicemodel.pc
-tools/blktap2/control/xenblktapctl.pc
-tools/blktap2/daemon/blktapctrl
-tools/blktap2/drivers/img2qcow
-tools/blktap2/drivers/lock-util
-tools/blktap2/drivers/qcow-create
-tools/blktap2/drivers/qcow2raw
-tools/blktap2/drivers/tapdisk
-tools/blktap2/drivers/tapdisk-client
-tools/blktap2/drivers/tapdisk-diff
-tools/blktap2/drivers/tapdisk-stream
-tools/blktap2/drivers/tapdisk2
-tools/blktap2/drivers/td-util
-tools/blktap2/vhd/vhd-update
-tools/blktap2/vhd/vhd-util
 tools/console/xenconsole
 tools/console/xenconsoled
 tools/console/client/_paths.h
@@ -382,7 +368,6 @@  tools/libxl/*.pyc
 tools/libxl/libxl-save-helper
 tools/libxl/test_timedereg
 tools/libxl/test_fdderegrace
-tools/blktap2/control/tap-ctl
 tools/firmware/etherboot/eb-roms.h
 tools/firmware/etherboot/gpxe-git-snapshot.tar.gz
 tools/misc/xenwatchdogd
diff --git a/.hgignore b/.hgignore
index ded8cef532..10025c8793 100644
--- a/.hgignore
+++ b/.hgignore
@@ -128,18 +128,6 @@ 
 ^stubdom/stubdompath\.sh$
 ^stubdom/vtpm/vtpm_manager\.h$
 ^tools/.*/build/lib.*/.*\.py$
-^tools/blktap2/control/tap-ctl$
-^tools/blktap2/drivers/img2qcow$
-^tools/blktap2/drivers/lock-util$
-^tools/blktap2/drivers/qcow-create$
-^tools/blktap2/drivers/qcow2raw$
-^tools/blktap2/drivers/tapdisk-client$
-^tools/blktap2/drivers/tapdisk-diff$
-^tools/blktap2/drivers/tapdisk-stream$
-^tools/blktap2/drivers/tapdisk2$
-^tools/blktap2/drivers/td-util$
-^tools/blktap2/vhd/vhd-update$
-^tools/blktap2/vhd/vhd-util$
 ^tools/check/\..*$
 ^tools/console/xenconsole$
 ^tools/console/xenconsoled$
diff --git a/INSTALL b/INSTALL
index 9aa9ebdddc..ff8e086fbd 100644
--- a/INSTALL
+++ b/INSTALL
@@ -144,10 +144,6 @@  this detection and the sysv runlevel scripts have to be used.
   --with-systemd=DIR
   --with-systemd-modules-load=DIR
 
-The old backend drivers are disabled because qdisk is now the default.
-This option can be used to build them anyway.
-  --enable-blktap2
-
 Build various stubom components, some are only example code. Its usually
 enough to specify just --enable-stubdom and leave these options alone.
   --enable-ioemu-stubdom
diff --git a/MAINTAINERS b/MAINTAINERS
index 1f422d96a8..8a1e040258 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -192,10 +192,6 @@  F:	xen/include/asm-arm/
 F:	xen/include/public/arch-arm/
 F:	xen/include/public/arch-arm.h
 
-BLKTAP2
-S:	Orphaned
-F:	tools/blktap2/
-
 Continuous Integration (CI)
 M:	Doug Goldstein <cardoe@cardoe.com>
 W:	https://gitlab.com/xen-project/xen
diff --git a/config/Tools.mk.in b/config/Tools.mk.in
index 98245f63c9..62f154662e 100644
--- a/config/Tools.mk.in
+++ b/config/Tools.mk.in
@@ -53,7 +53,6 @@  CONFIG_SEABIOS      := @seabios@
 CONFIG_IPXE         := @ipxe@
 CONFIG_QEMU_TRAD    := @qemu_traditional@
 CONFIG_QEMU_XEN     := @qemu_xen@
-CONFIG_BLKTAP2      := @blktap2@
 CONFIG_QEMUU_EXTRA_ARGS:= @EXTRA_QEMUU_CONFIGURE_ARGS@
 CONFIG_LIBNL        := @libnl@
 
diff --git a/docs/man/xl-disk-configuration.5.pod b/docs/man/xl-disk-configuration.5.pod
index eea893ef91..7965d5dd73 100644
--- a/docs/man/xl-disk-configuration.5.pod
+++ b/docs/man/xl-disk-configuration.5.pod
@@ -232,7 +232,7 @@  Specifies the backend implementation to use
 
 =item Supported values
 
-phy, tap, qdisk
+phy, qdisk
 
 =item Mandatory
 
diff --git a/tools/Makefile b/tools/Makefile
index 99cbc950dc..7b1f6c4d28 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -20,7 +20,6 @@  SUBDIRS-y += console
 SUBDIRS-y += xenmon
 SUBDIRS-y += xenstat
 SUBDIRS-$(CONFIG_Linux) += memshr 
-SUBDIRS-$(CONFIG_BLKTAP2) += blktap2
 SUBDIRS-$(CONFIG_NetBSD) += xenbackendd
 SUBDIRS-y += libfsimage
 SUBDIRS-$(CONFIG_Linux) += libvchan
diff --git a/tools/Rules.mk b/tools/Rules.mk
index f5613f73a7..cf8935d6a3 100644
--- a/tools/Rules.mk
+++ b/tools/Rules.mk
@@ -25,7 +25,6 @@  XEN_XENLIGHT       = $(XEN_ROOT)/tools/libxl
 XEN_XLUTIL         = $(XEN_XENLIGHT)
 XEN_XENSTORE       = $(XEN_ROOT)/tools/xenstore
 XEN_LIBXENSTAT     = $(XEN_ROOT)/tools/xenstat/libxenstat/src
-XEN_BLKTAP2        = $(XEN_ROOT)/tools/blktap2
 XEN_LIBVCHAN       = $(XEN_ROOT)/tools/libvchan
 
 CFLAGS_xeninclude = -I$(XEN_INCLUDE)
@@ -174,21 +173,8 @@  else
 CFLAGS += -O2 -fomit-frame-pointer
 endif
 
-ifeq ($(CONFIG_BLKTAP2),y)
-CFLAGS_libblktapctl = -I$(XEN_BLKTAP2)/control -I$(XEN_BLKTAP2)/include $(CFLAGS_xeninclude)
-SHDEPS_libblktapctl =
-LDLIBS_libblktapctl = $(SHDEPS_libblktapctl) $(XEN_BLKTAP2)/control/libblktapctl$(libextension)
-SHLIB_libblktapctl  = $(SHDEPS_libblktapctl) -Wl,-rpath-link=$(XEN_BLKTAP2)/control
-else
-CFLAGS_libblktapctl =
-SHDEPS_libblktapctl =
-LDLIBS_libblktapctl =
-SHLIB_libblktapctl  =
-PKG_CONFIG_REMOVE += xenblktapctl
-endif
-
 CFLAGS_libxenlight = -I$(XEN_XENLIGHT) $(CFLAGS_libxenctrl) $(CFLAGS_xeninclude)
-SHDEPS_libxenlight = $(SHLIB_libxenctrl) $(SHLIB_libxenstore) $(SHLIB_libblktapctl)
+SHDEPS_libxenlight = $(SHLIB_libxenctrl) $(SHLIB_libxenstore)
 LDLIBS_libxenlight = $(SHDEPS_libxenlight) $(XEN_XENLIGHT)/libxenlight$(libextension)
 SHLIB_libxenlight  = $(SHDEPS_libxenlight) -Wl,-rpath-link=$(XEN_XENLIGHT)
 
diff --git a/tools/config.h.in b/tools/config.h.in
index 5987f087b8..5a5944ebe1 100644
--- a/tools/config.h.in
+++ b/tools/config.h.in
@@ -3,9 +3,6 @@ 
 /* Enabling support partial device tree in libxl */
 #undef ENABLE_PARTIAL_DEVICE_TREE
 
-/* Blktap2 enabled */
-#undef HAVE_BLKTAP2
-
 /* Define to 1 if you have the declaration of `fdt_first_subnode', and to 0 if
    you don't. */
 #undef HAVE_DECL_FDT_FIRST_SUBNODE
@@ -27,9 +24,6 @@ 
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
-/* Define to 1 if you have the `aio' library (-laio). */
-#undef HAVE_LIBAIO
-
 /* Define to 1 if you have the `fdt' library (-lfdt). */
 #undef HAVE_LIBFDT
 
diff --git a/tools/configure b/tools/configure
index 92ead93335..2e21b97fe6 100755
--- a/tools/configure
+++ b/tools/configure
@@ -703,7 +703,6 @@  BCC
 LD86
 AS86
 qemu_traditional
-blktap2
 LINUX_BACKEND_MODULES
 seabios
 ovmf
@@ -808,7 +807,6 @@  enable_xsmpolicy
 enable_ovmf
 enable_seabios
 with_linux_backend_modules
-enable_blktap2
 enable_qemu_traditional
 enable_rombios
 with_system_qemu
@@ -1493,7 +1491,6 @@  Optional Features:
   --disable-xsmpolicy     Disable XSM policy compilation (default is ENABLED)
   --enable-ovmf           Enable OVMF (default is DISABLED)
   --disable-seabios       Disable SeaBIOS (default is ENABLED)
-  --enable-blktap2        Enable blktap2, (DEFAULT is off)
   --enable-qemu-traditional
                           Enable qemu traditional device model, (DEFAULT is on
                           for Linux or NetBSD x86, otherwise off)
@@ -4221,7 +4218,6 @@  xen-scsibk
 usbbk
 pciback
 xen-acpi-processor
-blktap2
 "
 ;;
 *)
@@ -4233,29 +4229,6 @@  fi
 LINUX_BACKEND_MODULES="`eval echo $LINUX_BACKEND_MODULES`"
 
 
-# Check whether --enable-blktap2 was given.
-if test "${enable_blktap2+set}" = set; then :
-  enableval=$enable_blktap2;
-else
-
-        enable_blktap2="no"
-
-fi
-
-if test "x$enable_blktap2" = "xyes"; then :
-
-
-$as_echo "#define HAVE_BLKTAP2 1" >>confdefs.h
-
-    blktap2=y
-else
-
-    blktap2=n
-
-fi
-
-
-
 # Check whether --enable-qemu-traditional was given.
 if test "${enable_qemu_traditional+set}" = set; then :
   enableval=$enable_qemu_traditional;
@@ -8467,57 +8440,6 @@  fi
 
 
 
-if test "x$enable_blktap2" = "xyes"; then :
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for io_setup in -laio" >&5
-$as_echo_n "checking for io_setup in -laio... " >&6; }
-if ${ac_cv_lib_aio_io_setup+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-laio  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char io_setup ();
-int
-main ()
-{
-return io_setup ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_aio_io_setup=yes
-else
-  ac_cv_lib_aio_io_setup=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_aio_io_setup" >&5
-$as_echo "$ac_cv_lib_aio_io_setup" >&6; }
-if test "x$ac_cv_lib_aio_io_setup" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBAIO 1
-_ACEOF
-
-  LIBS="-laio $LIBS"
-
-else
-  as_fn_error $? "Could not find libaio" "$LINENO" 5
-fi
-
-
-fi
 
 
 ac_fn_c_check_header_mongrel "$LINENO" "ext2fs/ext2fs.h" "ac_cv_header_ext2fs_ext2fs_h" "$ac_includes_default"
diff --git a/tools/configure.ac b/tools/configure.ac
index c9fd69ddfa..ba5115e142 100644
--- a/tools/configure.ac
+++ b/tools/configure.ac
@@ -106,7 +106,6 @@  xen-scsibk
 usbbk
 pciback
 xen-acpi-processor
-blktap2
 "
 ;;
 *)
@@ -116,20 +115,6 @@  esac])
 LINUX_BACKEND_MODULES="`eval echo $LINUX_BACKEND_MODULES`"
 AC_SUBST(LINUX_BACKEND_MODULES)
 
-dnl Enable blktap2 on Linux only.
-AC_ARG_ENABLE([blktap2],
-    AS_HELP_STRING([--enable-blktap2],
-                   [Enable blktap2, (DEFAULT is off)]),,[
-        enable_blktap2="no"
-])
-AS_IF([test "x$enable_blktap2" = "xyes"], [
-AC_DEFINE([HAVE_BLKTAP2], [1], [Blktap2 enabled])
-    blktap2=y],[
-    blktap2=n
-])
-AC_SUBST(blktap2)
-
-
 AC_ARG_ENABLE([qemu-traditional],
     AS_HELP_STRING([--enable-qemu-traditional],
                    [Enable qemu traditional device model, (DEFAULT is on for Linux or NetBSD x86, otherwise off)]),,[
@@ -402,9 +387,6 @@  AC_CHECK_HEADER([lzo/lzo1x.h], [
 AC_CHECK_LIB([lzo2], [lzo1x_decompress], [zlib="$zlib -DHAVE_LZO1X -llzo2"])
 ])
 AC_SUBST(zlib)
-AS_IF([test "x$enable_blktap2" = "xyes"], [
-AC_CHECK_LIB([aio], [io_setup], [], [AC_MSG_ERROR([Could not find libaio])])
-])
 AC_SUBST(system_aio)
 AX_CHECK_EXTFS
 AX_CHECK_PTHREAD
diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenlight.go
index 9c37e59ec0..53534d047e 100644
--- a/tools/golang/xenlight/xenlight.go
+++ b/tools/golang/xenlight/xenlight.go
@@ -28,7 +28,7 @@  import "C"
  *  -lnl-route-3 -lnl-3
  *
  * To get back to static linking:
- * #cgo LDFLAGS: -lxenlight -lyajl_s -lxengnttab -lxenstore -lxenguest -lxentoollog -lxenevtchn -lxenctrl -lblktapctl -lxenforeignmemory -lxencall -lz -luuid -lutil
+ * #cgo LDFLAGS: -lxenlight -lyajl_s -lxengnttab -lxenstore -lxenguest -lxentoollog -lxenevtchn -lxenctrl -lxenforeignmemory -lxencall -lz -luuid -lutil
  */
 
 import (
diff --git a/tools/libxl/Makefile b/tools/libxl/Makefile
index 5015ecbf27..6fdcbbddd6 100644
--- a/tools/libxl/Makefile
+++ b/tools/libxl/Makefile
@@ -20,7 +20,7 @@  LIBUUID_LIBS += -luuid
 endif
 
 LIBXL_LIBS =
-LIBXL_LIBS = $(LDLIBS_libxentoollog) $(LDLIBS_libxenevtchn) $(LDLIBS_libxenctrl) $(LDLIBS_libxenguest) $(LDLIBS_libxenstore) $(LDLIBS_libblktapctl) $(LDLIBS_libxentoolcore) $(PTYFUNCS_LIBS) $(LIBUUID_LIBS)
+LIBXL_LIBS = $(LDLIBS_libxentoollog) $(LDLIBS_libxenevtchn) $(LDLIBS_libxenctrl) $(LDLIBS_libxenguest) $(LDLIBS_libxenstore) $(LDLIBS_libxentoolcore) $(PTYFUNCS_LIBS) $(LIBUUID_LIBS)
 ifeq ($(CONFIG_LIBNL),y)
 LIBXL_LIBS += $(LIBNL3_LIBS)
 endif
@@ -31,7 +31,6 @@  CFLAGS_LIBXL += $(CFLAGS_libxenevtchn)
 CFLAGS_LIBXL += $(CFLAGS_libxenctrl)
 CFLAGS_LIBXL += $(CFLAGS_libxenguest)
 CFLAGS_LIBXL += $(CFLAGS_libxenstore)
-CFLAGS_LIBXL += $(CFLAGS_libblktapctl) 
 ifeq ($(CONFIG_LIBNL),y)
 CFLAGS_LIBXL += $(LIBNL3_CFLAGS)
 endif
@@ -47,11 +46,6 @@  LIBXL_LIBS += $(LIBXL_LIBS-y)
 LIBXLU_LIBS = $(LDLIBS_libxenlight)
 
 LIBXL_OBJS-y = osdeps.o libxl_paths.o libxl_bootloader.o flexarray.o
-ifeq ($(CONFIG_BLKTAP2),y)
-LIBXL_OBJS-y += libxl_blktap2.o
-else
-LIBXL_OBJS-y += libxl_noblktap2.o
-endif
 
 ifeq ($(CONFIG_LIBNL),y)
 LIBXL_OBJS-y += libxl_netbuffer.o
diff --git a/tools/libxl/check-xl-disk-parse b/tools/libxl/check-xl-disk-parse
index 03572e4471..643f4f4ecb 100755
--- a/tools/libxl/check-xl-disk-parse
+++ b/tools/libxl/check-xl-disk-parse
@@ -3,7 +3,7 @@ 
 set -e
 
 if [ -x ./xl ] ; then
-    export LD_LIBRARY_PATH=.:../libxc:../xenstore:../blktap2/control
+    export LD_LIBRARY_PATH=.:../libxc:../xenstore
     XL=./xl
 else
     XL=xl
diff --git a/tools/libxl/libxl_blktap2.c b/tools/libxl/libxl_blktap2.c
deleted file mode 100644
index 5c9a0a2da8..0000000000
--- a/tools/libxl/libxl_blktap2.c
+++ /dev/null
@@ -1,94 +0,0 @@ 
-/*
- * Copyright (C) 2010      Advanced Micro Devices
- * Author Christoph Egger <Christoph.Egger@amd.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; version 2.1 only.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- */
-
-#include "libxl_osdeps.h" /* must come before any other headers */
-#include "libxl_internal.h"
-
-#include "tap-ctl.h"
-
-int libxl__blktap_enabled(libxl__gc *gc)
-{
-    const char *msg;
-    return !tap_ctl_check(&msg);
-}
-
-char *libxl__blktap_devpath(libxl__gc *gc,
-                            const char *disk,
-                            libxl_disk_format format)
-{
-    const char *type;
-    char *params, *devname = NULL;
-    tap_list_t tap;
-    int err;
-
-    type = libxl__device_disk_string_of_format(format);
-    err = tap_ctl_find(type, disk, &tap);
-    if (err == 0) {
-        devname = GCSPRINTF("/dev/xen/blktap-2/tapdev%d", tap.minor);
-        if (devname)
-            return devname;
-    }
-
-    params = GCSPRINTF("%s:%s", type, disk);
-    err = tap_ctl_create(params, &devname);
-    if (!err) {
-        libxl__ptr_add(gc, devname);
-        return devname;
-    }
-
-    free(devname);
-    return NULL;
-}
-
-
-int libxl__device_destroy_tapdisk(libxl__gc *gc, const char *params)
-{
-    char *type, *disk;
-    int err;
-    tap_list_t tap;
-
-    type = libxl__strdup(gc, params);
-
-    disk = strchr(type, ':');
-    if (!disk) {
-        LOG(ERROR, "Unable to parse params %s", params);
-        return ERROR_INVAL;
-    }
-
-    *disk++ = '\0';
-
-    err = tap_ctl_find(type, disk, &tap);
-    if (err < 0) {
-        /* returns -errno */
-        LOGEV(ERROR, -err, "Unable to find type %s disk %s", type, disk);
-        return ERROR_FAIL;
-    }
-
-    err = tap_ctl_destroy(tap.id, tap.minor);
-    if (err < 0) {
-        LOGEV(ERROR, -err, "Failed to destroy tap device id %d minor %d",
-              tap.id, tap.minor);
-        return ERROR_FAIL;
-    }
-
-    return 0;
-}
-
-/*
- * Local variables:
- * mode: C
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c
index 87ddfc3ac7..f8340ba815 100644
--- a/tools/libxl/libxl_device.c
+++ b/tools/libxl/libxl_device.c
@@ -321,26 +321,9 @@  static int disk_try_backend(disk_try_backend_args *a,
         return 0;
 
     case LIBXL_DISK_BACKEND_TAP:
-        if (a->disk->script) goto bad_script;
-
-        if (libxl_defbool_val(a->disk->colo_enable))
-            goto bad_colo;
-
-        if (a->disk->is_cdrom) {
-            LOG(DEBUG, "Disk vdev=%s, backend tap unsuitable for cdroms",
-                       a->disk->vdev);
-            return 0;
-        }
-        if (!libxl__blktap_enabled(a->gc)) {
-            LOG(DEBUG, "Disk vdev=%s, backend tap unsuitable because blktap "
-                       "not available", a->disk->vdev);
-            return 0;
-        }
-        if (!(a->disk->format == LIBXL_DISK_FORMAT_RAW ||
-              a->disk->format == LIBXL_DISK_FORMAT_VHD)) {
-            goto bad_format;
-        }
-        return backend;
+        LOG(DEBUG, "Disk vdev=%s, backend tap unsuitable because blktap "
+                   "not available", a->disk->vdev);
+        return 0;
 
     case LIBXL_DISK_BACKEND_QDISK:
         if (a->disk->script) goto bad_script;
@@ -746,19 +729,11 @@  int libxl__device_destroy(libxl__gc *gc, libxl__device *dev)
     const char *be_path = NULL;
     const char *fe_path = NULL;
     const char *libxl_path = libxl__device_libxl_path(gc, dev);
-    const char *tapdisk_path = NULL;
-    const char *tapdisk_params = NULL;
     xs_transaction_t t = 0;
     int rc;
     uint32_t domid;
     int libxl_only = dev->backend_kind == LIBXL__DEVICE_KIND_NONE;
 
-    if (!libxl_only) {
-        be_path = libxl__device_backend_path(gc, dev);
-        fe_path = libxl__device_frontend_path(gc, dev);
-        tapdisk_path = GCSPRINTF("%s/%s", be_path, "tapdisk-params");
-    }
-
     rc = libxl__get_domid(gc, &domid);
     if (rc) goto out;
 
@@ -766,12 +741,6 @@  int libxl__device_destroy(libxl__gc *gc, libxl__device *dev)
         rc = libxl__xs_transaction_start(gc, &t);
         if (rc) goto out;
 
-        /* May not exist if this is not a tap device */
-        if (tapdisk_path) {
-            rc = libxl__xs_read_checked(gc, t, tapdisk_path, &tapdisk_params);
-            if (rc) goto out;
-        }
-
         if (domid == LIBXL_TOOLSTACK_DOMID) {
             /*
              * The toolstack domain is in charge of removing the
@@ -794,9 +763,6 @@  int libxl__device_destroy(libxl__gc *gc, libxl__device *dev)
         if (rc < 0) goto out;
     }
 
-    if (tapdisk_params)
-        rc = libxl__device_destroy_tapdisk(gc, tapdisk_params);
-
 out:
     libxl__xs_transaction_abort(gc, &t);
     return rc;
diff --git a/tools/libxl/libxl_disk.c b/tools/libxl/libxl_disk.c
index 79e30f8d52..bc9e2d5a74 100644
--- a/tools/libxl/libxl_disk.c
+++ b/tools/libxl/libxl_disk.c
@@ -321,7 +321,6 @@  static void device_disk_add(libxl__egc *egc, uint32_t domid,
             case LIBXL_DISK_BACKEND_PHY:
                 dev = disk->pdev_path;
 
-        do_backend_phy:
                 flexarray_append(back, "params");
                 flexarray_append(back, dev);
 
@@ -333,27 +332,9 @@  static void device_disk_add(libxl__egc *egc, uint32_t domid,
                 break;
 
             case LIBXL_DISK_BACKEND_TAP:
-                if (dev == NULL) {
-                    dev = libxl__blktap_devpath(gc, disk->pdev_path,
-                                                disk->format);
-                    if (!dev) {
-                        LOGD(ERROR, domid, "Failed to get blktap devpath for %p",
-                             disk->pdev_path);
-                        rc = ERROR_FAIL;
-                        goto out;
-                    }
-                }
-                flexarray_append(back, "tapdisk-params");
-                flexarray_append(back, GCSPRINTF("%s:%s",
-                    libxl__device_disk_string_of_format(disk->format),
-                    disk->pdev_path));
-
-                /* tap backends with scripts are rejected by
-                 * libxl__device_disk_set_backend */
-                assert(!disk->script);
-
-                /* now create a phy device to export the device to the guest */
-                goto do_backend_phy;
+                LOG(ERROR, "blktap is not supported");
+                rc = ERROR_FAIL;
+                goto out;
             case LIBXL_DISK_BACKEND_QDISK:
                 flexarray_append(back, "params");
                 flexarray_append(back, GCSPRINTF("%s:%s",
diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c
index 2f19786bdd..f4fc96415d 100644
--- a/tools/libxl/libxl_dm.c
+++ b/tools/libxl/libxl_dm.c
@@ -1812,20 +1812,9 @@  static int libxl__build_device_model_args_new(libxl__gc *gc,
                     continue;
                 }
 
-                /*
-                 * We can't call libxl__blktap_devpath from
-                 * libxl__device_disk_find_local_path for now because
-                 * the bootloader is called before the disks are set
-                 * up, so this function would set up a blktap node,
-                 * but there's no TAP tear-down on error conditions in
-                 * the bootloader path.
-                 */
-                if (disks[i].backend == LIBXL_DISK_BACKEND_TAP)
-                    target_path = libxl__blktap_devpath(gc, disks[i].pdev_path,
-                                                        disks[i].format);
-                else
-                    target_path = libxl__device_disk_find_local_path(gc,
-                                                 guest_domid, &disks[i], true);
+                assert(disks[i].backend != LIBXL_DISK_BACKEND_TAP);
+                target_path = libxl__device_disk_find_local_path(gc,
+                                    guest_domid, &disks[i], true);
 
                 if (!target_path) {
                     LOGD(WARN, guest_domid, "No way to get local access disk to image: %s\n"
diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
index 44e0221284..3be5c644c1 100644
--- a/tools/libxl/libxl_internal.h
+++ b/tools/libxl/libxl_internal.h
@@ -1890,32 +1890,6 @@  struct libxl__cpuid_policy {
     char *policy[4];
 };
 
-/*
- * blktap2 support
- */
-
-/* libxl__blktap_enabled:
- *    return true if blktap/blktap2 support is available.
- */
-_hidden int libxl__blktap_enabled(libxl__gc *gc);
-
-/* libxl__blktap_devpath:
- *    Argument: path and disk image as specified in config file.
- *      The type specifies whether this is aio, qcow, qcow2, etc.
- *    returns device path xenstore wants to have. returns NULL
- *      if no device corresponds to the disk.
- */
-_hidden char *libxl__blktap_devpath(libxl__gc *gc,
-                                    const char *disk,
-                                    libxl_disk_format format);
-
-/* libxl__device_destroy_tapdisk:
- *   Destroys any tapdisk process associated with the backend represented
- *   by be_path.
- *   Always logs on failure.
- */
-_hidden int libxl__device_destroy_tapdisk(libxl__gc *gc, const char *params);
-
 /* Calls poll() again - useful to check whether a signaled condition
  * is still true.  Cannot fail.  Returns currently-true revents. */
 _hidden short libxl__fd_poll_recheck(libxl__egc *egc, int fd, short events);
diff --git a/tools/libxl/libxl_noblktap2.c b/tools/libxl/libxl_noblktap2.c
deleted file mode 100644
index 5a86ed1b6a..0000000000
--- a/tools/libxl/libxl_noblktap2.c
+++ /dev/null
@@ -1,42 +0,0 @@ 
-/*
- * Copyright (C) 2010      Advanced Micro Devices
- * Author Christoph Egger <Christoph.Egger@amd.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; version 2.1 only.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- */
-
-#include "libxl_osdeps.h" /* must come before any other headers */
-
-#include "libxl_internal.h"
-
-int libxl__blktap_enabled(libxl__gc *gc)
-{
-    return 0;
-}
-
-char *libxl__blktap_devpath(libxl__gc *gc,
-                            const char *disk,
-                            libxl_disk_format format)
-{
-    return NULL;
-}
-
-int libxl__device_destroy_tapdisk(libxl__gc *gc, const char *params)
-{
-    return 0;
-}
-
-/*
- * Local variables:
- * mode: C
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/tools/libxl/xenlight.pc.in b/tools/libxl/xenlight.pc.in
index 86c38a5634..c0f769fd20 100644
--- a/tools/libxl/xenlight.pc.in
+++ b/tools/libxl/xenlight.pc.in
@@ -9,4 +9,4 @@  Description: The Xenlight library for Xen hypervisor
 Version: @@version@@
 Cflags: -I${includedir}
 Libs: @@libsflag@@${libdir} -lxenlight
-Requires.private: xentoollog,xenevtchn,xencontrol,xenguest,xenstore,xenblktapctl
+Requires.private: xentoollog,xenevtchn,xencontrol,xenguest,xenstore
diff --git a/tools/xenstore/hashtable.c b/tools/xenstore/hashtable.c
index 0ba1d552f1..394b1cf9d0 100644
--- a/tools/xenstore/hashtable.c
+++ b/tools/xenstore/hashtable.c
@@ -1,10 +1,5 @@ 
 /* Copyright (C) 2004 Christopher Clark <firstname.lastname@cl.cam.ac.uk> */
 
-/*
- * There are duplicates of this code in:
- *  - tools/blktap2/drivers/hashtable.c
- */
-
 #include "hashtable.h"
 #include "hashtable_private.h"
 #include <stdlib.h>
diff --git a/tools/xenstore/hashtable.h b/tools/xenstore/hashtable.h
index 4d6822354e..b90781abd4 100644
--- a/tools/xenstore/hashtable.h
+++ b/tools/xenstore/hashtable.h
@@ -1,10 +1,5 @@ 
 /* Copyright (C) 2002 Christopher Clark <firstname.lastname@cl.cam.ac.uk> */
 
-/*
- * There are duplicates of this code in:
- *  - tools/blktap2/drivers/hashtable.h
- */
-
 #ifndef __HASHTABLE_CWC22_H__
 #define __HASHTABLE_CWC22_H__
 
diff --git a/tools/xenstore/hashtable_private.h b/tools/xenstore/hashtable_private.h
index a08559d5df..3e95f60057 100644
--- a/tools/xenstore/hashtable_private.h
+++ b/tools/xenstore/hashtable_private.h
@@ -1,10 +1,5 @@ 
 /* Copyright (C) 2002, 2004 Christopher Clark <firstname.lastname@cl.cam.ac.uk> */
 
-/*
- * There are duplicates of this code in:
- *  - tools/blktap2/drivers/hashtable_private.h
- */
-
 #ifndef __HASHTABLE_PRIVATE_CWC22_H__
 #define __HASHTABLE_PRIVATE_CWC22_H__