[Pkg-ceph-commits] [ceph-dkms] 01/07: Initial commit

Dmitry Smirnov onlyjob at moszumanska.debian.org
Thu May 8 20:10:24 UTC 2014


This is an automated email from the git hooks/post-receive script.

onlyjob pushed a commit to branch master
in repository ceph-dkms.

commit d159130
Author: Dmitry Smirnov <onlyjob at member.fsf.org>
Date:   Wed May 7 21:26:20 2014

    Initial commit
---
 debian/Makefile                  |   15 +
 debian/README.Debian             |   16 +
 debian/changelog                 |    5 +
 debian/compat                    |    1 +
 debian/control                   |   25 +
 debian/copyright                 |   65 ++
 debian/dkms                      |   18 +
 debian/patches/out-of-tree.patch | 1739 ++++++++++++++++++++++++++++++++++++++
 debian/patches/series            |    1 +
 debian/rules                     |   73 ++
 debian/source/format             |    1 +
 debian/watch                     |    9 +
 12 files changed, 1968 insertions(+)

diff --git a/debian/Makefile b/debian/Makefile
new file mode 100644
index 0000000..b79bdc6
--- /dev/null
+++ b/debian/Makefile
@@ -0,0 +1,15 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+#
+# Makefile for Ceph FS and RBD kernel device drivers.
+#
+
+all:
+	KERNELDIR=$(KERNELDIR) $(MAKE) -C libceph
+	KERNELDIR=$(KERNELDIR) $(MAKE) -C ceph
+	KERNELDIR=$(KERNELDIR) $(MAKE) -C rbd
+
+clean:
+	$(MAKE) -C libceph clean
+	$(MAKE) -C ceph    clean
+	$(MAKE) -C rbd     clean
diff --git a/debian/README.Debian b/debian/README.Debian
new file mode 100644
index 0000000..0057d88
--- /dev/null
+++ b/debian/README.Debian
@@ -0,0 +1,16 @@
+Note that modules
+
+    libceph
+      ceph
+      rbd
+
+are also shipped with Linux kernel.
+Modules are not re-loaded automatically.
+To use new modules reboot or unload in-kernel modules using `modprobe`:
+
+    modprobe -vr ceph
+    modprobe -vr rbd
+    modprobe -vr libceph
+
+Usually there is no need to manually load modules as Ceph scripts do it
+automatically.
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..a42b724
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,5 @@
+ceph-dkms (0+git20140429-1) unstable; urgency=low
+
+  * Initial release (Closes: #______).
+
+ -- Dmitry Smirnov <onlyjob at debian.org>  Wed, 07 May 2014 11:22:53 +1000
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..ec63514
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+9
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..da2c58c
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,25 @@
+Source: ceph-dkms
+Section: kernel
+Priority: optional
+Maintainer: Ceph Maintainers <ceph-maintainers at lists.ceph.com>
+Uploaders: Dmitry Smirnov <onlyjob at debian.org>
+Build-Depends: debhelper (>= 9), dkms
+Standards-Version: 3.9.5
+Homepage: https://github.com/ceph/ceph-client
+Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-ceph/ceph-dkms.git
+Vcs-Git: git://anonscm.debian.org/pkg-ceph/ceph-dkms.git
+
+Package: ceph-dkms
+Architecture: all
+Depends: ${misc:Depends}
+Suggests: ceph-common
+Description: Ceph FS and RBD Linux kernel drivers (DKMS version)
+ DKMS drivers allow to use Ceph file system and RBD devices with jerasure
+ pools that natively supported only by Linux kernel 3.15+.
+ .
+ This package provides DKMS kernel modules for Linux Kernel 3.13+.
+ .
+ Ceph is a scalable distributed storage system; RBD is a block device
+ striped across multiple distributed objects in RADOS, a reliable,
+ autonomic distributed object storage cluster developed as part of the Ceph
+ distributed storage system.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..e272d71
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,65 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: ceph-client
+Source: https://github.com/ceph/ceph-client
+
+Files: *
+Copyright: 2004-2014 Sage Weil <sage at newdream.net>
+           2013      Adfin Solutions, Inc.
+           2013      Guangliang Zhao, <lucienchao at gmail.com>
+           2009      Red Hat, Inc.
+License: GPL-2
+
+Files: rbd/rbd_types.h:
+Copyright: 2004-2010 Sage Weil <sage at newdream.net>
+License: LGPL-2.1
+
+Files: debian/*
+Copyright: 2014 Dmitry Smirnov <onlyjob at debian.org>
+License: GPL-2+
+
+License: GPL-2
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; under version 2 of the License.
+ .
+ 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 General Public License for more details.
+ .
+ The complete text of the GNU General Public License version 2
+ can be found in "/usr/share/common-licenses/GPL-2".
+
+License: GPL-2+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+ .
+ 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 General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ .
+ The complete text of the GNU General Public License version 2
+ can be found in "/usr/share/common-licenses/GPL-2".
+
+License: LGPL-2.1
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License version 2.1 as published by the Free Software Foundation.
+ .
+ This library 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.
+ .
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ .
+ The complete text of the GNU Lesser General Public License
+ can be found in "/usr/share/common-licenses/LGPL-2.1".
diff --git a/debian/dkms b/debian/dkms
new file mode 100644
index 0000000..d6de97e
--- /dev/null
+++ b/debian/dkms
@@ -0,0 +1,18 @@
+PACKAGE_NAME="ceph"
+PACKAGE_VERSION="#MODULE_VERSION#"
+AUTOINSTALL="yes"
+REMAKE_INITRD="no"
+
+MAKE="KERNELDIR=$kernel_source_dir make V=1"
+
+BUILT_MODULE_NAME[0]="ceph"
+BUILT_MODULE_LOCATION[0]="ceph"
+DEST_MODULE_LOCATION[0]="/updates"
+
+BUILT_MODULE_NAME[1]="rbd"
+BUILT_MODULE_LOCATION[1]="rbd"
+DEST_MODULE_LOCATION[1]="/updates"
+
+BUILT_MODULE_NAME[2]="libceph"
+BUILT_MODULE_LOCATION[2]="libceph"
+DEST_MODULE_LOCATION[2]="/updates"
diff --git a/debian/patches/out-of-tree.patch b/debian/patches/out-of-tree.patch
new file mode 100644
index 0000000..002c98a
--- /dev/null
+++ b/debian/patches/out-of-tree.patch
@@ -0,0 +1,1739 @@
+Last-Update: 2014-05-07
+Forwarded: not-needed
+Author: Dmitry Smirnov <onlyjob at member.fsf.org>
+Description: adaptation to build modules outside of kernel tree (e.g. for DKMS)
+
+--- a/linux/ceph/libceph.h
++++ b/linux/ceph/libceph.h
+@@ -1,8 +1,8 @@
+ #ifndef _FS_CEPH_LIBCEPH_H
+ #define _FS_CEPH_LIBCEPH_H
+ 
+-#include <linux/ceph/ceph_debug.h>
++#include "ceph_debug.h"
+ 
+ #include <asm/unaligned.h>
+ #include <linux/backing-dev.h>
+ #include <linux/completion.h>
+@@ -14,14 +14,14 @@
+ #include <linux/wait.h>
+ #include <linux/writeback.h>
+ #include <linux/slab.h>
+ 
+-#include <linux/ceph/types.h>
+-#include <linux/ceph/messenger.h>
+-#include <linux/ceph/msgpool.h>
+-#include <linux/ceph/mon_client.h>
+-#include <linux/ceph/osd_client.h>
+-#include <linux/ceph/ceph_fs.h>
++#include "types.h"
++#include "messenger.h"
++#include "msgpool.h"
++#include "mon_client.h"
++#include "osd_client.h"
++#include "ceph_fs.h"
+ 
+ /*
+  * mount options
+  */
+--- a/rbd/rbd.c
++++ b/rbd/rbd.c
+@@ -27,12 +27,12 @@
+                  Documentation/ABI/testing/sysfs-bus-rbd
+ 
+  */
+ 
+-#include <linux/ceph/libceph.h>
+-#include <linux/ceph/osd_client.h>
+-#include <linux/ceph/mon_client.h>
+-#include <linux/ceph/decode.h>
++#include "../linux/ceph/libceph.h"
++#include "../linux/ceph/osd_client.h"
++#include "../linux/ceph/mon_client.h"
++#include "../linux/ceph/decode.h"
+ #include <linux/parser.h>
+ #include <linux/bsearch.h>
+ 
+ #include <linux/kernel.h>
+--- a/linux/ceph/decode.h
++++ b/linux/ceph/decode.h
+@@ -5,9 +5,9 @@
+ #include <linux/bug.h>
+ #include <linux/time.h>
+ #include <asm/unaligned.h>
+ 
+-#include <linux/ceph/types.h>
++#include "types.h"
+ 
+ /*
+  * in all cases,
+  *   void **p     pointer to position pointer
+--- a/linux/ceph/mon_client.h
++++ b/linux/ceph/mon_client.h
+@@ -4,9 +4,9 @@
+ #include <linux/completion.h>
+ #include <linux/kref.h>
+ #include <linux/rbtree.h>
+ 
+-#include <linux/ceph/messenger.h>
++#include "messenger.h"
+ 
+ struct ceph_client;
+ struct ceph_mount_args;
+ struct ceph_auth_client;
+--- a/linux/ceph/osd_client.h
++++ b/linux/ceph/osd_client.h
+@@ -5,13 +5,13 @@
+ #include <linux/kref.h>
+ #include <linux/mempool.h>
+ #include <linux/rbtree.h>
+ 
+-#include <linux/ceph/types.h>
+-#include <linux/ceph/osdmap.h>
+-#include <linux/ceph/messenger.h>
+-#include <linux/ceph/auth.h>
+-#include <linux/ceph/pagelist.h>
++#include "types.h"
++#include "osdmap.h"
++#include "messenger.h"
++#include "auth.h"
++#include "pagelist.h"
+ 
+ struct ceph_msg;
+ struct ceph_snap_context;
+ struct ceph_osd_request;
+--- a/linux/ceph/auth.h
++++ b/linux/ceph/auth.h
+@@ -1,9 +1,9 @@
+ #ifndef _FS_CEPH_AUTH_H
+ #define _FS_CEPH_AUTH_H
+ 
+-#include <linux/ceph/types.h>
+-#include <linux/ceph/buffer.h>
++#include "types.h"
++#include "buffer.h"
+ 
+ /*
+  * Abstract interface for communicating with the authenticate module.
+  * There is some handshake that takes place between us and the monitor
+--- a/linux/ceph/ceph_fs.h
++++ b/linux/ceph/ceph_fs.h
+@@ -11,10 +11,10 @@
+ 
+ #ifndef CEPH_FS_H
+ #define CEPH_FS_H
+ 
+-#include <linux/ceph/msgr.h>
+-#include <linux/ceph/rados.h>
++#include "msgr.h"
++#include "rados.h"
+ 
+ /*
+  * subprotocol versions.  when specific messages types or high-level
+  * protocols change, bump the affected components.  we keep rev
+--- a/linux/ceph/debugfs.h
++++ b/linux/ceph/debugfs.h
+@@ -1,9 +1,9 @@
+ #ifndef _FS_CEPH_DEBUGFS_H
+ #define _FS_CEPH_DEBUGFS_H
+ 
+-#include <linux/ceph/ceph_debug.h>
+-#include <linux/ceph/types.h>
++#include "ceph_debug.h"
++#include "types.h"
+ 
+ #define CEPH_DEFINE_SHOW_FUNC(name)					\
+ static int name##_open(struct inode *inode, struct file *file)		\
+ {									\
+--- a/linux/ceph/mdsmap.h
++++ b/linux/ceph/mdsmap.h
+@@ -1,9 +1,9 @@
+ #ifndef _FS_CEPH_MDSMAP_H
+ #define _FS_CEPH_MDSMAP_H
+ 
+ #include <linux/bug.h>
+-#include <linux/ceph/types.h>
++#include "types.h"
+ 
+ /*
+  * mds map - describe servers in the mds cluster.
+  *
+--- a/linux/ceph/messenger.h
++++ b/linux/ceph/messenger.h
+@@ -8,10 +8,10 @@
+ #include <linux/radix-tree.h>
+ #include <linux/uio.h>
+ #include <linux/workqueue.h>
+ 
+-#include <linux/ceph/types.h>
+-#include <linux/ceph/buffer.h>
++#include "types.h"
++#include "buffer.h"
+ 
+ struct ceph_msg;
+ struct ceph_connection;
+ 
+--- a/linux/ceph/msgpool.h
++++ b/linux/ceph/msgpool.h
+@@ -1,9 +1,9 @@
+ #ifndef _FS_CEPH_MSGPOOL
+ #define _FS_CEPH_MSGPOOL
+ 
+ #include <linux/mempool.h>
+-#include <linux/ceph/messenger.h>
++#include "messenger.h"
+ 
+ /*
+  * we use memory pools for preallocating messages we may receive, to
+  * avoid unexpected OOM conditions.
+--- a/linux/ceph/osdmap.h
++++ b/linux/ceph/osdmap.h
+@@ -1,12 +1,12 @@
+ #ifndef _FS_CEPH_OSDMAP_H
+ #define _FS_CEPH_OSDMAP_H
+ 
+ #include <linux/rbtree.h>
+-#include <linux/ceph/types.h>
+-#include <linux/ceph/decode.h>
+-#include <linux/ceph/ceph_fs.h>
+-#include <linux/crush/crush.h>
++#include "types.h"
++#include "decode.h"
++#include "ceph_fs.h"
++#include "../crush/crush.h"
+ 
+ /*
+  * The osd map describes the current membership of the osd cluster and
+  * specifies the mapping of objects to placement groups and placement
+--- a/linux/ceph/rados.h
++++ b/linux/ceph/rados.h
+@@ -5,9 +5,9 @@
+  * Data types for the Ceph distributed object storage layer RADOS
+  * (Reliable Autonomic Distributed Object Store).
+  */
+ 
+-#include <linux/ceph/msgr.h>
++#include "msgr.h"
+ 
+ /*
+  * fs id
+  */
+--- a/linux/ceph/types.h
++++ b/linux/ceph/types.h
+@@ -6,11 +6,11 @@
+ #include <linux/types.h>
+ #include <linux/fcntl.h>
+ #include <linux/string.h>
+ 
+-#include <linux/ceph/ceph_fs.h>
+-#include <linux/ceph/ceph_frag.h>
+-#include <linux/ceph/ceph_hash.h>
++#include "ceph_fs.h"
++#include "ceph_frag.h"
++#include "ceph_hash.h"
+ 
+ /*
+  * Identify inodes by both their ino AND snapshot id (a u64).
+  */
+--- a/linux/crush/mapper.h
++++ b/linux/crush/mapper.h
+@@ -7,9 +7,9 @@
+  *
+  * LGPL2
+  */
+ 
+-#include <linux/crush/crush.h>
++#include "crush.h"
+ 
+ extern int crush_find_rule(const struct crush_map *map, int ruleset, int type, int size);
+ extern int crush_do_rule(const struct crush_map *map,
+ 			 int ruleno,
+--- a/ceph/acl.c
++++ b/ceph/acl.c
+@@ -17,9 +17,9 @@
+  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+  * Boston, MA 021110-1307, USA.
+  */
+ 
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ #include <linux/fs.h>
+ #include <linux/string.h>
+ #include <linux/xattr.h>
+ #include <linux/posix_acl_xattr.h>
+--- a/ceph/addr.c
++++ b/ceph/addr.c
+@@ -1,5 +1,5 @@
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/backing-dev.h>
+ #include <linux/fs.h>
+ #include <linux/mm.h>
+@@ -11,9 +11,9 @@
+ 
+ #include "super.h"
+ #include "mds_client.h"
+ #include "cache.h"
+-#include <linux/ceph/osd_client.h>
++#include "../linux/ceph/osd_client.h"
+ 
+ /*
+  * Ceph address space ops.
+  *
+--- a/ceph/caps.c
++++ b/ceph/caps.c
+@@ -1,5 +1,5 @@
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/fs.h>
+ #include <linux/kernel.h>
+ #include <linux/sched.h>
+@@ -10,10 +10,10 @@
+ 
+ #include "super.h"
+ #include "mds_client.h"
+ #include "cache.h"
+-#include <linux/ceph/decode.h>
+-#include <linux/ceph/messenger.h>
++#include "../linux/ceph/decode.h"
++#include "../linux/ceph/messenger.h"
+ 
+ /*
+  * Capability management
+  *
+--- a/ceph/ceph_frag.c
++++ b/ceph/ceph_frag.c
+@@ -1,9 +1,9 @@
+ /*
+  * Ceph 'frag' type
+  */
+ #include <linux/module.h>
+-#include <linux/ceph/types.h>
++#include "../linux/ceph/types.h"
+ 
+ int ceph_frag_compare(__u32 a, __u32 b)
+ {
+ 	unsigned va = ceph_frag_value(a);
+--- a/ceph/debugfs.c
++++ b/ceph/debugfs.c
+@@ -1,17 +1,17 @@
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/device.h>
+ #include <linux/slab.h>
+ #include <linux/module.h>
+ #include <linux/ctype.h>
+ #include <linux/debugfs.h>
+ #include <linux/seq_file.h>
+ 
+-#include <linux/ceph/libceph.h>
+-#include <linux/ceph/mon_client.h>
+-#include <linux/ceph/auth.h>
+-#include <linux/ceph/debugfs.h>
++#include "../linux/ceph/libceph.h"
++#include "../linux/ceph/mon_client.h"
++#include "../linux/ceph/auth.h"
++#include "../linux/ceph/debugfs.h"
+ 
+ #include "super.h"
+ 
+ #ifdef CONFIG_DEBUG_FS
+--- a/ceph/dir.c
++++ b/ceph/dir.c
+@@ -1,5 +1,5 @@
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/spinlock.h>
+ #include <linux/fs_struct.h>
+ #include <linux/namei.h>
+--- a/ceph/export.c
++++ b/ceph/export.c
+@@ -1,5 +1,5 @@
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/exportfs.h>
+ #include <linux/slab.h>
+ #include <asm/unaligned.h>
+--- a/ceph/file.c
++++ b/ceph/file.c
+@@ -1,5 +1,5 @@
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/module.h>
+ #include <linux/sched.h>
+ #include <linux/slab.h>
+--- a/ceph/inode.c
++++ b/ceph/inode.c
+@@ -1,5 +1,5 @@
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/module.h>
+ #include <linux/fs.h>
+ #include <linux/slab.h>
+@@ -13,9 +13,9 @@
+ 
+ #include "super.h"
+ #include "mds_client.h"
+ #include "cache.h"
+-#include <linux/ceph/decode.h>
++#include "../linux/ceph/decode.h"
+ 
+ /*
+  * Ceph inode operations
+  *
+--- a/ceph/ioctl.c
++++ b/ceph/ioctl.c
+@@ -1,9 +1,9 @@
+ #include <linux/in.h>
+ 
+ #include "super.h"
+ #include "mds_client.h"
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include "ioctl.h"
+ 
+ 
+--- a/ceph/locks.c
++++ b/ceph/locks.c
+@@ -1,13 +1,13 @@
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/file.h>
+ #include <linux/namei.h>
+ #include <linux/random.h>
+ 
+ #include "super.h"
+ #include "mds_client.h"
+-#include <linux/ceph/pagelist.h>
++#include "../linux/ceph/pagelist.h"
+ 
+ static u64 lock_secret;
+ 
+ static inline u64 secure_addr(void *addr)
+--- a/ceph/mds_client.c
++++ b/ceph/mds_client.c
+@@ -1,5 +1,5 @@
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/fs.h>
+ #include <linux/wait.h>
+ #include <linux/slab.h>
+@@ -10,14 +10,14 @@
+ 
+ #include "super.h"
+ #include "mds_client.h"
+ 
+-#include <linux/ceph/ceph_features.h>
+-#include <linux/ceph/messenger.h>
+-#include <linux/ceph/decode.h>
+-#include <linux/ceph/pagelist.h>
+-#include <linux/ceph/auth.h>
+-#include <linux/ceph/debugfs.h>
++#include "../linux/ceph/ceph_features.h"
++#include "../linux/ceph/messenger.h"
++#include "../linux/ceph/decode.h"
++#include "../linux/ceph/pagelist.h"
++#include "../linux/ceph/auth.h"
++#include "../linux/ceph/debugfs.h"
+ 
+ /*
+  * A cluster of MDS (metadata server) daemons is responsible for
+  * managing the file system namespace (the directory hierarchy and
+--- a/ceph/mds_client.h
++++ b/ceph/mds_client.h
+@@ -7,12 +7,12 @@
+ #include <linux/mutex.h>
+ #include <linux/rbtree.h>
+ #include <linux/spinlock.h>
+ 
+-#include <linux/ceph/types.h>
+-#include <linux/ceph/messenger.h>
+-#include <linux/ceph/mdsmap.h>
+-#include <linux/ceph/auth.h>
++#include "../linux/ceph/types.h"
++#include "../linux/ceph/messenger.h"
++#include "../linux/ceph/mdsmap.h"
++#include "../linux/ceph/auth.h"
+ 
+ /*
+  * Some lock dependencies:
+  *
+--- a/ceph/mdsmap.c
++++ b/ceph/mdsmap.c
+@@ -1,15 +1,15 @@
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/bug.h>
+ #include <linux/err.h>
+ #include <linux/random.h>
+ #include <linux/slab.h>
+ #include <linux/types.h>
+ 
+-#include <linux/ceph/mdsmap.h>
+-#include <linux/ceph/messenger.h>
+-#include <linux/ceph/decode.h>
++#include "../linux/ceph/mdsmap.h"
++#include "../linux/ceph/messenger.h"
++#include "../linux/ceph/decode.h"
+ 
+ #include "super.h"
+ 
+ 
+--- a/ceph/snap.c
++++ b/ceph/snap.c
+@@ -1,13 +1,13 @@
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/sort.h>
+ #include <linux/slab.h>
+ 
+ #include "super.h"
+ #include "mds_client.h"
+ 
+-#include <linux/ceph/decode.h>
++#include "../linux/ceph/decode.h"
+ 
+ /*
+  * Snapshots in ceph are driven in large part by cooperation from the
+  * client.  In contrast to local file systems or file servers that
+--- a/ceph/strings.c
++++ b/ceph/strings.c
+@@ -1,9 +1,9 @@
+ /*
+  * Ceph fs string constants
+  */
+ #include <linux/module.h>
+-#include <linux/ceph/types.h>
++#include "../linux/ceph/types.h"
+ 
+ 
+ const char *ceph_mds_state_name(int s)
+ {
+--- a/ceph/super.c
++++ b/ceph/super.c
+@@ -1,6 +1,6 @@
+ 
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/backing-dev.h>
+ #include <linux/ctype.h>
+ #include <linux/fs.h>
+@@ -18,13 +18,13 @@
+ #include "super.h"
+ #include "mds_client.h"
+ #include "cache.h"
+ 
+-#include <linux/ceph/ceph_features.h>
+-#include <linux/ceph/decode.h>
+-#include <linux/ceph/mon_client.h>
+-#include <linux/ceph/auth.h>
+-#include <linux/ceph/debugfs.h>
++#include "../linux/ceph/ceph_features.h"
++#include "../linux/ceph/decode.h"
++#include "../linux/ceph/mon_client.h"
++#include "../linux/ceph/auth.h"
++#include "../linux/ceph/debugfs.h"
+ 
+ /*
+  * Ceph superblock operations
+  *
+--- a/ceph/super.h
++++ b/ceph/super.h
+@@ -1,8 +1,8 @@
+ #ifndef _FS_CEPH_SUPER_H
+ #define _FS_CEPH_SUPER_H
+ 
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <asm/unaligned.h>
+ #include <linux/backing-dev.h>
+ #include <linux/completion.h>
+@@ -14,9 +14,9 @@
+ #include <linux/writeback.h>
+ #include <linux/slab.h>
+ #include <linux/posix_acl.h>
+ 
+-#include <linux/ceph/libceph.h>
++#include "../linux/ceph/libceph.h"
+ 
+ #ifdef CONFIG_CEPH_FSCACHE
+ #include <linux/fscache.h>
+ #endif
+--- a/ceph/xattr.c
++++ b/ceph/xattr.c
+@@ -1,5 +1,5 @@
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include "super.h"
+ #include "mds_client.h"
+ 
+--- a/ceph/Makefile
++++ b/ceph/Makefile
+@@ -1,8 +1,9 @@
+ #
+ # Makefile for CEPH filesystem.
+ #
+ 
++ifneq ($(KERNELRELEASE),)
+ obj-$(CONFIG_CEPH_FS) += ceph.o
+ 
+ ceph-y := super.o inode.o dir.o file.o locks.o addr.o ioctl.o \
+ 	export.o caps.o snap.o xattr.o \
+@@ -10,4 +11,21 @@
+ 	debugfs.o
+ 
+ ceph-$(CONFIG_CEPH_FSCACHE) += cache.o
+ ceph-$(CONFIG_CEPH_FS_POSIX_ACL) += acl.o
++else
++
++KERNELRELEASE ?= $(shell uname -r)
++KERNELDIR ?= /lib/modules/$(KERNELRELEASE)/build
++
++default: all
++
++all:
++	$(MAKE) -C $(KERNELDIR) M=$(CURDIR) CONFIG_CEPH_FS=m CONFIG_CEPH_FS_POSIX_ACL=y modules
++
++modules_install:
++	$(MAKE) -C $(KERNELDIR) M=$(CURDIR) CONFIG_CEPH_FS=m CONFIG_CEPH_FS_POSIX_ACL=y modules_install
++
++clean:
++	$(MAKE) -C $(KERNELDIR) M=$(CURDIR) clean
++
++endif
+--- a/libceph/Makefile
++++ b/libceph/Makefile
+@@ -1,7 +1,9 @@
+ #
+-# Makefile for CEPH filesystem.
++# Makefile for libceph module.
+ #
++
++ifneq ($(KERNELRELEASE),)
+ obj-$(CONFIG_CEPH_LIB) += libceph.o
+ 
+ libceph-y := ceph_common.o messenger.o msgpool.o buffer.o pagelist.o \
+ 	mon_client.o \
+@@ -12,4 +14,21 @@
+ 	auth_x.o \
+ 	ceph_fs.o ceph_strings.o ceph_hash.o \
+ 	pagevec.o snapshot.o
+ 
++else
++
++KERNELRELEASE ?= $(shell uname -r)
++KERNELDIR ?= /lib/modules/$(KERNELRELEASE)/build
++
++default: all
++
++all:
++	$(MAKE) -C $(KERNELDIR) M=$(CURDIR) CONFIG_CEPH_LIB=m modules
++
++modules_install:
++	$(MAKE) -C $(KERNELDIR) M=$(CURDIR) CONFIG_CEPH_LIB=m modules_install
++
++clean:
++	$(MAKE) -C $(KERNELDIR) M=$(CURDIR) clean
++
++endif
+--- a/libceph/auth.c
++++ b/libceph/auth.c
+@@ -1,14 +1,14 @@
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/module.h>
+ #include <linux/err.h>
+ #include <linux/slab.h>
+ 
+-#include <linux/ceph/types.h>
+-#include <linux/ceph/decode.h>
+-#include <linux/ceph/libceph.h>
+-#include <linux/ceph/messenger.h>
++#include "../linux/ceph/types.h"
++#include "../linux/ceph/decode.h"
++#include "../linux/ceph/libceph.h"
++#include "../linux/ceph/messenger.h"
+ #include "auth_none.h"
+ #include "auth_x.h"
+ 
+ 
+--- a/libceph/auth_none.c
++++ b/libceph/auth_none.c
+@@ -1,14 +1,14 @@
+ 
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/err.h>
+ #include <linux/module.h>
+ #include <linux/random.h>
+ #include <linux/slab.h>
+ 
+-#include <linux/ceph/decode.h>
+-#include <linux/ceph/auth.h>
++#include "../linux/ceph/decode.h"
++#include "../linux/ceph/auth.h"
+ 
+ #include "auth_none.h"
+ 
+ static void reset(struct ceph_auth_client *ac)
+--- a/libceph/auth_none.h
++++ b/libceph/auth_none.h
+@@ -1,9 +1,9 @@
+ #ifndef _FS_CEPH_AUTH_NONE_H
+ #define _FS_CEPH_AUTH_NONE_H
+ 
+ #include <linux/slab.h>
+-#include <linux/ceph/auth.h>
++#include "../linux/ceph/auth.h"
+ 
+ /*
+  * null security mode.
+  *
+--- a/libceph/auth_x.c
++++ b/libceph/auth_x.c
+@@ -1,14 +1,14 @@
+ 
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/err.h>
+ #include <linux/module.h>
+ #include <linux/random.h>
+ #include <linux/slab.h>
+ 
+-#include <linux/ceph/decode.h>
+-#include <linux/ceph/auth.h>
++#include "../linux/ceph/decode.h"
++#include "../linux/ceph/auth.h"
+ 
+ #include "crypto.h"
+ #include "auth_x.h"
+ #include "auth_x_protocol.h"
+--- a/libceph/auth_x.h
++++ b/libceph/auth_x.h
+@@ -2,9 +2,9 @@
+ #define _FS_CEPH_AUTH_X_H
+ 
+ #include <linux/rbtree.h>
+ 
+-#include <linux/ceph/auth.h>
++#include "../linux/ceph/auth.h"
+ 
+ #include "crypto.h"
+ #include "auth_x_protocol.h"
+ 
+--- a/libceph/buffer.c
++++ b/libceph/buffer.c
+@@ -1,13 +1,13 @@
+ 
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/module.h>
+ #include <linux/slab.h>
+ 
+-#include <linux/ceph/buffer.h>
+-#include <linux/ceph/decode.h>
+-#include <linux/ceph/libceph.h> /* for ceph_kv{malloc,free} */
++#include "../linux/ceph/buffer.h"
++#include "../linux/ceph/decode.h"
++#include "../linux/ceph/libceph.h" /* for ceph_kv{malloc,free} */
+ 
+ struct ceph_buffer *ceph_buffer_new(size_t len, gfp_t gfp)
+ {
+ 	struct ceph_buffer *b;
+--- a/libceph/ceph_common.c
++++ b/libceph/ceph_common.c
+@@ -1,13 +1,13 @@
+ 
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ #include <linux/backing-dev.h>
+ #include <linux/ctype.h>
+ #include <linux/fs.h>
+ #include <linux/inet.h>
+ #include <linux/in6.h>
+ #include <linux/key.h>
+-#include <keys/ceph-type.h>
++#include "../keys/ceph-type.h"
+ #include <linux/module.h>
+ #include <linux/mount.h>
+ #include <linux/parser.h>
+ #include <linux/sched.h>
+@@ -19,14 +19,14 @@
+ #include <linux/nsproxy.h>
+ #include <net/net_namespace.h>
+ 
+ 
+-#include <linux/ceph/ceph_features.h>
+-#include <linux/ceph/libceph.h>
+-#include <linux/ceph/debugfs.h>
+-#include <linux/ceph/decode.h>
+-#include <linux/ceph/mon_client.h>
+-#include <linux/ceph/auth.h>
++#include "../linux/ceph/ceph_features.h"
++#include "../linux/ceph/libceph.h"
++#include "../linux/ceph/debugfs.h"
++#include "../linux/ceph/decode.h"
++#include "../linux/ceph/mon_client.h"
++#include "../linux/ceph/auth.h"
+ #include "crypto.h"
+ 
+ 
+ /*
+--- a/libceph/ceph_fs.c
++++ b/libceph/ceph_fs.c
+@@ -1,9 +1,9 @@
+ /*
+  * Some non-inline ceph helpers
+  */
+ #include <linux/module.h>
+-#include <linux/ceph/types.h>
++#include "../linux/ceph/types.h"
+ 
+ /*
+  * return true if @layout appears to be valid
+  */
+--- a/libceph/ceph_hash.c
++++ b/libceph/ceph_hash.c
+@@ -1,6 +1,6 @@
+ 
+-#include <linux/ceph/types.h>
++#include "../linux/ceph/types.h"
+ #include <linux/module.h>
+ 
+ /*
+  * Robert Jenkin's hash function.
+--- a/libceph/ceph_strings.c
++++ b/libceph/ceph_strings.c
+@@ -1,9 +1,9 @@
+ /*
+  * Ceph string constants
+  */
+ #include <linux/module.h>
+-#include <linux/ceph/types.h>
++#include "../linux/ceph/types.h"
+ 
+ const char *ceph_entity_type_name(int type)
+ {
+ 	switch (type) {
+--- a/libceph/crypto.c
++++ b/libceph/crypto.c
+@@ -1,15 +1,15 @@
+ 
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/err.h>
+ #include <linux/scatterlist.h>
+ #include <linux/slab.h>
+ #include <crypto/hash.h>
+ #include <linux/key-type.h>
+ 
+-#include <keys/ceph-type.h>
+-#include <linux/ceph/decode.h>
++#include "../keys/ceph-type.h"
++#include "../linux/ceph/decode.h"
+ #include "crypto.h"
+ 
+ int ceph_crypto_key_clone(struct ceph_crypto_key *dst,
+ 			  const struct ceph_crypto_key *src)
+--- a/libceph/crypto.h
++++ b/libceph/crypto.h
+@@ -1,9 +1,9 @@
+ #ifndef _FS_CEPH_CRYPTO_H
+ #define _FS_CEPH_CRYPTO_H
+ 
+-#include <linux/ceph/types.h>
+-#include <linux/ceph/buffer.h>
++#include "../linux/ceph/types.h"
++#include "../linux/ceph/buffer.h"
+ 
+ /*
+  * cryptographic secret
+  */
+--- a/libceph/debugfs.c
++++ b/libceph/debugfs.c
+@@ -1,17 +1,17 @@
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/device.h>
+ #include <linux/slab.h>
+ #include <linux/module.h>
+ #include <linux/ctype.h>
+ #include <linux/debugfs.h>
+ #include <linux/seq_file.h>
+ 
+-#include <linux/ceph/libceph.h>
+-#include <linux/ceph/mon_client.h>
+-#include <linux/ceph/auth.h>
+-#include <linux/ceph/debugfs.h>
++#include "../linux/ceph/libceph.h"
++#include "../linux/ceph/mon_client.h"
++#include "../linux/ceph/auth.h"
++#include "../linux/ceph/debugfs.h"
+ 
+ #ifdef CONFIG_DEBUG_FS
+ 
+ /*
+--- a/libceph/messenger.c
++++ b/libceph/messenger.c
+@@ -1,5 +1,5 @@
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/crc32c.h>
+ #include <linux/ctype.h>
+ #include <linux/highmem.h>
+@@ -14,13 +14,13 @@
+ #endif	/* CONFIG_BLOCK */
+ #include <linux/dns_resolver.h>
+ #include <net/tcp.h>
+ 
+-#include <linux/ceph/ceph_features.h>
+-#include <linux/ceph/libceph.h>
+-#include <linux/ceph/messenger.h>
+-#include <linux/ceph/decode.h>
+-#include <linux/ceph/pagelist.h>
++#include "../linux/ceph/ceph_features.h"
++#include "../linux/ceph/libceph.h"
++#include "../linux/ceph/messenger.h"
++#include "../linux/ceph/decode.h"
++#include "../linux/ceph/pagelist.h"
+ #include <linux/export.h>
+ 
+ #define list_entry_next(pos, member)					\
+ 	list_entry(pos->member.next, typeof(*pos), member)
+--- a/libceph/mon_client.c
++++ b/libceph/mon_client.c
+@@ -1,17 +1,17 @@
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/module.h>
+ #include <linux/types.h>
+ #include <linux/slab.h>
+ #include <linux/random.h>
+ #include <linux/sched.h>
+ 
+-#include <linux/ceph/mon_client.h>
+-#include <linux/ceph/libceph.h>
+-#include <linux/ceph/debugfs.h>
+-#include <linux/ceph/decode.h>
+-#include <linux/ceph/auth.h>
++#include "../linux/ceph/mon_client.h"
++#include "../linux/ceph/libceph.h"
++#include "../linux/ceph/debugfs.h"
++#include "../linux/ceph/decode.h"
++#include "../linux/ceph/auth.h"
+ 
+ /*
+  * Interact with Ceph monitor cluster.  Handle requests for new map
+  * versions, and periodically resend as needed.  Also implement
+--- a/libceph/msgpool.c
++++ b/libceph/msgpool.c
+@@ -1,12 +1,12 @@
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/err.h>
+ #include <linux/sched.h>
+ #include <linux/types.h>
+ #include <linux/vmalloc.h>
+ 
+-#include <linux/ceph/msgpool.h>
++#include "../linux/ceph/msgpool.h"
+ 
+ static void *msgpool_alloc(gfp_t gfp_mask, void *arg)
+ {
+ 	struct ceph_msgpool *pool = arg;
+--- a/libceph/osd_client.c
++++ b/libceph/osd_client.c
+@@ -1,6 +1,6 @@
+ 
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/module.h>
+ #include <linux/err.h>
+ #include <linux/highmem.h>
+@@ -11,14 +11,14 @@
+ #ifdef CONFIG_BLOCK
+ #include <linux/bio.h>
+ #endif
+ 
+-#include <linux/ceph/libceph.h>
+-#include <linux/ceph/osd_client.h>
+-#include <linux/ceph/messenger.h>
+-#include <linux/ceph/decode.h>
+-#include <linux/ceph/auth.h>
+-#include <linux/ceph/pagelist.h>
++#include "../linux/ceph/libceph.h"
++#include "../linux/ceph/osd_client.h"
++#include "../linux/ceph/messenger.h"
++#include "../linux/ceph/decode.h"
++#include "../linux/ceph/auth.h"
++#include "../linux/ceph/pagelist.h"
+ 
+ #define OSD_OP_FRONT_LEN	4096
+ #define OSD_OPREPLY_FRONT_LEN	512
+ 
+--- a/libceph/osdmap.c
++++ b/libceph/osdmap.c
+@@ -1,16 +1,16 @@
+ 
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/module.h>
+ #include <linux/slab.h>
+ #include <asm/div64.h>
+ 
+-#include <linux/ceph/libceph.h>
+-#include <linux/ceph/osdmap.h>
+-#include <linux/ceph/decode.h>
+-#include <linux/crush/hash.h>
+-#include <linux/crush/mapper.h>
++#include "../linux/ceph/libceph.h"
++#include "../linux/ceph/osdmap.h"
++#include "../linux/ceph/decode.h"
++#include "../linux/crush/hash.h"
++#include "../linux/crush/mapper.h"
+ 
+ char *ceph_osdmap_state_str(char *str, int len, int state)
+ {
+ 	if (!len)
+--- a/libceph/pagelist.c
++++ b/libceph/pagelist.c
+@@ -1,9 +1,9 @@
+ #include <linux/module.h>
+ #include <linux/gfp.h>
+ #include <linux/pagemap.h>
+ #include <linux/highmem.h>
+-#include <linux/ceph/pagelist.h>
++#include "../linux/ceph/pagelist.h"
+ 
+ static void ceph_pagelist_unmap_tail(struct ceph_pagelist *pl)
+ {
+ 	if (pl->mapped_tail) {
+--- a/libceph/pagevec.c
++++ b/libceph/pagevec.c
+@@ -1,14 +1,14 @@
+-#include <linux/ceph/ceph_debug.h>
++#include "../linux/ceph/ceph_debug.h"
+ 
+ #include <linux/module.h>
+ #include <linux/sched.h>
+ #include <linux/slab.h>
+ #include <linux/file.h>
+ #include <linux/namei.h>
+ #include <linux/writeback.h>
+ 
+-#include <linux/ceph/libceph.h>
++#include "../linux/ceph/libceph.h"
+ 
+ /*
+  * build a vector of user pages
+  */
+--- a/libceph/snapshot.c
++++ b/libceph/snapshot.c
+@@ -21,9 +21,9 @@
+ #include <stddef.h>
+ 
+ #include <linux/types.h>
+ #include <linux/export.h>
+-#include <linux/ceph/libceph.h>
++#include "../linux/ceph/libceph.h"
+ 
+ /*
+  * Ceph snapshot contexts are reference counted objects, and the
+  * returned structure holds a single reference.  Acquire additional
+--- a/libceph/crush/crush.c
++++ b/libceph/crush/crush.c
+@@ -7,9 +7,9 @@
+ # define kfree(x) do { if (x) free(x); } while (0)
+ # define BUG_ON(x) assert(!(x))
+ #endif
+ 
+-#include <linux/crush/crush.h>
++#include "../../linux/crush/crush.h"
+ 
+ const char *crush_bucket_alg_name(int alg)
+ {
+ 	switch (alg) {
+--- a/libceph/crush/hash.c
++++ b/libceph/crush/hash.c
+@@ -1,7 +1,7 @@
+ 
+ #include <linux/types.h>
+-#include <linux/crush/hash.h>
++#include "../../linux/crush/hash.h"
+ 
+ /*
+  * Robert Jenkins' function for mixing 32-bit values
+  * http://burtleburtle.net/bob/hash/evahash.html
+--- a/libceph/crush/mapper.c
++++ b/libceph/crush/mapper.c
+@@ -17,11 +17,11 @@
+ # define kmalloc(x, f) malloc(x)
+ # define kfree(x) free(x)
+ #endif
+ 
+-#include <linux/crush/crush.h>
+-#include <linux/crush/hash.h>
+-#include <linux/crush/mapper.h>
++#include "../../linux/crush/crush.h"
++#include "../../linux/crush/hash.h"
++#include "../../linux/crush/mapper.h"
+ 
+ /*
+  * Implement the core CRUSH mapping algorithm.
+  */
+--- a/rbd/Kconfig
++++ b/rbd/Kconfig
+@@ -1,536 +1,8 @@
+ #
+-# Block device driver configuration
++# Rados block device driver configuration
+ #
+ 
+-menuconfig BLK_DEV
+-	bool "Block devices"
+-	depends on BLOCK
+-	default y
+-	---help---
+-	  Say Y here to get to see options for various different block device
+-	  drivers. This option alone does not add any kernel code.
+-
+-	  If you say N, all options in this submenu will be skipped and disabled;
+-	  only do this if you know what you are doing.
+-
+-if BLK_DEV
+-
+-config BLK_DEV_NULL_BLK
+-	tristate "Null test block driver"
+-
+-config BLK_DEV_FD
+-	tristate "Normal floppy disk support"
+-	depends on ARCH_MAY_HAVE_PC_FDC
+-	---help---
+-	  If you want to use the floppy disk drive(s) of your PC under Linux,
+-	  say Y. Information about this driver, especially important for IBM
+-	  Thinkpad users, is contained in
+-	  <file:Documentation/blockdev/floppy.txt>.
+-	  That file also contains the location of the Floppy driver FAQ as
+-	  well as location of the fdutils package used to configure additional
+-	  parameters of the driver at run time.
+-
+-	  To compile this driver as a module, choose M here: the
+-	  module will be called floppy.
+-
+-config AMIGA_FLOPPY
+-	tristate "Amiga floppy support"
+-	depends on AMIGA
+-
+-config ATARI_FLOPPY
+-	tristate "Atari floppy support"
+-	depends on ATARI
+-
+-config MAC_FLOPPY
+-	tristate "Support for PowerMac floppy"
+-	depends on PPC_PMAC && !PPC_PMAC64
+-	help
+-	  If you have a SWIM-3 (Super Woz Integrated Machine 3; from Apple)
+-	  floppy controller, say Y here. Most commonly found in PowerMacs.
+-
+-config BLK_DEV_SWIM
+-	tristate "Support for SWIM Macintosh floppy"
+-	depends on M68K && MAC
+-	help
+-	  You should select this option if you want floppy support
+-	  and you don't have a II, IIfx, Q900, Q950 or AV series.
+-
+-config AMIGA_Z2RAM
+-	tristate "Amiga Zorro II ramdisk support"
+-	depends on ZORRO
+-	help
+-	  This enables support for using Chip RAM and Zorro II RAM as a
+-	  ramdisk or as a swap partition. Say Y if you want to include this
+-	  driver in the kernel.
+-
+-	  To compile this driver as a module, choose M here: the
+-	  module will be called z2ram.
+-
+-config GDROM
+-	tristate "SEGA Dreamcast GD-ROM drive"
+-	depends on SH_DREAMCAST
+-	help
+-	  A standard SEGA Dreamcast comes with a modified CD ROM drive called a
+-	  "GD-ROM" by SEGA to signify it is capable of reading special disks
+-	  with up to 1 GB of data. This drive will also read standard CD ROM
+-	  disks. Select this option to access any disks in your GD ROM drive.
+-	  Most users will want to say "Y" here.
+-	  You can also build this as a module which will be called gdrom.
+-
+-config PARIDE
+-	tristate "Parallel port IDE device support"
+-	depends on PARPORT_PC
+-	---help---
+-	  There are many external CD-ROM and disk devices that connect through
+-	  your computer's parallel port. Most of them are actually IDE devices
+-	  using a parallel port IDE adapter. This option enables the PARIDE
+-	  subsystem which contains drivers for many of these external drives.
+-	  Read <file:Documentation/blockdev/paride.txt> for more information.
+-
+-	  If you have said Y to the "Parallel-port support" configuration
+-	  option, you may share a single port between your printer and other
+-	  parallel port devices. Answer Y to build PARIDE support into your
+-	  kernel, or M if you would like to build it as a loadable module. If
+-	  your parallel port support is in a loadable module, you must build
+-	  PARIDE as a module. If you built PARIDE support into your kernel,
+-	  you may still build the individual protocol modules and high-level
+-	  drivers as loadable modules. If you build this support as a module,
+-	  it will be called paride.
+-
+-	  To use the PARIDE support, you must say Y or M here and also to at
+-	  least one high-level driver (e.g. "Parallel port IDE disks",
+-	  "Parallel port ATAPI CD-ROMs", "Parallel port ATAPI disks" etc.) and
+-	  to at least one protocol driver (e.g. "ATEN EH-100 protocol",
+-	  "MicroSolutions backpack protocol", "DataStor Commuter protocol"
+-	  etc.).
+-
+-source "drivers/block/paride/Kconfig"
+-
+-source "drivers/block/mtip32xx/Kconfig"
+-
+-source "drivers/block/zram/Kconfig"
+-
+-config BLK_CPQ_DA
+-	tristate "Compaq SMART2 support"
+-	depends on PCI && VIRT_TO_BUS && 0
+-	help
+-	  This is the driver for Compaq Smart Array controllers.  Everyone
+-	  using these boards should say Y here.  See the file
+-	  <file:Documentation/blockdev/cpqarray.txt> for the current list of
+-	  boards supported by this driver, and for further information on the
+-	  use of this driver.
+-
+-config BLK_CPQ_CISS_DA
+-	tristate "Compaq Smart Array 5xxx support"
+-	depends on PCI
+-	select CHECK_SIGNATURE
+-	help
+-	  This is the driver for Compaq Smart Array 5xxx controllers.
+-	  Everyone using these boards should say Y here.
+-	  See <file:Documentation/blockdev/cciss.txt> for the current list of
+-	  boards supported by this driver, and for further information
+-	  on the use of this driver.
+-
+-config CISS_SCSI_TAPE
+-	bool "SCSI tape drive support for Smart Array 5xxx"
+-	depends on BLK_CPQ_CISS_DA && PROC_FS
+-	depends on SCSI=y || SCSI=BLK_CPQ_CISS_DA
+-	help
+-	  When enabled (Y), this option allows SCSI tape drives and SCSI medium
+-	  changers (tape robots) to be accessed via a Compaq 5xxx array 
+-	  controller.  (See <file:Documentation/blockdev/cciss.txt> for more details.)
+-
+-	  "SCSI support" and "SCSI tape support" must also be enabled for this 
+-	  option to work.
+-
+-	  When this option is disabled (N), the SCSI portion of the driver 
+-	  is not compiled.
+-
+-config BLK_DEV_DAC960
+-	tristate "Mylex DAC960/DAC1100 PCI RAID Controller support"
+-	depends on PCI
+-	help
+-	  This driver adds support for the Mylex DAC960, AcceleRAID, and
+-	  eXtremeRAID PCI RAID controllers.  See the file
+-	  <file:Documentation/blockdev/README.DAC960> for further information
+-	  about this driver.
+-
+-	  To compile this driver as a module, choose M here: the
+-	  module will be called DAC960.
+-
+-config BLK_DEV_UMEM
+-	tristate "Micro Memory MM5415 Battery Backed RAM support"
+-	depends on PCI
+-	---help---
+-	  Saying Y here will include support for the MM5415 family of
+-	  battery backed (Non-volatile) RAM cards.
+-	  <http://www.umem.com/>
+-
+-	  The cards appear as block devices that can be partitioned into
+-	  as many as 15 partitions.
+-
+-	  To compile this driver as a module, choose M here: the
+-	  module will be called umem.
+-
+-	  The umem driver has not yet been allocated a MAJOR number, so
+-	  one is chosen dynamically.
+-
+-config BLK_DEV_UBD
+-	bool "Virtual block device"
+-	depends on UML
+-	---help---
+-          The User-Mode Linux port includes a driver called UBD which will let
+-          you access arbitrary files on the host computer as block devices.
+-          Unless you know that you do not need such virtual block devices say
+-          Y here.
+-
+-config BLK_DEV_UBD_SYNC
+-	bool "Always do synchronous disk IO for UBD"
+-	depends on BLK_DEV_UBD
+-	---help---
+-	  Writes to the virtual block device are not immediately written to the
+-	  host's disk; this may cause problems if, for example, the User-Mode
+-	  Linux 'Virtual Machine' uses a journalling filesystem and the host
+-	  computer crashes.
+-
+-          Synchronous operation (i.e. always writing data to the host's disk
+-          immediately) is configurable on a per-UBD basis by using a special
+-          kernel command line option.  Alternatively, you can say Y here to
+-          turn on synchronous operation by default for all block devices.
+-
+-          If you're running a journalling file system (like reiserfs, for
+-          example) in your virtual machine, you will want to say Y here.  If
+-          you care for the safety of the data in your virtual machine, Y is a
+-          wise choice too.  In all other cases (for example, if you're just
+-          playing around with User-Mode Linux) you can choose N.
+-
+-config BLK_DEV_COW_COMMON
+-	bool
+-	default BLK_DEV_UBD
+-
+-config BLK_DEV_LOOP
+-	tristate "Loopback device support"
+-	---help---
+-	  Saying Y here will allow you to use a regular file as a block
+-	  device; you can then create a file system on that block device and
+-	  mount it just as you would mount other block devices such as hard
+-	  drive partitions, CD-ROM drives or floppy drives. The loop devices
+-	  are block special device files with major number 7 and typically
+-	  called /dev/loop0, /dev/loop1 etc.
+-
+-	  This is useful if you want to check an ISO 9660 file system before
+-	  burning the CD, or if you want to use floppy images without first
+-	  writing them to floppy. Furthermore, some Linux distributions avoid
+-	  the need for a dedicated Linux partition by keeping their complete
+-	  root file system inside a DOS FAT file using this loop device
+-	  driver.
+-
+-	  To use the loop device, you need the losetup utility, found in the
+-	  util-linux package, see
+-	  <ftp://ftp.kernel.org/pub/linux/utils/util-linux/>.
+-
+-	  The loop device driver can also be used to "hide" a file system in
+-	  a disk partition, floppy, or regular file, either using encryption
+-	  (scrambling the data) or steganography (hiding the data in the low
+-	  bits of, say, a sound file). This is also safe if the file resides
+-	  on a remote file server.
+-
+-	  There are several ways of encrypting disks. Some of these require
+-	  kernel patches. The vanilla kernel offers the cryptoloop option
+-	  and a Device Mapper target (which is superior, as it supports all
+-	  file systems). If you want to use the cryptoloop, say Y to both
+-	  LOOP and CRYPTOLOOP, and make sure you have a recent (version 2.12
+-	  or later) version of util-linux. Additionally, be aware that
+-	  the cryptoloop is not safe for storing journaled filesystems.
+-
+-	  Note that this loop device has nothing to do with the loopback
+-	  device used for network connections from the machine to itself.
+-
+-	  To compile this driver as a module, choose M here: the
+-	  module will be called loop.
+-
+-	  Most users will answer N here.
+-
+-config BLK_DEV_LOOP_MIN_COUNT
+-	int "Number of loop devices to pre-create at init time"
+-	depends on BLK_DEV_LOOP
+-	default 8
+-	help
+-	  Static number of loop devices to be unconditionally pre-created
+-	  at init time.
+-
+-	  This default value can be overwritten on the kernel command
+-	  line or with module-parameter loop.max_loop.
+-
+-	  The historic default is 8. If a late 2011 version of losetup(8)
+-	  is used, it can be set to 0, since needed loop devices can be
+-	  dynamically allocated with the /dev/loop-control interface.
+-
+-config BLK_DEV_CRYPTOLOOP
+-	tristate "Cryptoloop Support"
+-	select CRYPTO
+-	select CRYPTO_CBC
+-	depends on BLK_DEV_LOOP
+-	---help---
+-	  Say Y here if you want to be able to use the ciphers that are 
+-	  provided by the CryptoAPI as loop transformation. This might be
+-	  used as hard disk encryption.
+-
+-	  WARNING: This device is not safe for journaled file systems like
+-	  ext3 or Reiserfs. Please use the Device Mapper crypto module
+-	  instead, which can be configured to be on-disk compatible with the
+-	  cryptoloop device.
+-
+-source "drivers/block/drbd/Kconfig"
+-
+-config BLK_DEV_NBD
+-	tristate "Network block device support"
+-	depends on NET
+-	---help---
+-	  Saying Y here will allow your computer to be a client for network
+-	  block devices, i.e. it will be able to use block devices exported by
+-	  servers (mount file systems on them etc.). Communication between
+-	  client and server works over TCP/IP networking, but to the client
+-	  program this is hidden: it looks like a regular local file access to
+-	  a block device special file such as /dev/nd0.
+-
+-	  Network block devices also allows you to run a block-device in
+-	  userland (making server and client physically the same computer,
+-	  communicating using the loopback network device).
+-
+-	  Read <file:Documentation/blockdev/nbd.txt> for more information,
+-	  especially about where to find the server code, which runs in user
+-	  space and does not need special kernel support.
+-
+-	  Note that this has nothing to do with the network file systems NFS
+-	  or Coda; you can say N here even if you intend to use NFS or Coda.
+-
+-	  To compile this driver as a module, choose M here: the
+-	  module will be called nbd.
+-
+-	  If unsure, say N.
+-
+-config BLK_DEV_NVME
+-	tristate "NVM Express block device"
+-	depends on PCI
+-	---help---
+-	  The NVM Express driver is for solid state drives directly
+-	  connected to the PCI or PCI Express bus.  If you know you
+-	  don't have one of these, it is safe to answer N.
+-
+-	  To compile this driver as a module, choose M here: the
+-	  module will be called nvme.
+-
+-config BLK_DEV_SKD
+-	tristate "STEC S1120 Block Driver"
+-	depends on PCI
+-	depends on 64BIT
+-	---help---
+-	Saying Y or M here will enable support for the
+-	STEC, Inc. S1120 PCIe SSD.
+-
+-	Use device /dev/skd$N amd /dev/skd$Np$M.
+-
+-config BLK_DEV_OSD
+-	tristate "OSD object-as-blkdev support"
+-	depends on SCSI_OSD_ULD
+-	---help---
+-	  Saying Y or M here will allow the exporting of a single SCSI
+-	  OSD (object-based storage) object as a Linux block device.
+-
+-	  For example, if you create a 2G object on an OSD device,
+-	  you can then use this module to present that 2G object as
+-	  a Linux block device.
+-
+-	  To compile this driver as a module, choose M here: the
+-	  module will be called osdblk.
+-
+-	  If unsure, say N.
+-
+-config BLK_DEV_SX8
+-	tristate "Promise SATA SX8 support"
+-	depends on PCI
+-	---help---
+-	  Saying Y or M here will enable support for the 
+-	  Promise SATA SX8 controllers.
+-
+-	  Use devices /dev/sx8/$N and /dev/sx8/$Np$M.
+-
+-config BLK_DEV_RAM
+-	tristate "RAM block device support"
+-	---help---
+-	  Saying Y here will allow you to use a portion of your RAM memory as
+-	  a block device, so that you can make file systems on it, read and
+-	  write to it and do all the other things that you can do with normal
+-	  block devices (such as hard drives). It is usually used to load and
+-	  store a copy of a minimal root file system off of a floppy into RAM
+-	  during the initial install of Linux.
+-
+-	  Note that the kernel command line option "ramdisk=XX" is now obsolete.
+-	  For details, read <file:Documentation/blockdev/ramdisk.txt>.
+-
+-	  To compile this driver as a module, choose M here: the
+-	  module will be called brd. An alias "rd" has been defined
+-	  for historical reasons.
+-
+-	  Most normal users won't need the RAM disk functionality, and can
+-	  thus say N here.
+-
+-config BLK_DEV_RAM_COUNT
+-	int "Default number of RAM disks"
+-	default "16"
+-	depends on BLK_DEV_RAM
+-	help
+-	  The default value is 16 RAM disks. Change this if you know what you
+-	  are doing. If you boot from a filesystem that needs to be extracted
+-	  in memory, you will need at least one RAM disk (e.g. root on cramfs).
+-
+-config BLK_DEV_RAM_SIZE
+-	int "Default RAM disk size (kbytes)"
+-	depends on BLK_DEV_RAM
+-	default "4096"
+-	help
+-	  The default value is 4096 kilobytes. Only change this if you know
+-	  what you are doing.
+-
+-config BLK_DEV_XIP
+-	bool "Support XIP filesystems on RAM block device"
+-	depends on BLK_DEV_RAM
+-	default n
+-	help
+-	  Support XIP filesystems (such as ext2 with XIP support on) on
+-	  top of block ram device. This will slightly enlarge the kernel, and
+-	  will prevent RAM block device backing store memory from being
+-	  allocated from highmem (only a problem for highmem systems).
+-
+-config CDROM_PKTCDVD
+-	tristate "Packet writing on CD/DVD media"
+-	depends on !UML
+-	help
+-	  If you have a CDROM/DVD drive that supports packet writing, say
+-	  Y to include support. It should work with any MMC/Mt Fuji
+-	  compliant ATAPI or SCSI drive, which is just about any newer
+-	  DVD/CD writer.
+-
+-	  Currently only writing to CD-RW, DVD-RW, DVD+RW and DVDRAM discs
+-	  is possible.
+-	  DVD-RW disks must be in restricted overwrite mode.
+-
+-	  See the file <file:Documentation/cdrom/packet-writing.txt>
+-	  for further information on the use of this driver.
+-
+-	  To compile this driver as a module, choose M here: the
+-	  module will be called pktcdvd.
+-
+-config CDROM_PKTCDVD_BUFFERS
+-	int "Free buffers for data gathering"
+-	depends on CDROM_PKTCDVD
+-	default "8"
+-	help
+-	  This controls the maximum number of active concurrent packets. More
+-	  concurrent packets can increase write performance, but also require
+-	  more memory. Each concurrent packet will require approximately 64Kb
+-	  of non-swappable kernel memory, memory which will be allocated when
+-	  a disc is opened for writing.
+-
+-config CDROM_PKTCDVD_WCACHE
+-	bool "Enable write caching"
+-	depends on CDROM_PKTCDVD
+-	help
+-	  If enabled, write caching will be set for the CD-R/W device. For now
+-	  this option is dangerous unless the CD-RW media is known good, as we
+-	  don't do deferred write error handling yet.
+-
+-config ATA_OVER_ETH
+-	tristate "ATA over Ethernet support"
+-	depends on NET
+-	help
+-	This driver provides Support for ATA over Ethernet block
+-	devices like the Coraid EtherDrive (R) Storage Blade.
+-
+-config MG_DISK
+-	tristate "mGine mflash, gflash support"
+-	depends on ARM && GPIOLIB
+-	help
+-	  mGine mFlash(gFlash) block device driver
+-
+-config MG_DISK_RES
+-	int "Size of reserved area before MBR"
+-	depends on MG_DISK
+-	default 0
+-	help
+-	  Define size of reserved area that usually used for boot. Unit is KB.
+-	  All of the block device operation will be taken this value as start
+-	  offset
+-	  Examples:
+-			1024 => 1 MB
+-
+-config SUNVDC
+-	tristate "Sun Virtual Disk Client support"
+-	depends on SUN_LDOMS
+-	help
+-	  Support for virtual disk devices as a client under Sun
+-	  Logical Domains.
+-
+-source "drivers/s390/block/Kconfig"
+-
+-config XILINX_SYSACE
+-	tristate "Xilinx SystemACE support"
+-	depends on 4xx || MICROBLAZE
+-	help
+-	  Include support for the Xilinx SystemACE CompactFlash interface
+-
+-config XEN_BLKDEV_FRONTEND
+-	tristate "Xen virtual block device support"
+-	depends on XEN
+-	default y
+-	select XEN_XENBUS_FRONTEND
+-	help
+-	  This driver implements the front-end of the Xen virtual
+-	  block device driver.  It communicates with a back-end driver
+-	  in another domain which drives the actual block device.
+-
+-config XEN_BLKDEV_BACKEND
+-	tristate "Xen block-device backend driver"
+-	depends on XEN_BACKEND
+-	help
+-	  The block-device backend driver allows the kernel to export its
+-	  block devices to other guests via a high-performance shared-memory
+-	  interface.
+-
+-	  The corresponding Linux frontend driver is enabled by the
+-	  CONFIG_XEN_BLKDEV_FRONTEND configuration option.
+-
+-	  The backend driver attaches itself to a any block device specified
+-	  in the XenBus configuration. There are no limits to what the block
+-	  device as long as it has a major and minor.
+-
+-	  If you are compiling a kernel to run in a Xen block backend driver
+-	  domain (often this is domain 0) you should say Y here. To
+-	  compile this driver as a module, chose M here: the module
+-	  will be called xen-blkback.
+-
+-
+-config VIRTIO_BLK
+-	tristate "Virtio block driver"
+-	depends on VIRTIO
+-	---help---
+-	  This is the virtual block driver for virtio.  It can be used with
+-          lguest or QEMU based VMMs (like KVM or Xen).  Say Y or M.
+-
+-config BLK_DEV_HD
+-	bool "Very old hard disk (MFM/RLL/IDE) driver"
+-	depends on HAVE_IDE
+-	depends on !ARM || ARCH_RPC || BROKEN
+-	help
+-	  This is a very old hard disk driver that lacks the enhanced
+-	  functionality of the newer ones.
+-
+-	  It is required for systems with ancient MFM/RLL/ESDI drives.
+-
+-	  If unsure, say N.
+-
+ config BLK_DEV_RBD
+ 	tristate "Rados block device (RBD)"
+ 	depends on INET && BLOCK
+ 	select CEPH_LIB
+@@ -545,16 +17,4 @@
+ 
+ 	  More information at http://ceph.newdream.net/.
+ 
+ 	  If unsure, say N.
+-
+-config BLK_DEV_RSXX
+-	tristate "IBM Flash Adapter 900GB Full Height PCIe Device Driver"
+-	depends on PCI
+-	help
+-	  Device driver for IBM's high speed PCIe SSD
+-	  storage device: Flash Adapter 900GB Full Height.
+-
+-	  To compile this driver as a module, choose M here: the
+-	  module will be called rsxx.
+-
+-endif # BLK_DEV
+--- a/rbd/Makefile
++++ b/rbd/Makefile
+@@ -1,49 +1,25 @@
+ #
+-# Makefile for the kernel block device drivers.
++# Makefile for CEPH kernel block device driver.
+ #
+-# 12 June 2000, Christoph Hellwig <hch at infradead.org>
+-# Rewritten to use lists instead of if-statements.
+-# 
+-
+-obj-$(CONFIG_MAC_FLOPPY)	+= swim3.o
+-obj-$(CONFIG_BLK_DEV_SWIM)	+= swim_mod.o
+-obj-$(CONFIG_BLK_DEV_FD)	+= floppy.o
+-obj-$(CONFIG_AMIGA_FLOPPY)	+= amiflop.o
+-obj-$(CONFIG_PS3_DISK)		+= ps3disk.o
+-obj-$(CONFIG_PS3_VRAM)		+= ps3vram.o
+-obj-$(CONFIG_ATARI_FLOPPY)	+= ataflop.o
+-obj-$(CONFIG_AMIGA_Z2RAM)	+= z2ram.o
+-obj-$(CONFIG_BLK_DEV_RAM)	+= brd.o
+-obj-$(CONFIG_BLK_DEV_LOOP)	+= loop.o
+-obj-$(CONFIG_BLK_CPQ_DA)	+= cpqarray.o
+-obj-$(CONFIG_BLK_CPQ_CISS_DA)  += cciss.o
+-obj-$(CONFIG_BLK_DEV_DAC960)	+= DAC960.o
+-obj-$(CONFIG_XILINX_SYSACE)	+= xsysace.o
+-obj-$(CONFIG_CDROM_PKTCDVD)	+= pktcdvd.o
+-obj-$(CONFIG_MG_DISK)		+= mg_disk.o
+-obj-$(CONFIG_SUNVDC)		+= sunvdc.o
+-obj-$(CONFIG_BLK_DEV_NVME)	+= nvme.o
+-obj-$(CONFIG_BLK_DEV_SKD)	+= skd.o
+-obj-$(CONFIG_BLK_DEV_OSD)	+= osdblk.o
+-
+-obj-$(CONFIG_BLK_DEV_UMEM)	+= umem.o
+-obj-$(CONFIG_BLK_DEV_NBD)	+= nbd.o
+-obj-$(CONFIG_BLK_DEV_CRYPTOLOOP) += cryptoloop.o
+-obj-$(CONFIG_VIRTIO_BLK)	+= virtio_blk.o
+-
+-obj-$(CONFIG_BLK_DEV_SX8)	+= sx8.o
+-obj-$(CONFIG_BLK_DEV_HD)	+= hd.o
+-
+-obj-$(CONFIG_XEN_BLKDEV_FRONTEND)	+= xen-blkfront.o
+-obj-$(CONFIG_XEN_BLKDEV_BACKEND)	+= xen-blkback/
+-obj-$(CONFIG_BLK_DEV_DRBD)     += drbd/
++
++ifneq ($(KERNELRELEASE),)
++
+ obj-$(CONFIG_BLK_DEV_RBD)     += rbd.o
+-obj-$(CONFIG_BLK_DEV_PCIESSD_MTIP32XX)	+= mtip32xx/
+ 
+-obj-$(CONFIG_BLK_DEV_RSXX) += rsxx/
+-obj-$(CONFIG_BLK_DEV_NULL_BLK)	+= null_blk.o
+-obj-$(CONFIG_ZRAM) += zram/
+-
+-nvme-y		:= nvme-core.o nvme-scsi.o
+-skd-y		:= skd_main.o
+-swim_mod-y	:= swim.o swim_asm.o
++else
++
++KERNELRELEASE ?= $(shell uname -r)
++KERNELDIR ?= /lib/modules/$(KERNELRELEASE)/build
++
++default: all
++
++all:
++	$(MAKE) -C $(KERNELDIR) M=$(CURDIR) CONFIG_BLK_DEV_RBD=m modules
++
++modules_install:
++	$(MAKE) -C $(KERNELDIR) M=$(CURDIR) CONFIG_BLK_DEV_RBD=m modules_install
++
++clean:
++	$(MAKE) -C $(KERNELDIR) M=$(CURDIR) clean
++
++endif
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..916b366
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1 @@
+out-of-tree.patch
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..4366c80
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,73 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+
+# Uncomment this to turn on verbose mode.
+##export DH_VERBOSE=1
+
+PKD  = $(abspath $(dir $(MAKEFILE_LIST)))
+PKG  = $(word 2,$(shell dpkg-parsechangelog -l$(PKD)/changelog | grep ^Source))
+VER ?= $(shell dpkg-parsechangelog -l$(PKD)/changelog | perl -ne 'print $$1 if m{Version:\s*([\d.]+(?:\+git\d+|\+dfsg\d+))}')
+
+%:
+	dh $@ --with dkms
+
+override_dh_dkms:
+	dh_dkms -V $(VER)
+
+override_dh_install:
+	dh_install ceph keys libceph linux rbd debian/Makefile    /usr/src/ceph-$(VER)
+
+## http://wiki.debian.org/onlyjob/get-orig-source
+DTYPE =
+UURL  = https://github.com/ceph/ceph-client.git
+UDATE = $(shell date --rfc-3339=seconds --date='TZ="UTC" $(shell echo $(VER) | perl -ne 'print "$$1-$$2-$$3" if m/\+(?:git|svn|hg)(\d{4})(\d{2})(\d{2})/')')
+.PHONY: get-orig-source
+get-orig-source: $(PKG)_$(VER)$(DTYPE).orig.tar.xz $(info I: $(PKG)_$(VER)$(DTYPE))
+	@
+
+$(PKG)_$(VER)$(DTYPE).orig.tar.xz: $(info I: UDATE=$(UDATE))
+	$(if $(wildcard $(PKG)-$(VER)),$(error $(PKG)-$(VER) exist, aborting..))
+	@echo "# Downloading..."
+	( git clone file:///home/$${USER}/dev/upstream/_github/ceph-client/ --single-branch --branch for-linus --depth 128 $(PKG)-$(VER) \
+          || git clone $(UURL) --single-branch --branch for-linus --depth 128 $(PKG)-$(VER) \
+        ) || $(RM) -r $(PKG)-$(VER)
+	cd $(PKG)-$(VER) \
+        && git checkout $$(git log --branches=for-linus -n1 --format=%h --before="$(UDATE)") \
+        && [ -s ChangeLog ] || ( echo "# Generating ChangeLog..." \
+           ; git log --pretty="format:%ad  %aN  <%aE>%n%n%x09* %s%n" --date=short > ChangeLog \
+           ; touch -d "$$(git log -1 --format='%ci')" ChangeLog) \
+        && echo "# Setting times (4 threads)..." \
+        && ( count=0; for F in $$(git ls-tree -r --name-only HEAD); do \
+             ( [ -e "$$F" ] && touch --no-dereference -d "$$(git log -1 --format="%ai" -- "$$F")" "$$F" ) & \
+           [ $$(((count+=1) % 4)) -eq 0 ] && wait || [ 1 -eq 1 ]; done ) \
+        && echo "# Cleaning-up..." \
+        && tar -caf ../$(PKG)_$(VER)$(DTYPE).orig-tmp.tar.xz \
+            drivers/block/rbd.c \
+            drivers/block/rbd_types.h \
+            drivers/block/Makefile \
+            drivers/block/Kconfig \
+            fs/ceph \
+            include/linux/ceph \
+            include/linux/crush \
+            include/keys/ceph-type.h \
+            net/ceph \
+            ChangeLog \
+        && $(RM) -r .gitignore .mailmap .git * \
+        && tar -xf ../$(PKG)_$(VER)$(DTYPE).orig-tmp.tar.xz \
+        && $(RM) -v ../$(PKG)_$(VER)$(DTYPE).orig-tmp.tar.xz \
+        && echo "# Correcting layout..." \
+        && mkdir linux \
+        && mv -v include/linux/ceph ./linux/ \
+        && mv -v include/linux/crush ./linux/ \
+        && mkdir keys \
+        && mv -v include/keys/ceph-type.h ./keys/ \
+        && mv -v fs/ceph ./ \
+        && mkdir rbd \
+        && mv -v drivers/block/* ./rbd/ \
+        && mkdir libceph \
+        && mv -v net/ceph/* ./libceph/ \
+        && $(RM) -rv drivers include fs net
+	@echo "# Packing..."
+	find -L "$(PKG)-$(VER)" -xdev -type f -print | sort \
+        | XZ_OPT="-6v" tar -caf "$(PKG)_$(VER)$(DTYPE).orig.tar.xz" -T- --owner=root --group=root --mode=a+rX \
+        && $(RM) -r "$(PKG)-$(VER)"
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 0000000..b1e2410
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,9 @@
+# uscan(1) configuration file.
+version=3
+
+## Upstream do not provide tarballs hence use "debian/rules get-orig-source"
+## to generate source archive.
+
+opts=\
+dversionmangle=s/\+git(\d+)/$1/,\
+ https://github.com/ceph/ceph-client/releases .*/archive/v?(\d[-\d\.]+)\.tar\.gz

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ceph/ceph-dkms.git



More information about the Pkg-ceph-commits mailing list