From: Sage Weil on
Hi,

The rados block device (rbd) implements a network block device backed by
the Ceph distributed object store (think nbd/iSCSI, but distributed and
fault tolerant). At the suggestion of Christoph and James, this version
of the patchset factors out the common Ceph bits (the network protocol,
cluster membership, and object storage parts) into a libceph module
(currently in net/ceph/ and include/linux/ceph/) that is shared by the
file system component (fs/ceph) and rbd (drivers/block/rbd.c). The first
few patches lay some groundwork, #7 moves does the ceph -> libceph+ceph
split, and #8 adds the block device driver.

The block device code has been in linux-next for a while, but it could
use some review by someone more familiar with the block layer. The rbd
code is originally based on osdblk, and has a similar sysfs interface
(rbd also supports snapshots, so there are a few more knobs for that).

Two questions --

1- Are net/ceph/ and include/linux/ceph/ appropriate locations for the
libceph code? (It seemed more similar to other net/ residents than the
stuff in lib/.)

2- Do I need an explicit ACK from any block people before sending this
to Linus? Carrying/rebasing the refactoring patch out of tree will be
tedious, so I would like to push it sooner rather than later.

Thanks!
sage

PS This code is also available in git at

git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git rbd

---

Sage Weil (1):
ceph: factor out libceph from Ceph file system

Yehuda Sadeh (7):
ceph-rbd: lookup pool in osdmap by name
ceph-rbd: refactor osdc requests creation functions
ceph-rbd: messenger and osdc changes for rbd
ceph-rbd: enable creation of clients that don't need mds
ceph-rbd: refactor mount related functions, add helpers
ceph-rbd: osdc support for osd call and rollback operations
rbd: introduce rados block device (rbd), based on libceph

MAINTAINERS | 11 +
drivers/block/Kconfig | 13 +
drivers/block/Makefile | 1 +
drivers/block/rbd.c | 1844 ++++++++++++++++++++++++++++
drivers/block/rbd_types.h | 73 ++
fs/ceph/Kconfig | 14 +-
fs/ceph/Makefile | 11 +-
fs/ceph/README | 20 -
fs/ceph/addr.c | 65 +-
fs/ceph/armor.c | 103 --
fs/ceph/auth.c | 259 ----
fs/ceph/auth.h | 92 --
fs/ceph/auth_none.c | 131 --
fs/ceph/auth_none.h | 30 -
fs/ceph/auth_x.c | 684 -----------
fs/ceph/auth_x.h | 49 -
fs/ceph/auth_x_protocol.h | 90 --
fs/ceph/buffer.c | 65 -
fs/ceph/buffer.h | 39 -
fs/ceph/caps.c | 35 +-
fs/ceph/ceph_debug.h | 37 -
fs/ceph/ceph_frag.c | 3 +-
fs/ceph/ceph_frag.h | 109 --
fs/ceph/ceph_fs.c | 72 --
fs/ceph/ceph_fs.h | 728 -----------
fs/ceph/ceph_hash.c | 118 --
fs/ceph/ceph_hash.h | 13 -
fs/ceph/ceph_strings.c | 193 ---
fs/ceph/crush/crush.c | 151 ---
fs/ceph/crush/crush.h | 180 ---
fs/ceph/crush/hash.c | 149 ---
fs/ceph/crush/hash.h | 17 -
fs/ceph/crush/mapper.c | 609 ---------
fs/ceph/crush/mapper.h | 20 -
fs/ceph/crypto.c | 412 -------
fs/ceph/crypto.h | 48 -
fs/ceph/debugfs.c | 407 ++-----
fs/ceph/decode.h | 196 ---
fs/ceph/dir.c | 55 +-
fs/ceph/export.c | 5 +-
fs/ceph/file.c | 207 +---
fs/ceph/inode.c | 19 +-
fs/ceph/ioctl.c | 11 +-
fs/ceph/locks.c | 6 +-
fs/ceph/mds_client.c | 85 +-
fs/ceph/mds_client.h | 20 +-
fs/ceph/mdsmap.c | 11 +-
fs/ceph/mdsmap.h | 62 -
fs/ceph/messenger.c | 2277 ----------------------------------
fs/ceph/messenger.h | 253 ----
fs/ceph/mon_client.c | 1018 ---------------
fs/ceph/mon_client.h | 121 --
fs/ceph/msgpool.c | 64 -
fs/ceph/msgpool.h | 25 -
fs/ceph/msgr.h | 175 ---
fs/ceph/osd_client.c | 1539 -----------------------
fs/ceph/osd_client.h | 167 ---
fs/ceph/osdmap.c | 1110 -----------------
fs/ceph/osdmap.h | 128 --
fs/ceph/pagelist.c | 55 -
fs/ceph/pagelist.h | 54 -
fs/ceph/rados.h | 405 ------
fs/ceph/snap.c | 10 +-
fs/ceph/strings.c | 117 ++
fs/ceph/super.c | 1154 +++++++----------
fs/ceph/super.h | 397 +++----
fs/ceph/types.h | 29 -
fs/ceph/xattr.c | 15 +-
include/linux/ceph/auth.h | 92 ++
include/linux/ceph/buffer.h | 39 +
include/linux/ceph/ceph_debug.h | 37 +
include/linux/ceph/ceph_frag.h | 109 ++
include/linux/ceph/ceph_fs.h | 728 +++++++++++
include/linux/ceph/ceph_hash.h | 13 +
include/linux/ceph/crush/crush.h | 180 +++
include/linux/ceph/crush/hash.h | 17 +
include/linux/ceph/crush/mapper.h | 20 +
include/linux/ceph/debugfs.h | 33 +
include/linux/ceph/decode.h | 201 +++
include/linux/ceph/libceph.h | 249 ++++
include/linux/ceph/mdsmap.h | 62 +
include/linux/ceph/messenger.h | 261 ++++
include/linux/ceph/mon_client.h | 122 ++
include/linux/ceph/msgpool.h | 25 +
include/linux/ceph/msgr.h | 175 +++
include/linux/ceph/osd_client.h | 234 ++++
include/linux/ceph/osdmap.h | 130 ++
include/linux/ceph/pagelist.h | 54 +
include/linux/ceph/rados.h | 405 ++++++
include/linux/ceph/types.h | 29 +
net/Kconfig | 1 +
net/Makefile | 1 +
net/ceph/Kconfig | 27 +
net/ceph/Makefile | 37 +
net/ceph/armor.c | 103 ++
net/ceph/auth.c | 259 ++++
net/ceph/auth_none.c | 132 ++
net/ceph/auth_none.h | 29 +
net/ceph/auth_x.c | 685 +++++++++++
net/ceph/auth_x.h | 50 +
net/ceph/auth_x_protocol.h | 90 ++
net/ceph/buffer.c | 68 +
net/ceph/ceph_common.c | 529 ++++++++
net/ceph/ceph_fs.c | 75 ++
net/ceph/ceph_hash.c | 118 ++
net/ceph/ceph_strings.c | 84 ++
net/ceph/crush/crush.c | 151 +++
net/ceph/crush/hash.c | 149 +++
net/ceph/crush/mapper.c | 609 +++++++++
net/ceph/crypto.c | 412 +++++++
net/ceph/crypto.h | 48 +
net/ceph/debugfs.c | 268 ++++
net/ceph/messenger.c | 2453 +++++++++++++++++++++++++++++++++++++
net/ceph/mon_client.c | 1027 ++++++++++++++++
net/ceph/msgpool.c | 64 +
net/ceph/osd_client.c | 1773 +++++++++++++++++++++++++++
net/ceph/osdmap.c | 1128 +++++++++++++++++
net/ceph/pagelist.c | 57 +
net/ceph/pagevec.c | 223 ++++
119 files changed, 16847 insertions(+), 13703 deletions(-)
create mode 100644 drivers/block/rbd.c
create mode 100644 drivers/block/rbd_types.h
delete mode 100644 fs/ceph/README
delete mode 100644 fs/ceph/armor.c
delete mode 100644 fs/ceph/auth.c
delete mode 100644 fs/ceph/auth.h
delete mode 100644 fs/ceph/auth_none.c
delete mode 100644 fs/ceph/auth_none.h
delete mode 100644 fs/ceph/auth_x.c
delete mode 100644 fs/ceph/auth_x.h
delete mode 100644 fs/ceph/auth_x_protocol.h
delete mode 100644 fs/ceph/buffer.c
delete mode 100644 fs/ceph/buffer.h
delete mode 100644 fs/ceph/ceph_debug.h
delete mode 100644 fs/ceph/ceph_frag.h
delete mode 100644 fs/ceph/ceph_fs.c
delete mode 100644 fs/ceph/ceph_fs.h
delete mode 100644 fs/ceph/ceph_hash.c
delete mode 100644 fs/ceph/ceph_hash.h
delete mode 100644 fs/ceph/ceph_strings.c
delete mode 100644 fs/ceph/crush/crush.c
delete mode 100644 fs/ceph/crush/crush.h
delete mode 100644 fs/ceph/crush/hash.c
delete mode 100644 fs/ceph/crush/hash.h
delete mode 100644 fs/ceph/crush/mapper.c
delete mode 100644 fs/ceph/crush/mapper.h
delete mode 100644 fs/ceph/crypto.c
delete mode 100644 fs/ceph/crypto.h
delete mode 100644 fs/ceph/decode.h
delete mode 100644 fs/ceph/mdsmap.h
delete mode 100644 fs/ceph/messenger.c
delete mode 100644 fs/ceph/messenger.h
delete mode 100644 fs/ceph/mon_client.c
delete mode 100644 fs/ceph/mon_client.h
delete mode 100644 fs/ceph/msgpool.c
delete mode 100644 fs/ceph/msgpool.h
delete mode 100644 fs/ceph/msgr.h
delete mode 100644 fs/ceph/osd_client.c
delete mode 100644 fs/ceph/osd_client.h
delete mode 100644 fs/ceph/osdmap.c
delete mode 100644 fs/ceph/osdmap.h
delete mode 100644 fs/ceph/pagelist.c
delete mode 100644 fs/ceph/pagelist.h
delete mode 100644 fs/ceph/rados.h
create mode 100644 fs/ceph/strings.c
delete mode 100644 fs/ceph/types.h
create mode 100644 include/linux/ceph/auth.h
create mode 100644 include/linux/ceph/buffer.h
create mode 100644 include/linux/ceph/ceph_debug.h
create mode 100644 include/linux/ceph/ceph_frag.h
create mode 100644 include/linux/ceph/ceph_fs.h
create mode 100644 include/linux/ceph/ceph_hash.h
create mode 100644 include/linux/ceph/crush/crush.h
create mode 100644 include/linux/ceph/crush/hash.h
create mode 100644 include/linux/ceph/crush/mapper.h
create mode 100644 include/linux/ceph/debugfs.h
create mode 100644 include/linux/ceph/decode.h
create mode 100644 include/linux/ceph/libceph.h
create mode 100644 include/linux/ceph/mdsmap.h
create mode 100644 include/linux/ceph/messenger.h
create mode 100644 include/linux/ceph/mon_client.h
create mode 100644 include/linux/ceph/msgpool.h
create mode 100644 include/linux/ceph/msgr.h
create mode 100644 include/linux/ceph/osd_client.h
create mode 100644 include/linux/ceph/osdmap.h
create mode 100644 include/linux/ceph/pagelist.h
create mode 100644 include/linux/ceph/rados.h
create mode 100644 include/linux/ceph/types.h
create mode 100644 net/ceph/Kconfig
create mode 100644 net/ceph/Makefile
create mode 100644 net/ceph/armor.c
create mode 100644 net/ceph/auth.c
create mode 100644 net/ceph/auth_none.c
create mode 100644 net/ceph/auth_none.h
create mode 100644 net/ceph/auth_x.c
create mode 100644 net/ceph/auth_x.h
create mode 100644 net/ceph/auth_x_protocol.h
create mode 100644 net/ceph/buffer.c
create mode 100644 net/ceph/ceph_common.c
create mode 100644 net/ceph/ceph_fs.c
create mode 100644 net/ceph/ceph_hash.c
create mode 100644 net/ceph/ceph_strings.c
create mode 100644 net/ceph/crush/crush.c
create mode 100644 net/ceph/crush/hash.c
create mode 100644 net/ceph/crush/mapper.c
create mode 100644 net/ceph/crypto.c
create mode 100644 net/ceph/crypto.h
create mode 100644 net/ceph/debugfs.c
create mode 100644 net/ceph/messenger.c
create mode 100644 net/ceph/mon_client.c
create mode 100644 net/ceph/msgpool.c
create mode 100644 net/ceph/osd_client.c
create mode 100644 net/ceph/osdmap.c
create mode 100644 net/ceph/pagelist.c
create mode 100644 net/ceph/pagevec.c

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/