diff --git a/0001-Fix-gnulib-header-clash-against-glibc-system-headers.patch b/0001-Fix-gnulib-header-clash-against-glibc-system-headers.patch
deleted file mode 100644
index 7718746..0000000
--- a/0001-Fix-gnulib-header-clash-against-glibc-system-headers.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From fc18d751a71ff42461153eaacc57948e5771dd76 Mon Sep 17 00:00:00 2001
-From: rpm-build <rpm-build>
-Date: Mon, 5 Jun 2017 11:10:49 +0100
-Subject: [PATCH] Fix gnulib header clash against glibc system headers
-
----
- gnulib/lib/getopt-core.h | 6 +++---
- gnulib/lib/getopt-ext.h  | 6 +++---
- 2 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/gnulib/lib/getopt-core.h b/gnulib/lib/getopt-core.h
-index 8c9eb51..cab3412 100644
---- a/gnulib/lib/getopt-core.h
-+++ b/gnulib/lib/getopt-core.h
-@@ -17,8 +17,8 @@
-    License along with the GNU C Library; if not, see
-    <http://www.gnu.org/licenses/>.  */
- 
--#ifndef _GETOPT_CORE_H
--#define _GETOPT_CORE_H 1
-+#ifndef _GL_GETOPT_CORE_H
-+#define _GL_GETOPT_CORE_H 1
- 
- /* This header should not be used directly; include getopt.h or
-    unistd.h instead.  Unlike most bits headers, it does not have
-@@ -93,4 +93,4 @@ extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
- 
- __END_DECLS
- 
--#endif /* _GETOPT_CORE_H */
-+#endif /* _GL_GETOPT_CORE_H */
-diff --git a/gnulib/lib/getopt-ext.h b/gnulib/lib/getopt-ext.h
-index 94190df..0ded089 100644
---- a/gnulib/lib/getopt-ext.h
-+++ b/gnulib/lib/getopt-ext.h
-@@ -17,8 +17,8 @@
-    License along with the GNU C Library; if not, see
-    <http://www.gnu.org/licenses/>.  */
- 
--#ifndef _GETOPT_EXT_H
--#define _GETOPT_EXT_H 1
-+#ifndef _GL_GETOPT_EXT_H
-+#define _GL_GETOPT_EXT_H 1
- 
- /* This header should not be used directly; include getopt.h instead.
-    Unlike most bits headers, it does not have a protective #error,
-@@ -74,4 +74,4 @@ extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv,
- 
- __END_DECLS
- 
--#endif /* _GETOPT_EXT_H */
-+#endif /* _GL_GETOPT_EXT_H */
--- 
-2.9.3
-
diff --git a/libvirt.spec b/libvirt.spec
index d72be6b..92ab98a 100644
--- a/libvirt.spec
+++ b/libvirt.spec
@@ -59,13 +59,7 @@
 
 # Then the secondary host drivers, which run inside libvirtd
 %if 0%{?fedora} || 0%{?rhel} >= 7
-    # Temporary hack due to ceph breakage
-    # https://bugzilla.redhat.com/show_bug.cgi?id=1474743
-    %ifarch %{ix86} %{arm} ppc64
-        %define with_storage_rbd      0
-    %else
-        %define with_storage_rbd      0%{!?_without_storage_rbd:1}
-    %endif
+    %define with_storage_rbd      0%{!?_without_storage_rbd:1}
 %else
     %define with_storage_rbd      0
 %endif
@@ -77,6 +71,13 @@
 %define with_storage_gluster 0%{!?_without_storage_gluster:1}
 %define with_numactl          0%{!?_without_numactl:1}
 
+# F25+ has zfs-fuse
+%if 0%{?fedora} >= 25
+    %define with_storage_zfs      0%{!?_without_storage_zfs:1}
+%else
+    %define with_storage_zfs      0
+%endif
+
 # A few optional bits off by default, we enable later
 %define with_fuse          0%{!?_without_fuse:0}
 %define with_cgconfig      0%{!?_without_cgconfig:0}
@@ -121,6 +122,12 @@
     %endif
 %endif
 
+# zfs-fuse is not available on some architectures
+%ifarch s390 s390x aarch64
+    %define with_storage_zfs 0
+%endif
+
+
 # RHEL doesn't ship OpenVZ, VBox, UML, PowerHypervisor,
 # VMware, libxenserver (xenapi), libxenlight (Xen 4.1 and newer),
 # or HyperV.
@@ -232,8 +239,8 @@
 
 Summary: Library providing a simple virtualization API
 Name: libvirt
-Version: 3.5.0
-Release: 4%{?dist}%{?extra_release}
+Version: 3.6.0
+Release: 1%{?dist}%{?extra_release}
 License: LGPLv2+
 Group: Development/Libraries
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
@@ -243,7 +250,6 @@ URL: https://libvirt.org/
     %define mainturl stable_updates/
 %endif
 Source: https://libvirt.org/sources/%{?mainturl}libvirt-%{version}.tar.xz
-Patch1: 0001-Fix-gnulib-header-clash-against-glibc-system-headers.patch
 
 Requires: libvirt-daemon = %{version}-%{release}
 Requires: libvirt-daemon-config-network = %{version}-%{release}
@@ -380,6 +386,12 @@ BuildRequires: glusterfs-devel >= 3.4.1
 %if %{with_storage_sheepdog}
 BuildRequires: sheepdog
 %endif
+%if %{with_storage_zfs}
+# Support any conforming implementation of zfs. On stock Fedora
+# this is zfs-fuse, but could be zfsonlinux upstream RPMs
+BuildRequires: /sbin/zfs
+BuildRequires: /sbin/zpool
+%endif
 %if %{with_numactl}
 # For QEMU/LXC numa info
 BuildRequires: numactl-devel
@@ -712,6 +724,21 @@ sheepdog volumes using.
 %endif
 
 
+%if %{with_storage_zfs}
+%package daemon-driver-storage-zfs
+Summary: Storage driver plugin for ZFS
+Group: Development/Libraries
+Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
+# Support any conforming implementation of zfs
+Requires: /sbin/zfs
+Requires: /sbin/zpool
+
+%description daemon-driver-storage-zfs
+The storage driver backend adding implementation of the storage APIs for
+ZFS volumes.
+%endif
+
+
 %package daemon-driver-storage
 Summary: Storage driver plugin including all backends for the libvirtd daemon
 Group: Development/Libraries
@@ -730,6 +757,9 @@ Requires: libvirt-daemon-driver-storage-rbd = %{version}-%{release}
 %if %{with_storage_sheepdog}
 Requires: libvirt-daemon-driver-storage-sheepdog = %{version}-%{release}
 %endif
+%if %{with_storage_zfs}
+Requires: libvirt-daemon-driver-storage-zfs = %{version}-%{release}
+%endif
 
 %description daemon-driver-storage
 The storage driver plugin for the libvirtd daemon, providing
@@ -1187,6 +1217,12 @@ rm -rf .git
     %define arg_storage_gluster --without-storage-gluster
 %endif
 
+%if %{with_storage_zfs}
+    %define arg_storage_zfs --with-storage-zfs
+%else
+    %define arg_storage_zfs --without-storage-zfs
+%endif
+
 %if %{with_numactl}
     %define arg_numactl --with-numactl
 %else
@@ -1295,7 +1331,7 @@ rm -f po/stamp-po
            %{?arg_storage_rbd} \
            %{?arg_storage_sheepdog} \
            %{?arg_storage_gluster} \
-           --without-storage-zfs \
+           %{?arg_storage_zfs} \
            --without-storage-vstorage \
            %{?arg_numactl} \
            %{?arg_numad} \
@@ -1858,6 +1894,11 @@ exit 0
 %{_libdir}/%{name}/storage-backend/libvirt_storage_backend_sheepdog.so
 %endif
 
+%if %{with_storage_zfs}
+%files daemon-driver-storage-zfs
+%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_zfs.so
+%endif
+
 %if %{with_qemu}
 %files daemon-driver-qemu
 %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/
@@ -2077,6 +2118,9 @@ exit 0
 
 
 %changelog
+* Wed Aug  2 2017 Daniel P. Berrange <berrange@redhat.com> - 3.6.0-1
+- Rebase to version 3.6.0
+
 * Sun Jul 30 2017 Florian Weimer <fweimer@redhat.com> - 3.5.0-4
 - Rebuild with binutils fix for ppc64le (#1475636)
 
diff --git a/sources b/sources
index 0e732e1..24bcb6b 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (libvirt-3.5.0.tar.xz) = 319d1573e55df0cbfd0808d658fb4ef5484d8381db6fe348b36a650ea60b62b7146882e616e9494109d44c8e57ed956137fb7b51c3895d96bd19e9aee6a3e82c
+SHA512 (libvirt-3.6.0.tar.xz) = 6cde735a18cb71c9e6dbb25cd2a8f9c72d55ad7d74bdf97b00d784593f0bc59498917fb235ce04de4428899241520d87bf19c015b80282b3d0c12918d9b8b288