diff --git a/community/ceph/0001-no-neon.patch b/community/ceph/0001-no-neon.patch
new file mode 100644
index 000000000..527864fcc
--- /dev/null
+++ b/community/ceph/0001-no-neon.patch
@@ -0,0 +1,28 @@
+From 649bae1e1e80fd2a7a4a0e7ad45b981749d5a2cc Mon Sep 17 00:00:00 2001
+From: Kevin Mihelich <kevin@archlinuxarm.org>
+Date: Sat, 9 Dec 2017 10:20:06 -0700
+Subject: [PATCH] no neon
+
+---
+ cmake/modules/SIMDExt.cmake | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/cmake/modules/SIMDExt.cmake b/cmake/modules/SIMDExt.cmake
+index 5330835aa1..0708867de5 100644
+--- a/cmake/modules/SIMDExt.cmake
++++ b/cmake/modules/SIMDExt.cmake
+@@ -68,10 +68,7 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64")
+ 
+ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm|ARM")
+   set(HAVE_ARM 1)
+-  CHECK_C_COMPILER_FLAG(-mfpu=neon HAVE_ARM_NEON)
+-  if(HAVE_ARM_NEON)
+-    set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -mfpu=neon")
+-  endif()
++  set(HAVE_ARM_NEON 0)
+ 
+ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i386|i686|amd64|x86_64|AMD64")
+   set(HAVE_INTEL 1)
+-- 
+2.14.1
+
diff --git a/community/ceph/PKGBUILD b/community/ceph/PKGBUILD
new file mode 100644
index 000000000..68ccca8b8
--- /dev/null
+++ b/community/ceph/PKGBUILD
@@ -0,0 +1,189 @@
+# Maintainer: Sébastien "Seblu" Luttringer <seblu@archlinux.org>
+# Contributor: Thore Bödecker <foxxx0@archlinux.org>
+
+# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
+#  - patch to remove neon detection in cmake
+#  - make -j3, RAM constraints
+
+highmem=1
+
+pkgbase='ceph'
+pkgname=('ceph' 'ceph-libs')
+pkgver=12.2.2
+pkgrel=1
+pkgdesc='Distributed, fault-tolerant storage platform delivering object, block, and file system'
+arch=('x86_64')
+url='https://ceph.com/'
+license=('GPL')
+makedepends=('bc' 'boost' 'boost-libs' 'cmake' 'cpio' 'crypto++' 'curl' 'cython'
+  'cython2' 'expat' 'fcgi' 'fuse2' 'gcc-libs' 'git' 'glibc' 'gperf' 'gperftools'
+  'gptfdisk' 'inetutils' 'jq' 'junit' 'keyutils' 'leveldb' 'libaio'
+  'libatomic_ops' 'libedit' 'libsystemd' 'libutil-linux' 'libxml2' 'lsb-release'
+  'lz4' 'ncurses' 'nss' 'parted' 'pcre' 'procps-ng' 'python2-cherrypy'
+  'python2-jinja' 'python2-nose' 'python2-pecan' 'python2-pip'
+  'python2-prettytable' 'python2-pyopenssl' 'python2-setuptools'
+  'python2-sphinx' 'python2-tox' 'python2-virtualenv' 'python2-werkzeug' 'sed'
+  'snappy' 'socat' 'systemd' 'valgrind' 'xfsprogs' 'xmlstarlet' 'yasm'
+  'zlib' 'zstd')
+options=('emptydirs')
+source=("https://download.ceph.com/tarballs/${pkgbase}-${pkgver}.tar.gz"
+        'ceph.sysusers'
+        '0001-no-neon.patch'
+        'fix-ceph_disk-python-interpreter.patch'
+        'fix-or-disable-broken-tests.patch'
+        'fix-python2-paths.patch'
+        'remove-distro-version-detection.patch')
+sha512sums=('89b166dc4b58e0110ebe0147eef9f47e1090ccee01702b3f72cfbdca856d02bf03b2663de9e88c84b21a2a61f8f92211e217a05b8bdcf7d5de3158adbe49db88'
+            '4354001c1abd9a0c385ba7bd529e3638fb6660b6a88d4e49706d4ac21c81b8e829303a20fb5445730bdac18c4865efb10bc809c1cd56d743c12aa9a52e160049'
+            '603a360657b8f095fc1de995df19794d9ea7094560480a16f7199bac0cd372313216ad93c6c67a42dd4083240829fd6561545b89891966c7cb27f2f6c15e8a61'
+            '7abd94a333fb0d6c9f7156d69ed6d4bf123f0f3030407f4347209d677b282e5023664d43e74a21a27b7856d3493ae469a17ea8a810331c7266018cc34eee4841'
+            '40446e298ab6b735b149d26ac26d273d6e159c319bb79f112614f1d4933a5a2684007fc9a1d660c5d4a17075d8bac59019c6cc7e66d64d4e240a1a61454800ef'
+            'd5d9e8123833212f6cf0ecef209a5dd9b9a8ec70d780b5140884dc9f87690ec305fb2569c5d1da2b28deb05bd03caecc534acc9dc5ce7ec75e2580df4b5b2063'
+            'e2ed33e2ac37bfdb9597083388e1a87f10051e976033055d440b1a4bc2bd11148c29128fb9841771ca983c12fb36b343bcc04219dea87199321ceea9aa18b3cc')
+
+prepare() {
+  cd "${srcdir}/${pkgbase}-${pkgver}"
+  # apply patch from the source array (should be a pacman feature)
+  local filename
+  for filename in "${source[@]}"; do
+    if [[ "$filename" =~ \.patch$ ]]; then
+      msg2 "Applying patch ${filename##*/}"
+      patch -p1 -N -i "$srcdir/${filename##*/}"
+    fi
+  done
+
+  # remove tests that require root privileges
+  rm src/test/cli/ceph-authtool/cap*.t
+
+  # remove broken tests
+  rm src/test/cli/crushtool/build.t
+  rm -rf qa/btrfs
+  rm src/btrfs_ioc_test.c
+
+  # this test will try to perform btrfs operations when a btrfs mount
+  # is active on the build host, which will fail
+  if mount | grep 'type btrfs' &>/dev/null; then
+    sed -i '/run-tox-ceph-disk/d' src/test/CMakeLists.txt
+  fi
+}
+
+build() {
+  cd "${srcdir}/${pkgbase}-${pkgver}"
+
+  mkdir -p build
+  cd build
+
+  cmake \
+    -DCMAKE_INSTALL_PREFIX=/usr \
+    -DCMAKE_INSTALL_SYSCONFDIR=/etc \
+    -DCMAKE_INSTALL_SBINDIR=/usr/bin \
+    -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+    -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib \
+    -DWITH_BABELTRACE=OFF \
+    -DWITH_CEPHFS=ON \
+    -DWITH_FUSE=ON \
+    -DWITH_LTTNG=OFF \
+    -DWITH_LZ4=ON \
+    -DWITH_MGR=ON \
+    -DWITH_NSS=ON \
+    -DPYTHON_INCLUDE_DIR=/usr/include/python2.7 \
+    -DWITH_RADOSGW=ON \
+    -DWITH_RADOSGW_BEAST_FRONTEND=ON \
+    -DWITH_RDMA=OFF \
+    -DWITH_SSL=ON \
+    -DWITH_SYSTEM_BOOST=ON \
+    -DWITH_SYSTEMD=ON \
+    -DWITH_TESTS=ON \
+    -DWITH_XFS=ON \
+    -DENABLE_SHARED=ON \
+    ..
+
+  make -j3 all
+}
+
+check() {
+  cd "${srcdir}/${pkgbase}-${pkgver}/build"
+
+  export CTEST_PARALLEL_LEVEL="$(nproc)"
+  make check
+
+  # sometimes processes are not properly terminated...
+  for process in ceph-mon ceph-mgr ceph-osd; do
+    pkill -9 "$process" || true
+  done
+}
+
+package_ceph-libs() {
+  depends=('boost-libs' 'curl' 'glibc' 'keyutils' 'leveldb' 'libaio'
+    'libutil-linux' 'nss' 'python2' 'xfsprogs')
+
+  cd "${srcdir}/${pkgbase}-${pkgver}/build"
+
+  # main install
+  make DESTDIR="$pkgdir" install
+
+  # remove stuff that goes into the ceph package
+  rm -rf "${pkgdir}"/usr/lib/{ceph/mgr,systemd,sysusers.d,tmpfiles.d}
+  rm -rf "${pkgdir}/usr/share"
+  rm -rf "${pkgdir}/usr/sbin"
+  rm -rf "${pkgdir}/usr/bin"
+  rm -rf "${pkgdir}/etc"
+  rm -rf "${pkgdir}/var"
+}
+
+package_ceph() {
+  depends=('ceph-libs' 'boost-libs' 'curl' 'fuse2' 'glibc' 'gperftools'
+    'keyutils' 'leveldb' 'libaio' 'libsystemd' 'libutil-linux'
+    'lsb-release' 'ncurses' 'nss' 'python2' 'python2-cherrypy'
+    'python2-jinja' 'python2-pecan' 'python2-prettytable' 'python2-pyopenssl'
+    'python2-setuptools' 'python2-werkzeug' 'snappy' 'xfsprogs')
+
+  cd "${srcdir}/${pkgbase}-${pkgver}/build"
+
+  # main install
+  make DESTDIR="$pkgdir" install
+
+  # remove stuff that is in the ceph-libs package
+  find "${pkgdir}/usr/lib" -maxdepth 1 -type f -delete
+  find "${pkgdir}/usr/lib" -maxdepth 1 -type l -delete
+  find "${pkgdir}/usr/lib/ceph" -maxdepth 1 -type f -delete
+  find "${pkgdir}/usr/lib/ceph" -maxdepth 1 -type l -delete
+  rm -rf "${pkgdir}"/usr/lib/{ceph/{compressor,crypto,erasure-code},python2.7,rados-classes}
+  rm -rf "${pkgdir}/usr/include"
+
+  # install tmpfiles.d and sysusers.d stuff
+  install -Dm644 "${srcdir}/${pkgbase}-${pkgver}/systemd/ceph.tmpfiles.d" \
+    "${pkgdir}/usr/lib/tmpfiles.d/${pkgbase}.conf"
+  install -Dm644 "${srcdir}/ceph.sysusers" \
+    "${pkgdir}/usr/lib/sysusers.d/${pkgbase}.conf"
+
+  # remove debian init script
+  rm -rf "${pkgdir}/etc/init.d"
+
+  # fix sbin dir (cmake opt seems to have no effect)
+  mv "${pkgdir}"/usr/sbin/* "${pkgdir}/usr/bin/"
+  rm -rf "${pkgdir}/usr/sbin"
+
+  # remove drop.ceph.com ssh stuff
+  rm -f "${pkgdir}/usr/share/ceph/{{known_hosts,id_rsa}_drop.ceph.com,.pub}"
+
+  # fix bash completions path
+  install -d -m 755 "${pkgdir}/usr/share/bash-completion"
+  mv "$pkgdir"/{etc/bash_completion.d,usr/share/bash-completion/completions}
+
+  # fix EnvironmentFile location in systemd service files
+  sed -i 's|/etc/sysconfig/|/etc/conf.d/|g' "${pkgdir}"/usr/lib/systemd/system/*.service
+
+  # prepare some paths and set correct permissions
+  install -D -d -m750 -o   0 -g 340 "${pkgdir}/etc/ceph"
+  install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/log/ceph"
+  install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph"
+  install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/bootstrap-mds"
+  install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/bootstrap-osd"
+  install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/bootstrap-rgw"
+  install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/mon"
+  install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/mgr"
+  install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/osd"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/community/ceph/ceph.sysusers b/community/ceph/ceph.sysusers
new file mode 100644
index 000000000..0cf6e7a6b
--- /dev/null
+++ b/community/ceph/ceph.sysusers
@@ -0,0 +1 @@
+u ceph 340 - /run/ceph
diff --git a/community/ceph/fix-ceph_disk-python-interpreter.patch b/community/ceph/fix-ceph_disk-python-interpreter.patch
new file mode 100644
index 000000000..0d06ae432
--- /dev/null
+++ b/community/ceph/fix-ceph_disk-python-interpreter.patch
@@ -0,0 +1,8 @@
+--- a/src/ceph-disk/ceph_disk/main.py	2017-08-28 18:30:20.000000000 +0200
++++ b/src/ceph-disk/ceph_disk/main.py	2017-09-21 13:50:39.373573382 +0200
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python2
+ #
+ # Copyright (C) 2015, 2016, 2017 Red Hat <contact@redhat.com>
+ # Copyright (C) 2014 Inktank <info@inktank.com>
diff --git a/community/ceph/fix-or-disable-broken-tests.patch b/community/ceph/fix-or-disable-broken-tests.patch
new file mode 100644
index 000000000..4ff808969
--- /dev/null
+++ b/community/ceph/fix-or-disable-broken-tests.patch
@@ -0,0 +1,282 @@
+--- a/src/test/common/test_util.cc	2017-09-18 23:14:01.782825030 +0200
++++ b/src/test/common/test_util.cc	2017-09-19 10:27:45.926925114 +0200
+@@ -48,7 +48,7 @@
+ 
+ 
+   ASSERT_TRUE(sys_info.find("distro") != sys_info.end());
+-  ASSERT_TRUE(sys_info.find("distro_version") != sys_info.end());
++  //ASSERT_TRUE(sys_info.find("distro_version") != sys_info.end());
+   ASSERT_TRUE(sys_info.find("distro_description") != sys_info.end());
+ 
+   cct->put();
+--- a/src/script/subman	2017-08-28 18:30:20.000000000 +0200
++++ b/src/script/subman	2017-09-19 13:09:03.417286215 +0200
+@@ -11,7 +11,7 @@
+ for disk in disks:
+     for partition in disk.get('partition', []):
+         if partition.get('type') == 'data':
+-            df = subprocess.check_output("df --output=used " + partition['path'], shell=True)
++            df = subprocess.check_output("df --output=used " + partition['path'], shell=True).decode('utf-8')
+             used += int(re.findall('\d+', df)[0])
+ 
+ facts_file = os.environ.get("CEPH_FACTS_FILE", "/etc/rhsm/facts/ceph_usage.facts")
+--- a/src/test/CMakeLists.txt	2017-08-28 18:30:20.000000000 +0200
++++ b/src/test/CMakeLists.txt	2017-09-21 17:50:12.074504293 +0200
+@@ -572,7 +572,6 @@
+ #add_ceph_test(test_pidfile.sh ${CMAKE_CURRENT_SOURCE_DIR}/test_pidfile.sh)
+ 
+ add_ceph_test(test_subman.sh ${CMAKE_CURRENT_SOURCE_DIR}/test_subman.sh)
+-add_ceph_test(smoke.sh ${CMAKE_CURRENT_SOURCE_DIR}/smoke.sh)
+ add_ceph_test(unittest_bufferlist.sh ${CMAKE_SOURCE_DIR}/src/unittest_bufferlist.sh)
+ 
+ add_test(NAME run-tox-ceph-disk COMMAND bash ${CMAKE_SOURCE_DIR}/src/ceph-disk/run-tox.sh)
+--- a/src/test/common/CMakeLists.txt	2017-08-28 18:30:20.000000000 +0200
++++ b/src/test/common/CMakeLists.txt	2017-09-21 17:50:30.375079349 +0200
+@@ -42,13 +42,6 @@
+ add_ceph_unittest(unittest_prioritized_queue ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/unittest_prioritized_queue)
+ target_link_libraries(unittest_prioritized_queue global ${BLKID_LIBRARIES})
+ 
+-# unittest_mclock_priority_queue
+-add_executable(unittest_mclock_priority_queue EXCLUDE_FROM_ALL
+-  test_mclock_priority_queue.cc
+-  )
+-add_ceph_unittest(unittest_mclock_priority_queue ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/unittest_mclock_priority_queue)
+-target_link_libraries(unittest_mclock_priority_queue global ${BLKID_LIBRARIES} dmclock)
+-
+ # unittest_str_map
+ add_executable(unittest_str_map
+   test_str_map.cc
+--- a/src/test/encoding/CMakeLists.txt	2017-08-28 18:30:20.000000000 +0200
++++ b/src/test/encoding/CMakeLists.txt	2017-09-21 17:50:42.202117682 +0200
+@@ -1,4 +1,3 @@
+ # scripts
+-add_ceph_test(check-generated.sh ${CMAKE_CURRENT_SOURCE_DIR}/check-generated.sh)
+ add_ceph_test(readable.sh ${CMAKE_CURRENT_SOURCE_DIR}/readable.sh)
+ 
+--- a/src/test/run-cli-tests	2017-09-26 18:27:07.000000000 +0200
++++ b/src/test/run-cli-tests	2017-10-08 16:28:48.574708891 +0200
+@@ -1,7 +1,7 @@
+ #!/bin/sh
+ set -e
+ 
+-if ! command -v virtualenv >/dev/null; then
++if ! command -v virtualenv2 >/dev/null; then
+     echo "$0: virtualenv not installed, skipping python-using tests." 1>&2
+     exit 1
+ fi
+@@ -30,7 +30,7 @@
+     # patched cram to support that. See upstream ticket at
+     # https://bitbucket.org/brodie/cram/issue/9/allow-read-only-directories-for-t
+     # -- tv@inktank.com
+-    virtualenv "$VENV" && $VENV/bin/pip --log "$VENV"/log.txt install "$SRCDIR/downloads/cram-0.5.0ceph.2011-01-14.tar.gz"
++    virtualenv2 "$VENV" && $VENV/bin/pip --log "$VENV"/log.txt install "$SRCDIR/downloads/cram-0.5.0ceph.2011-01-14.tar.gz"
+ fi
+ 
+ SRCDIR_ABS="$(readlink -f "$SRCDIR")"
+--- a/src/test/pybind/test_ceph_argparse.py	2017-09-26 18:27:07.000000000 +0200
++++ b/src/test/pybind/test_ceph_argparse.py	2017-10-08 16:50:49.060831801 +0200
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env nosetests 
++#!/usr/bin/env nosetests2
+ # -*- mode:python; tab-width:4; indent-tabs-mode:t; coding:utf-8 -*-
+ # vim: ts=4 sw=4 smarttab expandtab fileencoding=utf-8
+ #
+--- a/src/test/pybind/test_ceph_daemon.py	2017-09-26 18:27:07.000000000 +0200
++++ b/src/test/pybind/test_ceph_daemon.py	2017-10-08 16:50:58.341131927 +0200
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env nosetests
++#!/usr/bin/env nosetests2
+ # -*- mode:python; tab-width:4; indent-tabs-mode:t -*-
+ # vim: ts=4 sw=4 smarttab expandtab
+ #
+--- a/qa/standalone/ceph-helpers.sh	2017-09-26 18:27:07.000000000 +0200
++++ b/qa/standalone/ceph-helpers.sh	2017-10-10 16:41:58.095364616 +0200
+@@ -158,7 +158,7 @@
+     kill_daemons $dir KILL
+     if [ `uname` != FreeBSD ] \
+         && [ $(stat -f -c '%T' .) == "btrfs" ]; then
+-        __teardown_btrfs $dir
++      true
+     fi
+     local cores="no"
+     local pattern="$(sysctl -n $KERNCORE)"
+@@ -194,12 +194,7 @@
+ }
+ 
+ function __teardown_btrfs() {
+-    local btrfs_base_dir=$1
+-    local btrfs_root=$(df -P . | tail -1 | awk '{print $NF}')
+-    local btrfs_dirs=$(cd $btrfs_base_dir; sudo btrfs subvolume list . -t | awk '/^[0-9]/ {print $4}' | grep "$btrfs_base_dir/$btrfs_dir")
+-    for subvolume in $btrfs_dirs; do
+-       sudo btrfs subvolume delete $btrfs_root/$subvolume
+-    done
++	true
+ }
+ 
+ function test_teardown() {
+--- a/src/ceph-disk/run-tox.sh	2017-09-26 18:27:07.000000000 +0200
++++ b/src/ceph-disk/run-tox.sh	2017-10-10 18:52:33.542561990 +0200
+@@ -30,4 +30,4 @@
+ fi
+ 
+ source ${CEPH_DISK_VIRTUALENV}/bin/activate
+-tox -c ${TOX_PATH}
++tox2 -c ${TOX_PATH}
+--- a/qa/workunits/rbd/run_devstack_tempest.sh	2017-09-26 18:27:07.000000000 +0200
++++ b/qa/workunits/rbd/run_devstack_tempest.sh	2017-10-10 18:53:33.564468674 +0200
+@@ -119,4 +119,4 @@
+ chmod -R o+rx ${STACK_OPT_PATH}/devstack/files
+ 
+ cd ${STACK_OPT_PATH}/tempest
+-sudo -H -u ${TEMPEST_USER} tox -eall-plugin -- '(?!.*\[.*\bslow\b.*\])(^tempest\.(api|scenario)|(^cinder\.tests.tempest))' --concurrency=3
++sudo -H -u ${TEMPEST_USER} tox2 -eall-plugin -- '(?!.*\[.*\bslow\b.*\])(^tempest\.(api|scenario)|(^cinder\.tests.tempest))' --concurrency=3
+--- a/src/test/filestore/TestFileStore.cc	2017-09-26 18:27:07.000000000 +0200
++++ b/src/test/filestore/TestFileStore.cc	2017-10-10 20:31:36.325983555 +0200
+@@ -36,13 +36,6 @@
+     ASSERT_EQ(pm["filestore_backend"], "generic");
+   }
+ #if defined(__linux__)
+-  {
+-    map<string,string> pm;
+-    FileStore fs(g_ceph_context, "a", "b");
+-    TestFileStore::create_backend(fs, BTRFS_SUPER_MAGIC);
+-    fs.collect_metadata(&pm);
+-    ASSERT_EQ(pm["filestore_backend"], "btrfs");
+-  }
+ # ifdef HAVE_LIBXFS
+   {
+     map<string,string> pm;
+--- a/src/test/cli/osdmaptool/ceph.conf.withracks	2017-09-26 18:27:07.000000000 +0200
++++ b/src/test/cli/osdmaptool/ceph.conf.withracks	2017-10-10 21:30:49.230389707 +0200
+@@ -42,8 +42,8 @@
+   keyring = /mnt/osd.$id/keyring
+   osd data = /mnt/osd.$id
+   osd journal = /dev/disk/by-label/osd.$id.journal
+-  osd mkfs type = btrfs
+-  osd mount options btrfs = rw,noatime
++  osd mkfs type = xfs
++  osd mount options xfs = rw,noatime
+   devs = /dev/disk/by-label/osd.$id.data
+ ; temp sage
+   debug osd = 20
+--- a/src/spdk/test/iscsi_tgt/filesystem/filesystem.sh	2017-04-13 06:05:24.000000000 +0200
++++ b/src/spdk/test/iscsi_tgt/filesystem/filesystem.sh	2017-10-10 21:33:09.084930640 +0200
+@@ -61,7 +61,7 @@
+ parted -s /dev/$dev mkpart primary '0%' '100%'
+ sleep 1
+ 
+-for fstype in "ext4" "btrfs" "xfs"; do
++for fstype in "ext4" "xfs"; do
+ 
+ 	if [ "$fstype" == "ext4" ]; then
+ 		mkfs.${fstype} -F /dev/${dev}1
+--- a/src/spdk/test/nvmf/filesystem/filesystem.sh	2017-04-13 06:05:24.000000000 +0200
++++ b/src/spdk/test/nvmf/filesystem/filesystem.sh	2017-10-10 21:33:26.258820759 +0200
+@@ -48,7 +48,7 @@
+ 	timing_exit parted
+ 	sleep 1
+ 
+-	for fstype in "ext4" "btrfs" "xfs"; do
++	for fstype in "ext4" "xfs"; do
+ 		timing_enter $fstype
+ 		if [ $fstype = ext4 ]; then
+ 			force=-F
+--- a/src/ceph.conf.twoosds	2017-09-26 18:27:07.000000000 +0200
++++ b/src/ceph.conf.twoosds	2017-10-10 21:34:13.160340506 +0200
+@@ -72,8 +72,8 @@
+ ;	osd journal = /mnt/osd$id/journal
+ ;	osd journal size = 1000
+ 	osd journal = "/dev/disk/by-path/pci-0000:05:02.0-scsi-6:0:0:0"
+-        osd mkfs type = btrfs
+-	osd mount options btrfs = "flushoncommit,usertrans"
++        osd mkfs type = xfs
++	osd mount options xfs = "flushoncommit,usertrans"
+ ;	filestore max sync interval = 1
+ 
+ 	devs = "/dev/disk/by-path/pci-0000:05:01.0-scsi-2:0:0:0"
+--- a/src/ceph-disk/tests/ceph-disk.sh	2017-09-26 18:27:07.000000000 +0200
++++ b/src/ceph-disk/tests/ceph-disk.sh	2017-10-10 21:35:26.386044372 +0200
+@@ -72,8 +72,7 @@
+     kill_daemons $dir
+     if [ `uname` != FreeBSD ] && \
+        [ $(stat -f -c '%T' .) == "btrfs" ]; then
+-        rm -fr $dir/*/*db
+-        __teardown_btrfs $dir
++      true
+     fi
+     grep " $(pwd)/$dir/" < ${PROCDIR}/proc/mounts | while read mounted rest ; do
+         umount $mounted
+--- a/qa/run_xfstests.sh	2017-09-26 18:27:07.000000000 +0200
++++ b/qa/run_xfstests.sh	2017-10-10 22:18:49.663141392 +0200
+@@ -81,7 +81,7 @@
+ 	arg_count 1 $#
+ 
+ 	case "$1" in
+-		xfs|ext4|btrfs)	return 0 ;;
++		xfs|ext4)	return 0 ;;
+ 		*)		return 1 ;;
+ 	esac
+ }
+@@ -120,7 +120,7 @@
+ 	echo "        -c or --count" >&2
+ 	echo "            iteration count (1 or more)" >&2
+ 	echo "        -f or --fs-type" >&2
+-	echo "            one of: xfs, ext4, btrfs" >&2
++	echo "            one of: xfs, ext4" >&2
+ 	echo "            (default fs-type: xfs)" >&2
+ 	echo "        -r or --randomize" >&2
+ 	echo "            randomize test order" >&2
+@@ -132,7 +132,7 @@
+ 	echo "            name of file with list of tests to skip" >&2
+ 	echo "    tests:" >&2
+ 	echo "        list of test numbers, e.g.:" >&2
+-	echo "            generic/001 xfs/008 shared/032 btrfs/009" >&2
++	echo "            generic/001 xfs/008 shared/032" >&2
+ 	echo "        or possibly an xfstests test group, e.g.:" >&2
+ 	echo "            -g quick" >&2
+ 	echo "        (default tests: -g auto)" >&2
+@@ -235,7 +235,6 @@
+ 	case "${FSTYP}" in
+ 		xfs)	options="-f" ;;
+ 		ext4)	options="-F" ;;
+-		btrfs)	options="-f" ;;
+ 	esac
+ 
+ 	"mkfs.${FSTYP}" ${options} "${dev}" ||
+--- a/qa/run_xfstests-obsolete.sh	2017-09-26 18:27:07.000000000 +0200
++++ b/qa/run_xfstests-obsolete.sh	2017-10-10 22:19:27.027675395 +0200
+@@ -125,7 +125,7 @@
+ 	arg_count 1 $#
+ 
+ 	case "$1" in
+-		xfs|ext4|btrfs)	return 0 ;;
++		xfs|ext4)	return 0 ;;
+ 		*)		return 1 ;;
+ 	esac
+ }
+@@ -157,7 +157,7 @@
+ 	echo "        -c or --count" >&2
+ 	echo "            iteration count (1 or more)" >&2
+ 	echo "        -f or --fs-type" >&2
+-	echo "            one of: xfs, ext4, btrfs" >&2
++	echo "            one of: xfs, ext4" >&2
+ 	echo "            (default fs-type: xfs)" >&2
+ 	echo "        -s or --scratch-dev     (REQUIRED)" >&2
+ 	echo "            name of device used for scratch filesystem" >&2
+@@ -262,7 +262,7 @@
+ # Filesystem-specific mkfs options--set if not supplied
+ export XFS_MKFS_OPTIONS="${XFS_MKFS_OPTIONS:--f -l su=65536}"
+ export EXT4_MKFS_OPTIONS="${EXT4_MKFS_OPTIONS:--F}"
+-export BTRFS_MKFS_OPTION	# No defaults
++unset BTRFS_MKFS_OPTION	# No defaults
+ 
+ XFSTESTS_DIR="/var/lib/xfstests"	# Where the tests live
+ 
+@@ -348,7 +348,6 @@
+ 	case "${FSTYP}" in
+ 		xfs)	options="${XFS_MKFS_OPTIONS}" ;;
+ 		ext4)	options="${EXT4_MKFS_OPTIONS}" ;;
+-		btrfs)	options="${BTRFS_MKFS_OPTIONS}" ;;
+ 	esac
+ 
+ 	"mkfs.${FSTYP}" ${options} "${dev}" ||
diff --git a/community/ceph/fix-python2-paths.patch b/community/ceph/fix-python2-paths.patch
new file mode 100644
index 000000000..9fee3c2b5
--- /dev/null
+++ b/community/ceph/fix-python2-paths.patch
@@ -0,0 +1,52 @@
+--- a/CMakeLists.txt	2017-09-26 18:27:07.000000000 +0200
++++ b/CMakeLists.txt	2017-10-06 14:10:11.032378659 +0200
+@@ -63,7 +63,7 @@
+ option(WITH_MANPAGE "Build man pages." ON)
+ if(WITH_MANPAGE)
+   find_program(SPHINX_BUILD
+-    sphinx-build)
++    sphinx-build2)
+   if(NOT SPHINX_BUILD)
+     message(FATAL_ERROR "Can't find sphinx-build.")
+   endif(NOT SPHINX_BUILD)
+--- a/src/tools/setup-virtualenv.sh	2017-09-26 18:27:07.000000000 +0200
++++ b/src/tools/setup-virtualenv.sh	2017-10-06 15:02:01.736664556 +0200
+@@ -18,10 +18,10 @@
+ DIR=$1
+ rm -fr $DIR
+ mkdir -p $DIR
+-virtualenv --python python2.7 $DIR
++virtualenv2 --python python2.7 $DIR
+ . $DIR/bin/activate
+ 
+-if pip --help | grep -q disable-pip-version-check; then
++if pip2 --help | grep -q disable-pip-version-check; then
+     DISABLE_PIP_VERSION_CHECK=--disable-pip-version-check
+ else
+     DISABLE_PIP_VERSION_CHECK=
+@@ -29,12 +29,12 @@
+ 
+ # older versions of pip will not install wrap_console scripts
+ # when using wheel packages
+-pip $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install --upgrade 'pip >= 6.1'
++pip2 $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install --upgrade 'pip >= 6.1'
+ 
+ # workaround of https://github.com/pypa/setuptools/issues/1042
+-pip $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install --upgrade "setuptools < 36"
++pip2 $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install --upgrade "setuptools < 36"
+ 
+-if pip --help | grep -q disable-pip-version-check; then
++if pip2 --help | grep -q disable-pip-version-check; then
+     DISABLE_PIP_VERSION_CHECK=--disable-pip-version-check
+ else
+     DISABLE_PIP_VERSION_CHECK=
+@@ -44,7 +44,7 @@
+     export NO_INDEX=--no-index
+ fi
+ 
+-pip $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install $NO_INDEX --use-wheel --find-links=file://$(pwd)/wheelhouse 'tox >=1.9'
++pip2 $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install $NO_INDEX --use-wheel --find-links=file://$(pwd)/wheelhouse 'tox >=1.9'
+ if test -f requirements.txt ; then
+-    pip $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install $NO_INDEX --use-wheel --find-links=file://$(pwd)/wheelhouse -r requirements.txt
++    pip2 $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install $NO_INDEX --use-wheel --find-links=file://$(pwd)/wheelhouse -r requirements.txt
+ fi
diff --git a/community/ceph/fix-sphinx-binary-name.patch b/community/ceph/fix-sphinx-binary-name.patch
new file mode 100644
index 000000000..66e37df8b
--- /dev/null
+++ b/community/ceph/fix-sphinx-binary-name.patch
@@ -0,0 +1,11 @@
+--- a/CMakeLists.txt	2017-09-26 18:27:07.000000000 +0200
++++ b/CMakeLists.txt	2017-10-06 14:10:11.032378659 +0200
+@@ -63,7 +63,7 @@
+ option(WITH_MANPAGE "Build man pages." ON)
+ if(WITH_MANPAGE)
+   find_program(SPHINX_BUILD
+-    sphinx-build)
++    sphinx-build2)
+   if(NOT SPHINX_BUILD)
+     message(FATAL_ERROR "Can't find sphinx-build.")
+   endif(NOT SPHINX_BUILD)
diff --git a/community/ceph/remove-distro-version-detection.patch b/community/ceph/remove-distro-version-detection.patch
new file mode 100644
index 000000000..bd2093be2
--- /dev/null
+++ b/community/ceph/remove-distro-version-detection.patch
@@ -0,0 +1,21 @@
+--- a/src/common/util.cc	2017-09-26 18:27:07.000000000 +0200
++++ b/src/common/util.cc	2017-10-05 15:58:14.852647976 +0200
+@@ -158,8 +158,7 @@
+ {
+   static const map<string, string> kvm = {
+     { "distro", "ID=" },
+-    { "distro_description", "PRETTY_NAME=" },
+-    { "distro_version", "VERSION_ID=" }
++    { "distro_description", "PRETTY_NAME=" }
+   };
+ 
+   FILE *fp = fopen("/etc/os-release", "r");
+@@ -182,7 +181,7 @@
+     lderr(cct) << "distro_detect - /etc/os-release is required" << dendl;
+   }
+ 
+-  for (const char* rk: {"distro", "distro_version"}) {
++  for (const char* rk: {"distro"}) {
+     if (m->find(rk) == m->end())
+       lderr(cct) << "distro_detect - can't detect " << rk << dendl;
+   }
diff --git a/extra/ceph/01-ceph-detec-init.patch b/extra/ceph/01-ceph-detec-init.patch
deleted file mode 100644
index 42b44065f..000000000
--- a/extra/ceph/01-ceph-detec-init.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-commit c19cb3cd2756ba830edd92158a2913beaa6e24aa
-Author: Sébastien Luttringer <seblu@seblu.net>
-Date:   Sun Mar 26 16:35:13 2017 +0200
-
-    Arch support
-
-diff --git a/src/ceph-detect-init/ceph_detect_init/__init__.py b/src/ceph-detect-init/ceph_detect_init/__init__.py
-index a2bcc7cf27..ca2f2d7975 100644
---- a/src/ceph-detect-init/ceph_detect_init/__init__.py
-+++ b/src/ceph-detect-init/ceph_detect_init/__init__.py
-@@ -13,6 +13,7 @@
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- # GNU Library Public License for more details.
- #
-+from ceph_detect_init import arch
- from ceph_detect_init import centos
- from ceph_detect_init import debian
- from ceph_detect_init import exc
-@@ -21,6 +22,7 @@ from ceph_detect_init import rhel
- from ceph_detect_init import suse
- import logging
- import platform
-+import os
- 
- 
- def get(use_rhceph=False):
-@@ -49,6 +51,7 @@ def _get_distro(distro, use_rhceph=False):
- 
-     distro = _normalized_distro_name(distro)
-     distributions = {
-+        'arch': arch,
-         'debian': debian,
-         'ubuntu': debian,
-         'linuxmint': debian,
-@@ -75,6 +78,8 @@ def _normalized_distro_name(distro):
-         return 'suse'
-     elif distro.startswith('centos'):
-         return 'centos'
-+    elif distro.startswith('arch'):
-+        return 'arch'
-     return distro
- 
- 
-@@ -103,6 +108,8 @@ def platform_information():
-             else:
-                 codename = major
- 
-+    elif os.path.exists("/etc/arch-release"):
-+        return ("arch", None, "arch")
-     return (
-         str(distro).rstrip(),
-         str(release).rstrip(),
-diff --git a/src/ceph-detect-init/ceph_detect_init/arch/__init__.py b/src/ceph-detect-init/ceph_detect_init/arch/__init__.py
-new file mode 100644
-index 0000000000..425ce50bb2
---- /dev/null
-+++ b/src/ceph-detect-init/ceph_detect_init/arch/__init__.py
-@@ -0,0 +1,11 @@
-+distro = None
-+release = None
-+codename = None
-+
-+
-+def choose_init():
-+    """Select a init system
-+
-+    Returns the name of a init system (upstart, sysvinit ...).
-+    """
-+    return 'systemd'
diff --git a/extra/ceph/PKGBUILD b/extra/ceph/PKGBUILD
deleted file mode 100644
index af8fcb353..000000000
--- a/extra/ceph/PKGBUILD
+++ /dev/null
@@ -1,106 +0,0 @@
-# $Id$
-# Maintainer: Sébastien "Seblu" Luttringer <seblu@archlinux.org>
-
-# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
-#  - patch to remove neon detection in configure
-#  - add 32bit ARM to the xfs.h fix
-#  - make -j3, RAM constraints
-
-highmem=1
-
-pkgname=ceph
-pkgver=10.2.9
-pkgrel=1
-pkgdesc='Distributed, fault-tolerant storage platform delivering object, block, and file system'
-arch=('x86_64' 'i686')
-url='https://ceph.com/'
-license=('GPL')
-makedepends=('boost' 'systemd' 'xfsprogs' 'python2-sphinx' 'cython2' 'sed')
-depends=('boost-libs' 'curl' 'expat' 'fcgi' 'fuse2' 'gcc-libs' 'glibc'
-  'gperftools' 'keyutils' 'leveldb' 'libaio' 'libatomic_ops' 'libedit'
-  'libsystemd' 'libutil-linux' 'ncurses' 'nss' 'python2' 'snappy'
-  'python2-setuptools' 'xfsprogs')
-options=('emptydirs')
-source=("https://download.ceph.com/tarballs/$pkgname-$pkgver.tar.gz"
-        'ceph.sysusers'
-        '01-ceph-detec-init.patch'
-        'no-neon.diff')
-md5sums=('eff6db61b3befb686e0693befa1f076a'
-         'b3e24e3aa005a657ab475f84bfe3291a'
-         'da25c78ae413dc134cc99fe9818f6ff1'
-         'd75fe7ff3125dd2df43fee6410700dda')
-
-prepare() {
-  cd $pkgname-$pkgver
-  # apply patch from the source array (should be a pacman feature)
-  local filename
-  for filename in "${source[@]}"; do
-    if [[ "$filename" =~ \.patch$ ]]; then
-      msg2 "Applying patch ${filename##*/}"
-      patch -p1 -N -i "$srcdir/${filename##*/}"
-    fi
-  done
-  :
-}
-
-build() {
-  cd $pkgname-$pkgver
-  # fix xfs.h failure in configure on i686
-  [[ $CARCH == i686 || $CARCH == arm || $CARCH == armv6h || $CARCH == armv7h ]] && export CXXFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64"
-  # don't use autotools for ceph-disk, ceph-detect and tests
-  sed -ri 's,include (ceph-disk|ceph-detect-init|test)/Makefile.am,,' src/Makefile.am
-  # regen configure
-  ./autogen.sh
-  # fix python-config binary name
-  sed -i 's,python-config,python2-config,g' configure
-  # drop neon checks
-  patch -p1 -i ../no-neon.diff
-  ./configure \
-    --prefix=/usr \
-    --sbindir=/usr/bin \
-    --libexecdir=/usr/lib \
-    --sysconfdir=/etc \
-    --localstatedir=/var \
-    --with-man-pages \
-    --without-radosgw \
-    --without-openldap \
-    PYTHON=/usr/bin/python2 \
-    CYTHON_CHECK=yes \
-    PYTHON_CONFIG_CHECK=yes \
-    SPHINX_BUILD=sphinx-build2
-  make -j3
-}
-
-package() {
-  cd $pkgname-$pkgver
-
-  # main install
-  make DESTDIR="$pkgdir" install
-
-  # ceph-disk
-  pushd src/ceph-disk
-  python2 setup.py install --root "$pkgdir" --prefix=/usr
-  popd
-
-  # ceph-detect-init
-  pushd src/ceph-detect-init
-  python2 setup.py install --root "$pkgdir" --prefix=/usr
-  popd
-
-  # systemd stuff
-  install -Dm644 systemd/ceph.tmpfiles.d "$pkgdir/usr/lib/tmpfiles.d/$pkgname.conf"
-  install -Dm644 "$srcdir"/ceph.sysusers "$pkgdir/usr/lib/sysusers.d/$pkgname.conf"
-
-  # fix bash completions path
-  msg2 'Fix bash completion path'
-  install -d -m 755 "$pkgdir"/usr/share/bash-completion
-  mv "$pkgdir"/{etc/bash_completion.d,usr/share/bash-completion/completions}
-
-  # fix python2 shebang, did not do it in prepare() anymore because it
-  # confuse automake
-  msg2 'Fix python2 shebang'
-  find "$pkgdir" -type f -executable -exec \
-    sed -i '1s,^#! \?/usr/bin/\(env \|\)python$,#!/usr/bin/python2,' {} \;
-}
-
-# vim:set ts=2 sw=2 et:
diff --git a/extra/ceph/ceph.sysusers b/extra/ceph/ceph.sysusers
deleted file mode 100644
index 01dea498c..000000000
--- a/extra/ceph/ceph.sysusers
+++ /dev/null
@@ -1 +0,0 @@
-u ceph - - /run/ceph
diff --git a/extra/ceph/no-neon.diff b/extra/ceph/no-neon.diff
deleted file mode 100644
index c610d5440..000000000
--- a/extra/ceph/no-neon.diff
+++ /dev/null
@@ -1,55 +0,0 @@
-diff -urN a/configure b/configure
---- a/configure	2016-12-09 13:09:49.000000000 -0700
-+++ b/configure	2017-03-31 18:28:40.998404499 -0600
-@@ -22270,51 +22270,6 @@
- 
- 
-   case $target_cpu in
--    arm*)
--      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -mfpu=neon" >&5
--$as_echo_n "checking whether C compiler accepts -mfpu=neon... " >&6; }
--if ${ax_cv_check_cflags___mfpu_neon+:} false; then :
--  $as_echo_n "(cached) " >&6
--else
--
--  ax_check_save_flags=$CFLAGS
--  CFLAGS="$CFLAGS  -mfpu=neon"
--  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
--/* end confdefs.h.  */
--
--int
--main ()
--{
--
--  ;
--  return 0;
--}
--_ACEOF
--if ac_fn_c_try_compile "$LINENO"; then :
--  ax_cv_check_cflags___mfpu_neon=yes
--else
--  ax_cv_check_cflags___mfpu_neon=no
--fi
--rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
--  CFLAGS=$ax_check_save_flags
--fi
--{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___mfpu_neon" >&5
--$as_echo "$ax_cv_check_cflags___mfpu_neon" >&6; }
--if test x"$ax_cv_check_cflags___mfpu_neon" = xyes; then :
--  ax_cv_support_neon_ext=yes
--else
--  :
--fi
--
--      if test x"$ax_cv_support_neon_ext" = x"yes"; then
--        ARM_NEON_FLAGS="-mfpu=neon -DARM_NEON"
--
--        ARM_FLAGS="$ARM_FLAGS $ARM_NEON_FLAGS"
--
--$as_echo "#define HAVE_NEON /**/" >>confdefs.h
--
--      fi
--    ;;
-     aarch64*)
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -march=armv8-a" >&5
- $as_echo_n "checking whether C compiler accepts -march=armv8-a... " >&6; }