The Ceph Blog

Featured Post

Community Update: Welcome to 2016!

It has been quite a while since a coordinated Ceph update has made it to the Ceph blog, so I figured it was time to gather all of the various threads and make sure they were in a single place for consumption.

Quite a lot is happening in the Ceph world and, depending on what part of the project you are involved with, there is more than likely to be a place for you to deepen your engagement with the community. So, let’s do the highlight reel:

read more…

Earlier Posts

v10.0.2 released

This development release includes a raft of changes and improvements for Jewel. Key additions include CephFS scrub/repair improvements, an AIX and Solaris port of librados, many librbd journaling additions and fixes, extended per-pool options, and NBD driver for RBD (rbd-nbd) that allows librbd to present a kernel-level block device on Linux, multitenancy support for RGW, RGW bucket lifecycle support, RGW support for Swift static large objects (SLO), and RGW support for Swift bulk delete.

There are also lots of smaller optimizations and performance fixes going in all over the tree, particular in the OSD and common code.


  • auth: fail if rotating key is missing (do not spam log) (pr#6473, Qiankun Zheng)
  • auth: fix crash when bad keyring is passed (pr#6698, Dunrong Huang)
  • auth: make keyring without mon entity type return -EACCES (pr#5734, Xiaowei Chen)
  • buffer: make usable outside of ceph source again (pr#6863, Josh Durgin)
  • build: cmake check fixes (pr#6787, Orit Wasserman)
  • build: fix bz2-dev dependency (pr#6948, Samuel Just)
  • build: Gentoo: _FORTIFY_SOURCE fix. (issue#13920, pr#6739, Robin H. Johnson)
  • build/ops: systemd ceph-disk unit must not assume /bin/flock (issue#13975, pr#6803, Loic Dachary)
  • ceph-detect-init: Ubuntu >= 15.04 uses systemd (pr#6873, James Page)
  • cephfs-data-scan: scan_frags (pr#5941, John Spray)
  • cephfs-data-scan: scrub tag filtering (#12133 and #12145) (issue#12133, issue#12145, pr#5685, John Spray)
  • ceph-fuse: add process to ceph-fuse –help (pr#6821, Wei Feng)
  • ceph-kvstore-tool: handle bad out file on command line (pr#6093, Kefu Chai)
  • ceph-mds:add –help/-h (pr#6850, Cilang Zhao)
  • ceph_objectstore_bench: fix race condition, bugs (issue#13516, pr#6681, Igor Fedotov)
  • add BuildRequires: systemd (issue#13860, pr#6692, Nathan Cutler)
  • client: a better check for MDS availability (pr#6253, John Spray)
  • client: close mds sessions in shutdown() (pr#6269, John Spray)
  • client: don’t invalidate page cache when inode is no longer used (pr#6380, Yan, Zheng)
  • client: modify a word in log (pr#6906, YongQiang He)
  • cls/ fix misused metadata_name_from_key (issue#13922, pr#6661, Xiaoxi Chen)
  • cmake: Add common/ to CMakeLists.txt (pr#6805, Pete Zaitcev)
  • cmake: add to librgw.a (pr#6786, Orit Wasserman)
  • cmake: add to libcommon (pr#6823, Orit Wasserman)
  • cmake: define STRERROR_R_CHAR_P for GNU-specific strerror_r (pr#6751, Ilya Dryomov)
  • cmake: update for recent librbd changes (pr#6715, John Spray)
  • cmake: update for recent rbd changes (pr#6818, Mykola Golub)
  • common: add generic plugin infrastructure (pr#6696, Sage Weil)
  • common: add latency perf counter for finisher (pr#6175, Xinze Chi)
  • common: buffer: add cached_crc and cached_crc_adjust counts to perf dump (pr#6535, Ning Yao)
  • common: buffer: remove unneeded list destructor (pr#6456, Michal Jarzabek)
  • common/ order of initialisers (pr#6838, Michal Jarzabek)
  • common: don’t reverse hobject_t hash bits when zero (pr#6653, Piotr Dałek)
  • common: log: Assign LOG_DEBUG priority to syslog calls (issue#13993, pr#6815, Brad Hubbard)
  • common: log: predict log message buffer allocation size (pr#6641, Adam Kupczyk)
  • common: optimize debug logging code (pr#6441, Adam Kupczyk)
  • common: perf counter for bufferlist history total alloc (pr#6198, Xinze Chi)
  • common: reduce CPU usage by making stringstream in stringify function thread local (pr#6543, Evgeniy Firsov)
  • common: re-enable backtrace support (pr#6771, Jason Dillaman)
  • common: SubProcess: fix multiple definition bug (pr#6790, Yunchuan Wen)
  • common: use namespace instead of subclasses for buffer (pr#6686, Michal Jarzabek)
  • macro fix (pr#6769, Igor Podoski)
  • doc: admin/build-doc: add lxml dependencies on debian (pr#6610, Ken Dreyer)
  • doc/cephfs/posix: update (pr#6922, Sage Weil)
  • doc: CodingStyle: fix broken URLs (pr#6733, Kefu Chai)
  • doc: correct typo ‘restared’ to ‘restarted’ (pr#6734, Yilong Zhao)
  • doc/dev/index: refactor/reorg (pr#6792, Nathan Cutler)
  • doc/dev/index.rst: begin writing Contributing to Ceph (pr#6727, Nathan Cutler)
  • doc/dev/index.rst: fix headings (pr#6780, Nathan Cutler)
  • doc: dev: introduction to tests (pr#6910, Loic Dachary)
  • doc: file must be empty when writing layout fields of file use “setfattr” (pr#6848, Cilang Zhao)
  • doc: Fixed incorrect name of a “List Multipart Upload Parts” Response Entity (issue#14003, pr#6829, Lenz Grimmer)
  • doc: Fixes a spelling error (pr#6705, Jeremy Qian)
  • doc: fix typo in cephfs/quota (pr#6745, Drunkard Zhang)
  • doc: fix typo in developer guide (pr#6943, Nathan Cutler)
  • doc: INSTALL redirect to online documentation (pr#6749, Loic Dachary)
  • doc: little improvements for troubleshooting scrub issues (pr#6827, Mykola Golub)
  • doc: Modified a note section in rbd-snapshot doc. (pr#6908, Nilamdyuti Goswami)
  • doc: note that cephfs auth stuff is new in jewel (pr#6858, John Spray)
  • doc: osd: s/schedued/scheduled/ (pr#6872, Loic Dachary)
  • doc: remove unnecessary period in headline (pr#6775, Marc Koderer)
  • doc: rst style fix for pools document (pr#6816, Drunkard Zhang)
  • doc: Update list of admin/build-doc dependencies (issue#14070, pr#6934, Nathan Cutler)
  • init-ceph: do umount when the path exists. (pr#6866, Xiaoxi Chen)
  • journal: disconnect watch after watch error (issue#14168, pr#7113, Jason Dillaman)
  • journal: fire replay complete event after reading last object (issue#13924, pr#6762, Jason Dillaman)
  • journal: support replaying beyond skipped splay objects (pr#6687, Jason Dillaman)
  • librados: aix gcc librados port (pr#6675, Rohan Mars)
  • librados: avoid malloc(0) (which can return NULL on some platforms) (issue#13944, pr#6779, Dan Mick)
  • librados: clean up Objecter.h (pr#6731, Jie Wang)
  • librados: include/rados/librados.h: fix typo (pr#6741, Nathan Cutler)
  • librbd: automatically flush IO after blocking write operations (issue#13913, pr#6742, Jason Dillaman)
  • librbd: better handling of exclusive lock transition period (pr#7204, Jason Dillaman)
  • librbd: check for presence of journal before attempting to remove (issue#13912, pr#6737, Jason Dillaman)
  • librbd: clear error when older OSD doesn’t support image flags (issue#14122, pr#7035, Jason Dillaman)
  • librbd: correct include guard in RenameRequest.h (pr#7143, Jason Dillaman)
  • librbd: correct issues discovered during teuthology testing (issue#14108, issue#14107, pr#6974, Jason Dillaman)
  • librbd: correct issues discovered when cache is disabled (issue#14123, pr#6979, Jason Dillaman)
  • librbd: correct race conditions discovered during unit testing (issue#14060, pr#6923, Jason Dillaman)
  • librbd: disable copy-on-read when not exclusive lock owner (issue#14167, pr#7129, Jason Dillaman)
  • librbd: do not ignore self-managed snapshot release result (issue#14170, pr#7043, Jason Dillaman)
  • librbd: ensure copy-on-read requests are complete prior to closing parent image (pr#6740, Jason Dillaman)
  • librbd: ensure librados callbacks are flushed prior to destroying (issue#14092, pr#7040, Jason Dillaman)
  • librbd: fix journal iohint (pr#6917, Jianpeng Ma)
  • librbd: fix known test case race condition failures (issue#13969, pr#6800, Jason Dillaman)
  • librbd: fix merge-diff for >2GB diff-files (issue#14030, pr#6889, Yunchuan Wen)
  • librbd: fix test case race condition for journaling ops (pr#6877, Jason Dillaman)
  • librbd: fix tracepoint parameter in diff_iterate (pr#6892, Yunchuan Wen)
  • librbd: image refresh code paths converted to async state machines (pr#6859, Jason Dillaman)
  • librbd: include missing header for bool type (pr#6798, Mykola Golub)
  • librbd: initial collection of state machine unit tests (pr#6703, Jason Dillaman)
  • librbd: integrate journaling for maintenance operations (pr#6625, Jason Dillaman)
  • librbd: journaling-related lock dependency cleanup (pr#6777, Jason Dillaman)
  • librbd: not necessary to hold owner_lock while releasing snap id (issue#13914, pr#6736, Jason Dillaman)
  • librbd: only send signal when AIO completions queue empty (pr#6729, Jianpeng Ma)
  • librbd: optionally validate new RBD pools for snapshot support (issue#13633, pr#6925, Jason Dillaman)
  • librbd: partial revert of commit 9b0e359 (issue#13969, pr#6789, Jason Dillaman)
  • librbd: properly handle replay of snap remove RPC message (issue#14164, pr#7042, Jason Dillaman)
  • librbd: reduce verbosity of common error condition logging (issue#14234, pr#7114, Jason Dillaman)
  • librbd: simplify IO method signatures for 32bit environments (pr#6700, Jason Dillaman)
  • librbd: support eventfd for AIO completion notifications (pr#5465, Haomai Wang)
  • mailmap: add UMCloud affiliation (pr#6820, Jiaying Ren)
  • mailmap: Jewel updates (pr#6750, Abhishek Lekshmanan)
  • makefiles: remove bz2-dev from dependencies (issue#13981, pr#6939, Piotr Dałek)
  • mds: add ‘p’ flag in auth caps to control setting pool in layout (pr#6567, John Spray)
  • mds: fix client capabilities during reconnect (client.XXXX isn’t responding to mclientcaps(revoke)) (issue#11482, pr#6432, Yan, Zheng)
  • mds: fix setvxattr (broken in a536d114) (issue#14029, pr#6941, John Spray)
  • mds: repair the command option “–hot-standby” (pr#6454, Wei Feng)
  • mds: tear down connections from tell commands (issue#14048, pr#6933, John Spray)
  • mon: fix ceph df pool available calculation for 0-weighted OSDs (pr#6660, Chengyuan Li)
  • mon: fix routed_request_tids leak (pr#6102, Ning Yao)
  • mon: support min_down_reporter by subtree level (default by host) (pr#6709, Xiaoxi Chen)
  • mount.ceph: memory leaks (pr#6905, Qiankun Zheng)
  • osd: add osd op queue latency perfcounter (pr#5793, Haomai Wang)
  • osd: Allow repair of history.last_epoch_started using config (pr#6793, David Zafman)
  • osd: avoid duplicate op->mark_started in ReplicatedBackend (pr#6689, Jacek J. Łakis)
  • osd: cancel failure reports if we fail to rebind network (pr#6278, Xinze Chi)
  • osd: correctly handle small osd_scrub_interval_randomize_ratio (pr#7147, Samuel Just)
  • osd: defer decoding of MOSDRepOp/MOSDRepOpReply (pr#6503, Xinze Chi)
  • osd: don’t update epoch and rollback_info objects attrs if there is no need (pr#6555, Ning Yao)
  • osd: dump number of missing objects for each peer with pg query (pr#6058, Guang Yang)
  • osd: enable perfcounters on sharded work queue mutexes (pr#6455, Jacek J. Łakis)
  • osd: FileJournal: reduce locking scope in write_aio_bl (issue#12789, pr#5670, Zhi Zhang)
  • osd: FileStore: remove __SWORD_TYPE dependency (pr#6263, John Coyle)
  • osd: fix FileStore::_destroy_collection error return code (pr#6612, Ruifeng Yang)
  • osd: fix incorrect throttle in WBThrottle (pr#6713, Zhang Huan)
  • osd: fix MOSDRepScrub reference counter in replica_scrub (pr#6730, Jie Wang)
  • osd: fix rollback_info_trimmed_to before index() (issue#13965, pr#6801, Samuel Just)
  • osd: fix trivial scrub bug (pr#6533, Li Wang)
  • osd: KeyValueStore: don’t queue NULL context (pr#6783, Haomai Wang)
  • osd: make backend and block device code a bit more generic (pr#6759, Sage Weil)
  • osd: move newest decode version of MOSDOp and MOSDOpReply to the front (pr#6642, Jacek J. Łakis)
  • osd: pg_pool_t: add dictionary for pool options (issue#13077, pr#6081, Mykola Golub)
  • osd: reduce memory consumption of some structs (pr#6475, Piotr Dałek)
  • osd: release the message throttle when OpRequest unregistered (issue#14248, pr#7148, Samuel Just)
  • osd: remove __SWORD_TYPE dependency (pr#6262, John Coyle)
  • osd: slightly reduce actual size of pg_log_entry_t (pr#6690, Piotr Dałek)
  • osd: support pool level recovery_priority and recovery_op_priority (pr#5953, Guang Yang)
  • osd: use pg id (without shard) when referring the PG (pr#6236, Guang Yang)
  • packaging: add build dependency on python devel package (pr#7205, Josh Durgin)
  • pybind/cephfs: add symlink and its unit test (pr#6323, Shang Ding)
  • pybind: decode empty string in conf_parse_argv() correctly (pr#6711, Josh Durgin)
  • pybind: Implementation of rados_ioctx_snapshot_rollback (pr#6878, Florent Manens)
  • pybind: port the rbd bindings to Cython (issue#13115, pr#6768, Hector Martin)
  • pybind: support ioctx:exec (pr#6795, Noah Watkins)
  • qa: erasure-code benchmark plugin selection (pr#6685, Loic Dachary)
  • qa/krbd: Expunge generic/247 (pr#6831, Douglas Fuller)
  • qa/workunits/cephtool/ false positive fail on /tmp/obj1. (pr#6837, Robin H. Johnson)
  • qa/workunits/cephtool/ no ./ (pr#6748, Sage Weil)
  • qa/workunits/rbd: rbd-nbd test should use sudo for map/unmap ops (issue#14221, pr#7101, Jason Dillaman)
  • rados: bench: fix off-by-one to avoid writing past object_size (pr#6677, Tao Chang)
  • rbd: add –object-size option, deprecate –order (issue#12112, pr#6830, Vikhyat Umrao)
  • rbd: add RBD pool mirroring configuration API + CLI (pr#6129, Jason Dillaman)
  • rbd: fix build with “–without-rbd” (issue#14058, pr#6899, Piotr Dałek)
  • rbd: journal: configuration via conf, cli, api and some fixes (pr#6665, Mykola Golub)
  • rbd: merge_diff test should use new –object-size parameter instead of –order (issue#14106, pr#6972, Na Xie, Jason Dillaman)
  • rbd-nbd: network block device (NBD) support for RBD (pr#6657, Yunchuan Wen, Li Wang)
  • rbd: output formatter may not be closed upon error (issue#13711, pr#6706, xie xingguo)
  • rgw: add a missing cap type (pr#6774, Yehuda Sadeh)
  • rgw: add an inspection to the field of type when assigning user caps (pr#6051, Kongming Wu)
  • rgw: add LifeCycle feature (pr#6331, Ji Chen)
  • rgw: add support for Static Large Objects of Swift API (issue#12886, issue#13452, pr#6643, Yehuda Sadeh, Radoslaw Zarzynski)
  • rgw: fix a glaring syntax error (pr#6888, Pavan Rallabhandi)
  • rgw: fix the build failure (pr#6927, Kefu Chai)
  • rgw: multitenancy support (pr#6784, Yehuda Sadeh, Pete Zaitcev)
  • rgw: Remove unused code in PutMetadataAccount:execute (pr#6668, Pete Zaitcev)
  • rgw: remove unused variable in RGWPutMetadataBucket::execute (pr#6735, Radoslaw Zarzynski)
  • rgw/rgw_resolve: fallback to res_query when res_nquery not implemented (pr#6292, John Coyle)
  • rgw: static large objects (Radoslaw Zarzynski, Yehuda Sadeh)
  • rgw: swift bulk delete (Radoslaw Zarzynski)
  • systemd: start/stop/restart ceph services by daemon type (issue#13497, pr#6276, Zhi Zhang)
  • sysvinit: allow custom cluster names (pr#6732, Richard Chan)
  • test/encoding/ fix (pr#6714, Igor Podoski)
  • test: fix (pr#6697, Xinze Chi)
  • test/librados/ clean up EC pools’ crush rules too (issue#13878, pr#6788, Loic Dachary, Dan Mick)
  • tests: allow object corpus readable test to skip specific incompat instances (pr#6932, Igor Podoski)
  • tests: ceph-helpers assert success getting backfills (pr#6699, Loic Dachary)
  • tests: ceph_test_keyvaluedb_iterators: fix broken test (pr#6597, Haomai Wang)
  • tests: fix failure for (issue#13986, pr#6890, Loic Dachary, Ning Yao)
  • tests: fix race condition testing auto scrub (issue#13592, pr#6724, Xinze Chi, Loic Dachary)
  • tests: flush op work queue prior to destroying MockImageCtx (issue#14092, pr#7002, Jason Dillaman)
  • tests: –osd-scrub-load-threshold=2000 for more consistency (issue#14027, pr#6871, Loic Dachary)
  • tests: to display full osd logs on error (issue#13986, pr#6857, Loic Dachary)
  • test: use sequential journal_tid for object cacher test (issue#13877, pr#6710, Josh Durgin)
  • tools: add cephfs-table-tool ‘take_inos’ (pr#6655, John Spray)
  • tools: Fix layout handing in cephfs-data-scan (#13898) (pr#6719, John Spray)
  • tools: support printing part cluster map in readable fashion (issue#13079, pr#5921, Bo Cai)
  • add mstart, mstop, mrun wrappers for running multiple vstart-style test clusters out of src tree (pr#6901, Yehuda Sadeh)

v10.0.0 released

This is the first development release for the Jewel cycle.  We are off to a good start, with lots of performance improvements flowing into the tree.  We are targeting sometime in Q1 2016 for the final Jewel.


  • build: cmake tweaks (pr#6254, John Spray)
  • build: more CMake package check fixes (pr#6108, Daniel Gryniewicz)
  • ceph-disk: get Nonetype when ceph-disk list with –format plain on single device. (pr#6410, Vicente Cheng)
  • ceph: fix tell behavior (pr#6329, David Zafman)
  • ceph-fuse: While starting ceph-fuse, start the log thread first (issue#13443, pr#6224, Wenjun Huang)
  • client: don’t mark_down on command reply (pr#6204, John Spray)
  • client: drop prefix from ints (pr#6275, John Coyle)
  • client: sys/file.h includes for flock operations (pr#6282, John Coyle)
  • cls_rbd: change object_map_update to return 0 on success, add logging (pr#6467, Douglas Fuller)
  • cmake: Use uname instead of arch. (pr#6358, John Coyle)
  • common: assert: __STRING macro is not defined by musl libc. (pr#6210, John Coyle)
  • common: fix OpTracker age histogram calculation (pr#5065, Zhiqiang Wang)
  • common/MemoryModel: Added explicit feature check for mallinfo(). (pr#6252, John Coyle)
  • common/ fix verification crashing when there’s no objects (pr#5853, Piotr Dałek)
  • common: optimize debug logging (pr#6307, Adam Kupczyk)
  • common: Thread: move copy constructor and assignment op (pr#5133, Michal Jarzabek)
  • common: WorkQueue: new PointerWQ base class for ContextWQ (issue#13636, pr#6525, Jason Dillaman)
  • compat: use prefixed typeof extension (pr#6216, John Coyle)
  • crush: validate bucket id before indexing buckets array (issue#13477, pr#6246, Sage Weil)
  • doc: download GPG key from (issue#13603, pr#6384, Ken Dreyer)
  • doc: fix outdated content in cache tier (pr#6272, Yuan Zhou)
  • doc/release-notes: v9.1.0 (pr#6281, Loic Dachary)
  • doc/releases-notes: fix build error (pr#6483, Kefu Chai)
  • doc: remove toctree items under Create CephFS (pr#6241, Jevon Qiao)
  • doc: rename the “Create a Ceph User” section and add verbage about… (issue#13502, pr#6297, ritz303)
  • docs: Fix styling of newly added mirror docs (pr#6127, Wido den Hollander)
  • doc, tests: update all to (pr#6435, Alfredo Deza)
  • doc: update doc for with new pool settings (pr#5951, Guang Yang)
  • doc: update radosgw-admin example (pr#6256, YankunLi)
  • doc: update the OS recommendations for newer Ceph releases (pr#6355, ritz303)
  • drop envz.h includes (pr#6285, John Coyle)
  • libcephfs: Improve portability by replacing loff_t type usage with off_t (pr#6301, John Coyle)
  • libcephfs: only check file offset on glibc platforms (pr#6288, John Coyle)
  • librados: fix examples/librados/Makefile error. (pr#6320, You Ji)
  • librados: init crush_location from config file. (issue#13473, pr#6243, Wei Luo)
  • librados: wrongly passed in argument for stat command (issue#13703, pr#6476, xie xingguo)
  • librbd: deadlock while attempting to flush AIO requests (issue#13726, pr#6508, Jason Dillaman)
  • librbd: fix enable objectmap feature issue (issue#13558, pr#6339, xinxin shu)
  • librbd: remove duplicate read_only test in librbd::async_flatten (pr#5856, runsisi)
  • mailmap: modify member info (pr#6468, Xiaowei Chen)
  • mailmap: updates (pr#6258, M Ranga Swami Reddy)
  • mailmap: Xie Xingguo affiliation (pr#6409, Loic Dachary)
  • mds: implement snapshot rename (pr#5645, xinxin shu)
  • mds: messages/MOSDOp: cast in assert to eliminate warnings (issue#13625, pr#6414, David Zafman)
  • mds: new filtered MDS tell commands for sessions (pr#6180, John Spray)
  • mds/Session: use projected parent for auth path check (issue#13364, pr#6200, Sage Weil)
  • mon: should not set isvalid = true when cephx_verify_authorizer return false (issue#13525, pr#6306, Ruifeng Yang)
  • osd: Add config option osd_read_ec_check_for_errors for testing (pr#5865, David Zafman)
  • osd: add pin/unpin support to cache tier (11066) (pr#6326, Zhiqiang Wang)
  • osd: auto repair EC pool (issue#12754, pr#6196, Guang Yang)
  • osd: drop the interim set from load_pgs() (pr#6277, Piotr Dałek)
  • osd: FileJournal: _fdump wrongly returns if journal is currently unreadable. (issue#13626, pr#6406, xie xingguo)
  • osd: FileStore: add a field indicate xattr only one chunk for set xattr. (pr#6244, Jianpeng Ma)
  • osd: FileStore: LFNIndex: remove redundant local variable ‘obj’. (issue#13552, pr#6333, xiexingguo)
  • osd: FileStore: potential memory leak if _fgetattrs fails (issue#13597, pr#6377, xie xingguo)
  • osd: FileStore: remove unused local variable ‘handle’ (pr#6381, xie xingguo)
  • osd: fix bogus scrub results when missing a clone (issue#12738, issue#12740, pr#5783, David Zafman)
  • osd: fix debug message in OSD::is_healthy (pr#6226, Xiaoxi Chen)
  • osd: fix MOSDOp encoding (pr#6174, Sage Weil)
  • osd: init started to 0 (issue#13206, pr#6107, Sage Weil)
  • osd: KeyValueStore: fix the name’s typo of keyvaluestore_default_strip_size (pr#6375, Zhi Zhang)
  • osd: new and delete ObjectStore::Transaction in a function is not necessary (pr#6299, Ruifeng Yang)
  • osd: optimize get_object_context (pr#6305, Jianpeng Ma)
  • osd: optimize MOSDOp/do_op/handle_op (pr#5211, Jacek J. Lakis)
  • osd: os/chain_xattr: On linux use linux/limits.h for XATTR_NAME_MAX. (pr#6343, John Coyle)
  • osd: reorder bool fields in PGLog struct (pr#6279, Piotr Dałek)
  • osd: ReplicatedPG: remove unused local variables (issue#13575, pr#6360, xiexingguo)
  • osd: reset primary and up_primary when building a new past_interval. (issue#13471, pr#6240, xiexingguo)
  • radosgw-admin: Checking the legality of the parameters (issue#13018, pr#5879, Qiankun Zheng)
  • radosgw-admin: Create –secret-key alias for –secret (issue#5821, pr#5335, Yuan Zhou)
  • radosgw-admin: metadata list user should return an empty list when user pool is empty (issue#13596, pr#6465, Orit Wasserman)
  • rados: new options for write benchmark (pr#6340, Joaquim Rocha)
  • rbd: fix clone isssue (issue#13553, pr#6334, xinxin shu)
  • rbd: fix init-rbdmap CMDPARAMS (issue#13214, pr#6109, Sage Weil)
  • rbdmap: systemd support (issue#13374, pr#6479, Boris Ranto)
  • rbd: rbdmap improvements (pr#6445, Boris Ranto)
  • release-notes: draft v0.94.4 release notes (pr#5907, Loic Dachary)
  • release-notes: draft v0.94.4 release notes (pr#6195, Loic Dachary)
  • release-notes: draft v0.94.4 release notes (pr#6238, Loic Dachary)
  • rgw: add compat header for TEMP_FAILURE_RETRY (pr#6294, John Coyle)
  • rgw: add default quota config (pr#6400, Daniel Gryniewicz)
  • rgw: add support for getting Swift’s DLO without manifest handling (pr#6206, Radoslaw Zarzynski)
  • rgw: clarify the error message when trying to create an existed user (pr#5938, Zeqiang Zhuang)
  • rgw: fix objects can not be displayed which object name does not cont… (issue#12963, pr#5738, Weijun Duan)
  • rgw: fix typo in RGWHTTPClient::process error message (pr#6424, Brad Hubbard)
  • rgw: fix wrong etag calculation during POST on S3 bucket. (issue#11241, pr#6030, Radoslaw Zarzynski)
  • rgw: mdlog trim add usage prompt (pr#6059, Weijun Duan)
  • rgw: modify the conditional statement in parse_metadata_key method. (pr#5875, Zengran Zhang)
  • rgw: refuse to calculate digest when the s3 secret key is empty (issue#13133, pr#6045, Sangdi Xu)
  • rgw: remove extra check in RGWGetObj::execute (issue#12352, pr#5262, Javier M. Mellid)
  • rgw: support core file limit for radosgw daemon (pr#6346, Guang Yang)
  • rgw: swift use Civetweb ssl can not get right url (issue#13628, pr#6408, Weijun Duan)
  • rocksdb: build with PORTABLE=1 (pr#6311, Sage Weil)
  • rocksdb: remove rdb source files from dist tarball (issue#13554, pr#6379, Kefu Chai)
  • rocksdb: use native rocksdb makefile (and our autotools) (pr#6290, Sage Weil)
  • rpm: correctly declare systemd dependency for SLE/openSUSE (pr#6114, Nathan Cutler)
  • rpm: fix libs-compat / devel-compat conditional (issue#12315, pr#5219, Ken Dreyer)
  • rpm: rhel 5.9 librados compile fix, moved blkid to RBD check/compilation (issue#13177, pr#5954, Rohan Mars)
  • scripts: release_notes can track original issue (pr#6009, Abhishek Lekshmanan)
  • test/libcephfs/flock: add sys/file.h include for flock operations (pr#6310, John Coyle)
  • test_rgw_admin: use freopen for output redirection. (pr#6303, John Coyle)
  • tests: allow to run under root (issue#13355, pr#6173, Loic Dachary)
  • tests: ceph-disk workunit uses configobj (pr#6342, Loic Dachary)
  • tests: destroy testprofile before creating one (issue#13664, pr#6446, Loic Dachary)
  • tests: port uniqueness reminder (pr#6387, Loic Dachary)
  • tests: test/librados/ must create profile (issue#13664, pr#6452, Loic Dachary)
  • tools/cephfs: fix overflow writing header to fixed size buffer (#13816) (pr#6617, John Spray)
  • tools: ceph-monstore-update-crush: add “–test” when testing crushmap (pr#6418, Kefu Chai)
  • tools:remove duplicate references (pr#5917, Bo Cai)
  • vstart: grant full access to Swift testing account (pr#6239, Yuan Zhou)
  • vstart: set cephfs root uid/gid to caller (pr#6255, John Spray)


v0.80.11 Firefly released

This is a bugfix release for Firefly.  As the Firefly 0.80.x series is nearing its planned end of life in January 2016 it may also be the last.

We recommend that all Firefly users upgrade.

For more detailed information, see the complete changelog.


  • build/ops: /etc/init.d/radosgw restart does not work correctly (issue#11140, pr#5831, Dmitry Yatsushkevich)
  • build/ops: Fix -Wno-format and -Werror=format-security options clash (issue#13417, pr#6207, Boris Ranto)
  • build/ops: ceph-common needs python-argparse on older distros, but doesn’t require it (issue#12034, pr#5217, Nathan Cutler)
  • build/ops: running fdupes unnecessarily (issue#12301, pr#5224, Nathan Cutler)
  • build/ops: 50-rbd.rules conditional is wrong (issue#12166, pr#5225, Nathan Cutler)
  • build/ops: useless %py_requires breaks SLE11-SP3 build (issue#12351, pr#5394, Nathan Cutler)
  • build/ops: fedora21 has junit, not junit4 (issue#10728, pr#6203, Ken Dreyer, Loic Dachary)
  • build/ops: upstart: configuration is too generous on restarts (issue#11798, pr#5992, Sage Weil)
  • common: Client admin socket leaks file descriptors (issue#11535, pr#4633, Jon Bernard)
  • common: FileStore calls syncfs(2) even it is not supported (issue#12512, pr#5529, Danny Al-Gaaf, Kefu Chai, Jianpeng Ma)
  • common: HeartBeat: include types (issue#13088, pr#6038, Sage Weil)
  • common: Malformed JSON command output when non-ASCII strings are present (issue#7387, pr#4635, Kefu Chai, Tim Serong)
  • common: Memory leak in, pthread_mutexattr_init without pthread_mutexattr_destroy (issue#11762, pr#5403, Ketor Meng)
  • common: Thread:pthread_attr_destroy(thread_attr) when done with it (issue#12570, pr#6325, Piotr Dałek, Zheng Qiankun)
  • common: ThreadPool add/remove work queue methods not thread safe (issue#12662, pr#5991, Jason Dillaman)
  • common: buffer: critical bufferlist::zero bug (issue#12252, pr#5388, Haomai Wang)
  • common: log: take mutex while opening fd (issue#12465, pr#5406, Samuel Just)
  • common: recursive lock of md_config_t (0) (issue#12614, pr#5814, Josh Durgin)
  • crush: take crashes due to invalid arg (issue#11602, pr#4769, Sage Weil)
  • doc: backport v0.80.10 release notes to firefly (issue#11090, pr#5307, Loic Dachary, Sage Weil)
  • doc: update docs to point to (issue#13162, pr#5993, Alfredo Deza)
  • fs: MDSMonitor: handle MDSBeacon messages properly (issue#11590, pr#5199, Kefu Chai)
  • fs: client nonce collision due to unshared pid namespaces (issue#13032, pr#6087, Josh Durgin, Sage Weil)
  • librbd: Objectcacher setting max object counts too low (issue#7385, pr#4639, Jason Dillaman)
  • librbd: aio calls may block (issue#11056, pr#4854, Haomai Wang, Sage Weil, Jason Dillaman)
  • librbd: 1967: FAILED assert(watchers.size() == 1) (issue#12176, pr#5171, Jason Dillaman)
  • mon: Clock skew causes missing summary and confuses Calamari (issue#11877, pr#4867, Thorsten Behrens)
  • mon: EC pools are not allowed as cache pools, disallow in the mon (issue#11650, pr#5389, Samuel Just)
  • mon: Make it more difficult to delete pools in firefly (issue#11800, pr#4788, Sage Weil)
  • mon: MonitorDBStore: get_next_key() only if prefix matches (issue#11786, pr#5360, Joao Eduardo Luis)
  • mon: PaxosService: call post_refresh() instead of post_paxos_update() (issue#11470, pr#5358, Joao Eduardo Luis)
  • mon: add a cache layer over MonitorDBStore (issue#12638, pr#5698, Kefu Chai)
  • mon: adding exsting pool as tier with –force-nonempty clobbers removed_snaps (issue#11493, pr#5236, Sage Weil, Samuel Just)
  • mon: ceph fails to compile with boost 1.58 (issue#11576, pr#5129, Kefu Chai)
  • mon: does not check for IO errors on every transaction (issue#13089, pr#6091, Sage Weil)
  • mon: get pools health’info have error (issue#12402, pr#5410, renhwztetecs)
  • mon: increase globalid default for firefly (issue#13255, pr#6010, Sage Weil)
  • mon: pgmonitor: wrong at/near target max“ reporting (issue#12401, pr#5409, huangjun)
  • mon: register_new_pgs() should check ruleno instead of its index (issue#12210, pr#5404, Xinze Chi)
  • mon: scrub error (osdmap encoding mismatch?) upgrading from 0.80 to ~0.80.2 (issue#8815, issue#8674, issue#9064, pr#5200, Sage Weil, Zhiqiang Wang, Samuel Just)
  • mon: the output is wrong when runing ceph osd reweight (issue#12251, pr#5408, Joao Eduardo Luis)
  • objecter: can get stuck in redirect loop if osdmap epoch == last_force_op_resend (issue#11026, pr#4597, Jianpeng Ma, Sage Weil)
  • objecter: pg listing can deadlock when throttling is in use (issue#9008, pr#5043, Guang Yang)
  • objecter: resend linger ops on split (issue#9806, pr#5062, Josh Durgin, Samuel Just)
  • osd: Cleanup boost optionals for boost 1.56 (issue#9983, pr#5039, William A. Kennington III)
  • osd: LibRadosTwoPools[EC]PP.PromoteSnap failure (issue#10052, pr#5050, Sage Weil)
  • osd: Mutex Assert from PipeConnection::try_get_pipe (issue#12437, pr#5815, David Zafman)
  • osd: PG stuck with remapped (issue#9614, pr#5044, Guang Yang)
  • osd: PG::handle_advance_map: on_pool_change after handling the map change (issue#12809, pr#5988, Samuel Just)
  • osd: PGLog: split divergent priors as well (issue#11069, pr#4631, Samuel Just)
  • osd: PGLog::proc_replica_log: correctly handle case where entries between olog.head and log.tail were split out (issue#11358, pr#5287, Samuel Just)
  • osd: WBThrottle::clear_object: signal on cond when we reduce throttle values (issue#12223, pr#5822, Samuel Just)
  • osd: cache full mode still skips young objects (issue#10006, pr#5051, Xinze Chi, Zhiqiang Wang)
  • osd: crash creating/deleting pools (issue#12429, pr#5526, John Spray)
  • osd: explicitly specify OSD features in MOSDBoot (issue#10911, pr#4960, Sage Weil)
  • osd: is_new_interval() fixes (issue#11771, issue#10399, pr#5726, Samuel Just, Jason Dillaman)
  • osd: make the all osd/filestore thread pool suicide timeouts separately configurable (issue#11439, pr#5823, Samuel Just)
  • osd: object creation by write cannot use an offset on an erasure coded pool (issue#11507, pr#4632, Jianpeng Ma, Loic Dachary)
  • osd: os/FileJournal: Fix journal write fail, align for direct io (issue#12943, pr#5619, Xie Rui)
  • osd: osd/ 732: FAILED assert(log.log.size() == log_keys_debug.size()) (issue#12652, pr#5820, Sage Weil)
  • osd: read on chunk-aligned xattr not handled (issue#12309, pr#5235, Sage Weil)
  • rgw: Change variable length array of std::strings (not legal in C++) to std::vector<std::string> (issue#12467, pr#4583, Daniel J. Hofmann)
  • rgw: Civetweb RGW appears to report full size of object as downloaded when only partially downloaded (issue#11851, pr#5234, Yehuda Sadeh)
  • rgw: Keystone PKI token expiration is not enforced (issue#11367, pr#4765, Anton Aksola)
  • rgw: Object copy bug (issue#11639, pr#4762, Javier M. Mellid)
  • rgw: RGW returns requested bucket name raw in “Bucket” response header (issue#11860, issue#12537, pr#5730, Yehuda Sadeh, Wido den Hollander)
  • rgw: Swift API: response for PUT on /container does not contain the mandatory Content-Length header when FCGI is used (issue#11036, pr#5170, Radoslaw Zarzynski)
  • rgw: content length parsing calls strtol() instead of strtoll() (issue#10701, pr#5997, Yehuda Sadeh)
  • rgw: delete bucket does not remove .bucket.meta file (issue#11149, pr#4641, Orit Wasserman)
  • rgw: doesn’t return ‘x-timestamp’ in header which is used by ‘View Details’ of OpenStack (issue#8911, pr#4584, Yehuda Sadeh)
  • rgw: init some manifest fields when handling explicit objs (issue#11455, pr#5729, Yehuda Sadeh)
  • rgw: logfile does not get chowned properly (issue#12073, pr#5233, Thorsten Behrens)
  • rgw: logrotate.conf calls service with wrong init script name (issue#12043, pr#5390, wuxingyi)
  • rgw: quota not respected in POST object (issue#11323, pr#4642, Sergey Arkhipov)
  • rgw: swift smoke test fails on TestAccountUTF8 (issue#11091, issue#11438, issue#12939, issue#12157, issue#12158, issue#12363, pr#5532, Radoslaw Zarzynski, Orit Wasserman, Robin H. Johnson)
  • rgw: use correct objv_tracker for bucket instance (issue#11416, pr#4535, Yehuda Sadeh)
  • tests: ceph-fuse crash in test_client_recovery (issue#12673, pr#5813, Loic Dachary)
  • tests: kernel_untar_build fails on EL7 (issue#11758, pr#6000, Greg Farnum)
  • tests: qemu workunit refers to (issue#13420, pr#6328, Yuan Zhou, Sage Weil)
  • tools: src/ceph-disk : disk zap sgdisk invocation (issue#11143, pr#4636, Thorsten Behrens, Owen Synge)
  • tools: ceph-disk: sometimes the journal symlink is not created (issue#10146, pr#5541, Dan van der Ster)
  • tools: ceph-disk: support NVMe device partitions (issue#11612, pr#4771, Ilja Slepnev)
  • tools: ceph-post-file fails on rhel7 (issue#11836, pr#5037, Joseph McDonald, Sage Weil)
  • tools: ceph_argparse_flag has no regular 3rd parameter (issue#11543, pr#4582, Thorsten Behrens)
  • tools: use a new disk as journal disk,ceph-disk prepare fail (issue#10983, pr#4630, Loic Dachary)



In case you didn’t know, Ceph Days are a series of regular events in support of the Ceph community that happen at locations around the world from New York to Berlin, and more recently in APAC to Shanghai and Melbourne.

The Melbourne edition on November 5th, 2015 was Australia’s first ever Ceph Day. It was hosted at the Clayton campus of sponsor Monash University, about a $60 Uber ride from the city centre. Monash is also home to a part of Australia’s national research cloud: NeCTAR, including Ceph-backed storage capacity provided as part of the Research Data Services initiative.

Watch this video to get a feel for the day in about 2 minutes.

read more…

v9.2.0 Infernalis released

InfernalisThis major release will be the foundation for the next stable series. There have been some major changes since v0.94.x Hammer, and the upgrade process is non-trivial. Please read these release notes carefully.


read more…

v0.94.5 Hammer released

This Hammer point release fixes a critical regression in librbd that can cause Qemu/KVM to crash when caching is enabled on images that have been cloned.

All v0.94.4 Hammer users are strongly encouraged to upgrade.


  • librbd: potential assertion failure during cache read (issue#13559, pr#6348, Jason Dillaman)
  • osd: osd/ReplicatedPG: remove stray debug line (issue#13455, pr#6362, Sage Weil)
  • tests: qemu workunit refers to (issue#13420, pr#6330, Yuan Zhou)

For more detailed information, see the complete changelog.


v0.94.4 Hammer released

This Hammer point fixes several important bugs in Hammer, as well as fixing interoperability issues that are required before an upgrade to Infernalis. That is, all users of earlier version of Hammer or any version of Firefly will first need to upgrade to hammer v0.94.4 or later before upgrading to Infernalis (or future releases).

All v0.94.x Hammer users are strongly encouraged to upgrade.


  • build/ops: 50-rbd.rules conditional is wrong (issue#12166, pr#5207, Nathan Cutler)
  • build/ops: ceph-common needs python-argparse on older distros, but doesn’t require it (issue#12034, pr#5216, Nathan Cutler)
  • build/ops: radosgw requires apache for SUSE only – makes no sense (issue#12358, pr#5411, Nathan Cutler)
  • build/ops: rpm: cephfs_java not fully conditionalized (issue#11991, pr#5202, Nathan Cutler)
  • build/ops: rpm: not possible to turn off Java (issue#11992, pr#5203, Owen Synge)
  • build/ops: running fdupes unnecessarily (issue#12301, pr#5223, Nathan Cutler)
  • build/ops: snappy-devel for all supported distros (issue#12361, pr#5264, Nathan Cutler)
  • build/ops: SUSE/openSUSE builds need libbz2-devel (issue#11629, pr#5204, Nathan Cutler)
  • build/ops: useless %py_requires breaks SLE11-SP3 build (issue#12351, pr#5412, Nathan Cutler)
  • build/ops: error in ext_mime_map_init() when /etc/mime.types is missing (issue#11864, pr#5385, Ken Dreyer)
  • build/ops: upstart: limit respawn to 3 in 30 mins (instead of 5 in 30s) (issue#11798, pr#5930, Sage Weil)
  • build/ops: With root as default user, unable to have multiple RGW instances running (issue#10927, pr#6161, Sage Weil)
  • build/ops: With root as default user, unable to have multiple RGW instances running (issue#11140, pr#6161, Sage Weil)
  • build/ops: With root as default user, unable to have multiple RGW instances running (issue#11686, pr#6161, Sage Weil)
  • build/ops: With root as default user, unable to have multiple RGW instances running (issue#12407, pr#6161, Sage Weil)
  • cli: ceph: cli throws exception on unrecognized errno (issue#11354, pr#5368, Kefu Chai)
  • cli: ceph tell: broken error message / misleading hinting (issue#11101, pr#5371, Kefu Chai)
  • common: arm: all programs that link to librados2 hang forever on startup (issue#12505, pr#5366, Boris Ranto)
  • common: buffer: critical bufferlist::zero bug (issue#12252, pr#5365, Haomai Wang)
  • common: ceph-object-corpus: add 0.94.2-207-g88e7ee7 hammer objects (issue#13070, pr#5551, Sage Weil)
  • common: do not insert emtpy ptr when rebuild emtpy bufferlist (issue#12775, pr#5764, Xinze Chi)
  • common: [ FAILED ] TestLibRBD.BlockingAIO (issue#12479, pr#5768, Jason Dillaman)
  • common: LibCephFS.GetPoolId failure (issue#12598, pr#5887, Yan, Zheng)
  • common: Memory leak in, pthread_mutexattr_init without pthread_mutexattr_destroy (issue#11762, pr#5378, Ketor Meng)
  • common: object_map_update fails with -EINVAL return code (issue#12611, pr#5559, Jason Dillaman)
  • common: Pipe: Drop connect_seq increase line (issue#13093, pr#5908, Haomai Wang)
  • common: recursive lock of md_config_t (0) (issue#12614, pr#5759, Josh Durgin)
  • crush: ceph osd crush reweight-subtree does not reweight parent node (issue#11855, pr#5374, Sage Weil)
  • doc: update docs to point to (issue#13162, pr#6156, Alfredo Deza)
  • fs: ceph-fuse 0.94.2-1trusty segfaults / aborts (issue#12297, pr#5381, Greg Farnum)
  • fs: segfault launching ceph-fuse with bad –name (issue#12417, pr#5382, John Spray)
  • librados: Change radosgw pools default crush ruleset (issue#11640, pr#5754, Yuan Zhou)
  • librbd: correct issues discovered via lockdep / helgrind (issue#12345, pr#5296, Jason Dillaman)
  • librbd: Crash during TestInternal.MultipleResize (issue#12664, pr#5769, Jason Dillaman)
  • librbd: deadlock during cooperative exclusive lock transition (issue#11537, pr#5319, Jason Dillaman)
  • librbd: Possible crash while concurrently writing and shrinking an image (issue#11743, pr#5318, Jason Dillaman)
  • mon: add a cache layer over MonitorDBStore (issue#12638, pr#5697, Kefu Chai)
  • mon: fix crush testing for new pools (issue#13400, pr#6192, Sage Weil)
  • mon: get pools health’info have error (issue#12402, pr#5369, renhwztetecs)
  • mon: implicit erasure code crush ruleset is not validated (issue#11814, pr#5276, Loic Dachary)
  • mon: PaxosService: call post_refresh() instead of post_paxos_update() (issue#11470, pr#5359, Joao Eduardo Luis)
  • mon: pgmonitor: wrong at/near target max“ reporting (issue#12401, pr#5370, huangjun)
  • mon: register_new_pgs() should check ruleno instead of its index (issue#12210, pr#5377, Xinze Chi)
  • mon: Show osd as NONE in ceph osd map <pool> <object> output (issue#11820, pr#5376, Shylesh Kumar)
  • mon: the output is wrong when runing ceph osd reweight (issue#12251, pr#5372, Joao Eduardo Luis)
  • osd: allow peek_map_epoch to return an error (issue#13060, pr#5892, Sage Weil)
  • osd: cache agent is idle although one object is left in the cache (issue#12673, pr#5765, Loic Dachary)
  • osd: copy-from doesn’t preserve truncate_{seq,size} (issue#12551, pr#5885, Samuel Just)
  • osd: crash creating/deleting pools (issue#12429, pr#5527, John Spray)
  • osd: fix repair when recorded digest is wrong (issue#12577, pr#5468, Sage Weil)
  • osd: include/ceph_features: define HAMMER_0_94_4 feature (issue#13026, pr#5687, Sage Weil)
  • osd: is_new_interval() fixes (issue#10399, pr#5691, Jason Dillaman)
  • osd: is_new_interval() fixes (issue#11771, pr#5691, Jason Dillaman)
  • osd: long standing slow requests: connection->session->waiting_for_map->connection ref cycle (issue#12338, pr#5761, Samuel Just)
  • osd: Mutex Assert from PipeConnection::try_get_pipe (issue#12437, pr#5758, David Zafman)
  • osd: pg_interval_t::check_new_interval – for ec pool, should not rely on min_size to determine if the PG was active at the interval (issue#12162, pr#5373, Guang G Yang)
  • osd: 732: FAILED assert(log.log.size() == log_keys_debug.size()) (issue#12652, pr#5763, Sage Weil)
  • osd: PGLog::proc_replica_log: correctly handle case where entries between olog.head and log.tail were split out (issue#11358, pr#5380, Samuel Just)
  • osd: read on chunk-aligned xattr not handled (issue#12309, pr#5367, Sage Weil)
  • osd: suicide timeout during peering – search for missing objects (issue#12523, pr#5762, Guang G Yang)
  • osd: WBThrottle::clear_object: signal on cond when we reduce throttle values (issue#12223, pr#5757, Samuel Just)
  • rbd: crash during shutdown after writeback blocked by IO errors (issue#12597, pr#5767, Jianpeng Ma)
  • rgw: add delimiter to prefix only when path is specified (issue#12960, pr#5860, Sylvain Baubeau)
  • rgw: create a tool for orphaned objects cleanup (issue#9604, pr#5717, Yehuda Sadeh)
  • rgw: don’t preserve acls when copying object (issue#11563, pr#6039, Yehuda Sadeh)
  • rgw: don’t preserve acls when copying object (issue#12370, pr#6039, Yehuda Sadeh)
  • rgw: don’t preserve acls when copying object (issue#13015, pr#6039, Yehuda Sadeh)
  • rgw: Ensure that swift keys don’t include backslashes (issue#7647, pr#5716, Yehuda Sadeh)
  • rgw: GWWatcher::handle_error -> common/ 95: FAILED assert(r == 0) (issue#12208, pr#6164, Yehuda Sadeh)
  • rgw: HTTP return code is not being logged by CivetWeb (issue#12432, pr#5498, Yehuda Sadeh)
  • rgw: init_rados failed leads to repeated delete (issue#12978, pr#6165, Xiaowei Chen)
  • rgw: init some manifest fields when handling explicit objs (issue#11455, pr#5732, Yehuda Sadeh)
  • rgw: Keystone Fernet tokens break auth (issue#12761, pr#6162, Abhishek Lekshmanan)
  • rgw: region data still exist in region-map after region-map update (issue#12964, pr#6163, dwj192)
  • rgw: remove trailing :port from host for purposes of subdomain matching (issue#12353, pr#6042, Yehuda Sadeh)
  • rgw: rest-bench common/ 54: FAILED assert(_threads.empty()) (issue#3896, pr#5383, huangjun)
  • rgw: returns requested bucket name raw in Bucket response header (issue#12537, pr#5715, Yehuda Sadeh)
  • rgw: segmentation fault when rgw_gc_max_objs > HASH_PRIME (issue#12630, pr#5719, Ruifeng Yang)
  • rgw: segments are read during HEAD on Swift DLO (issue#12780, pr#6160, Yehuda Sadeh)
  • rgw: setting max number of buckets for user via ceph.conf option (issue#12714, pr#6166, Vikhyat Umrao)
  • rgw: Swift API: X-Trans-Id header is wrongly formatted (issue#12108, pr#5721, Radoslaw Zarzynski)
  • rgw: testGetContentType and testHead failed (issue#11091, pr#5718, Radoslaw Zarzynski)
  • rgw: testGetContentType and testHead failed (issue#11438, pr#5718, Radoslaw Zarzynski)
  • rgw: testGetContentType and testHead failed (issue#12157, pr#5718, Radoslaw Zarzynski)
  • rgw: testGetContentType and testHead failed (issue#12158, pr#5718, Radoslaw Zarzynski)
  • rgw: testGetContentType and testHead failed (issue#12363, pr#5718, Radoslaw Zarzynski)
  • rgw: the arguments ‘domain’ should not be assigned when return false (issue#12629, pr#5720, Ruifeng Yang)
  • tests: qa/workunits/cephtool/ don’t assume crash_replay_interval=45 (issue#13406, pr#6172, Sage Weil)
  • tests: TEST_crush_rule_create_erasure consistently fails on i386 builder (issue#12419, pr#6201, Loic Dachary)
  • tools: ceph-disk zap should ensure block device (issue#11272, pr#5755, Loic Dachary)

For more detailed information, see the complete changelog.

v9.1.0 Infernalis release candidate released

This is the first Infernalis release candidate. There have been some major changes since Hammer, and the upgrade process is non-trivial. Please read carefully.


The v9.1.0 packages are pushed to the development release repositories:

For for info, see:

Or install with ceph-deploy via:

ceph-deploy install --testing HOST


  • librbd and librados ABI compatibility is broken. Be careful installing this RC on client machines (e.g., those running qemu). It will be fixed in the final v9.2.0 release.


  • General:
    • Ceph daemons are now managed via systemd (with the exception of Ubuntu Trusty, which still uses upstart).
    • Ceph daemons run as ‘ceph’ user instead root.
    • On Red Hat distros, there is also an SELinux policy.
  • RADOS:
    • The RADOS cache tier can now proxy write operations to the base tier, allowing writes to be handled without forcing migration of an object into the cache.
    • The SHEC erasure coding support is no longer flagged as experimental. SHEC trades some additional storage space for faster repair.
    • There is now a unified queue (and thus prioritization) of client IO, recovery, scrubbing, and snapshot trimming.
    • There have been many improvements to low-level repair tooling (ceph-objectstore-tool).
    • The internal ObjectStore API has been significantly cleaned up in order to faciliate new storage backends like NewStore.
  • RGW:
    • The Swift API now supports object expiration.
    • There are many Swift API compatibility improvements.
  • RBD:
    • The rbd du command shows actual usage (quickly, when object-map is enabled).
    • The object-map feature has seen many stability improvements.
    • Object-map and exclusive-lock features can be enabled or disabled dynamically.
    • You can now store user metadata and set persistent librbd options associated with individual images.
    • The new deep-flatten features allows flattening of a clone and all of its snapshots. (Previously snapshots could not be flattened.)
    • The export-diff command command is now faster (it uses aio). There is also a new fast-diff feature.
    • The –size argument can be specified with a suffix for units (e.g., --size 64G).
    • There is a new rbd status command that, for now, shows who has the image open/mapped.
  • CephFS:
    • You can now rename snapshots.
    • There have been ongoing improvements around administration, diagnostics, and the check and repair tools.
    • The caching and revocation of client cache state due to unused inodes has been dramatically improved.
    • The ceph-fuse client behaves better on 32-bit hosts.


We have decided to drop support for many older distributions so that we can move to a newer compiler toolchain (e.g., C++11). Although it is still possible to build Ceph on older distributions by installing backported development tools, we are not building and publishing release packages for

In particular,

  • CentOS 7 or later; we have dropped support for CentOS 6 (and other RHEL 6 derivatives, like Scientific Linux 6).
  • Debian Jessie 8.x or later; Debian Wheezy 7.x’s g++ has incomplete support for C++11 (and no systemd).
  • Ubuntu Trusty 14.04 or later; Ubuntu Precise 12.04 is no longer supported.
  • Fedora 22 or later.


Upgrading directly from Firefly v0.80.z is not possible. All clusters must first upgrade to Hammer v0.94.4 or a later v0.94.z release; only then is it possible to upgrade to Infernalis 9.2.z.

Note that v0.94.4 isn’t released yet, but you can upgrade to a test build from gitbuilder with:

ceph-deploy install --dev hammer HOST

The v0.94.4 Hammer point release will be out before v9.2.0 Infernalis is.


  • For all distributions that support systemd (CentOS 7, Fedora, Debian Jessie 8.x, OpenSUSE), ceph daemons are now managed using native systemd files instead of the legacy sysvinit scripts. For example,:

    systemctl start       # start all daemons
    systemctl status ceph-osd@12      # check status of osd.12

    The main notable distro that is not yet using systemd is Ubuntu trusty 14.04. (The next Ubuntu LTS, 16.04, will use systemd instead of upstart.)

  • Ceph daemons now run as user and group ceph by default. The ceph user has a static UID assigned by Fedora and Debian (also used by derivative distributions like RHEL/CentOS and Ubuntu). On SUSE the ceph user will currently get a dynamically assigned UID when the user is created.

    If your systems already have a ceph user, upgrading the package will cause problems. We suggest you first remove or rename the existing ‘ceph’ user before upgrading.

    When upgrading, administrators have two options:

    1. Add the following line to ceph.conf on all hosts:

      setuser match path = /var/lib/ceph/$type/$cluster-$id

      This will make the Ceph daemons run as root (i.e., not drop privileges and switch to user ceph) if the daemon’s data directory is still owned by root. Newly deployed daemons will be created with data owned by user ceph and will run with reduced privileges, but upgraded daemons will continue to run as root.

    2. Fix the data ownership during the upgrade. This is the preferred option, but is more work. The process for each host would be to:

      1. Upgrade the ceph package. This creates the ceph user and group. For example:

        ceph-deploy install --stable infernalis HOST
      2. Stop the daemon(s).:

        service ceph stop           # fedora, centos, rhel, debian
        stop ceph-all               # ubuntu
      3. Fix the ownership:

        chown -R ceph:ceph /var/lib/ceph
      4. Restart the daemon(s).:

        start ceph-all                # ubuntu
        systemctl start   # debian, centos, fedora, rhel
  • The on-disk format for the experimental KeyValueStore OSD backend has changed. You will need to remove any OSDs using that backend before you upgrade any test clusters that use it.


  • When a pool quota is reached, librados operations now block indefinitely, the same way they do when the cluster fills up. (Previously they would return -ENOSPC). By default, a full cluster or pool will now block. If your librados application can handle ENOSPC or EDQUOT errors gracefully, you can get error returns instead by using the new librados OPERATION_FULL_TRY flag.


NOTE: These notes are somewhat abbreviated while we find a less time-consuming process for generating them.

  • build: C++11 now supported
  • build: many cmake improvements
  • build: OSX build fixes (Yan, Zheng)
  • build: remove rest-bench
  • ceph-disk: many fixes (Loic Dachary)
  • ceph-disk: support for multipath devices (Loic Dachary)
  • ceph-fuse: mostly behave on 32-bit hosts (Yan, Zheng)
  • ceph-objectstore-tool: many improvements (David Zafman)
  • common: bufferlist performance tuning (Piotr Dalek, Sage Weil)
  • common: make mutex more efficient
  • common: some async compression infrastructure (Haomai Wang)
  • librados: add FULL_TRY and FULL_FORCE flags for dealing with full clusters or pools (Sage Weil)
  • librados: fix notify completion race (#13114 Sage Weil)
  • librados, libcephfs: randomize client nonces (Josh Durgin)
  • librados: pybind: fix binary omap values (Robin H. Johnson)
  • librbd: fix reads larger than the cache size (Lu Shi)
  • librbd: metadata filter fixes (Haomai Wang)
  • librbd: use write_full when possible (Zhiqiang Wang)
  • mds: avoid emitting cap warnigns before evicting session (John Spray)
  • mds: fix expected holes in journal objects (#13167 Yan, Zheng)
  • mds: fix SnapServer crash on deleted pool (John Spray)
  • mds: many fixes (Yan, Zheng, John Spray, Greg Farnum)
  • mon: add cache over MonitorDBStore (Kefu Chai)
  • mon: ‘ceph osd metadata’ can dump all osds (Haomai Wang)
  • mon: detect kv backend failures (Sage Weil)
  • mon: fix CRUSH map test for new pools (Sage Weil)
  • mon: fix min_last_epoch_clean tracking (Kefu Chai)
  • mon: misc scaling fixes (Sage Weil)
  • mon: streamline session handling, fix memory leaks (Sage Weil)
  • mon: upgrades must pass through hammer (Sage Weil)
  • msg/async: many fixes (Haomai Wang)
  • osd: cache proxy-write support (Zhiqiang Wang, Samuel Just)
  • osd: configure promotion based on write recency (Zhiqiang Wang)
  • osd: don’t send dup MMonGetOSDMap requests (Sage Weil, Kefu Chai)
  • osd: erasure-code: fix SHEC floating point bug (#12936 Loic Dachary)
  • osd: erasure-code: update to ISA-L 2.14 (Yuan Zhou)
  • osd: fix hitset object naming to use GMT (Kefu Chai)
  • osd: fix misc memory leaks (Sage Weil)
  • osd: fix peek_queue locking in FileStore (Xinze Chi)
  • osd: fix promotion vs full cache tier (Samuel Just)
  • osd: fix replay requeue when pg is still activating (#13116 Samuel Just)
  • osd: fix scrub stat bugs (Sage Weil, Samuel Just)
  • osd: force promotion for ops EC can’t handle (Zhiqiang Wang)
  • osd: improve behavior on machines with large memory pages (Steve Capper)
  • osd: merge multiple setattr calls into a setattrs call (Xinxin Shu)
  • osd: newstore prototype (Sage Weil)
  • osd: ObjectStore internal API refactor (Sage Weil)
  • osd: SHEC no longer experimental
  • osd: throttle evict ops (Yunchuan Wen)
  • osd: upgrades must pass through hammer (Sage Weil)
  • osd: use SEEK_HOLE / SEEK_DATA for sparse copy (Xinxin Shu)
  • rbd: rbd-replay-prep and rbd-replay improvements (Jason Dillaman)
  • rgw: expose the number of unhealthy workers through admin socket (Guang Yang)
  • rgw: fix casing of Content-Type header (Robin H. Johnson)
  • rgw: fix decoding of X-Object-Manifest from GET on Swift DLO (Radslow Rzarzynski)
  • rgw: fix sysvinit script
  • rgw: fix sysvinit script w/ multiple instances (Sage Weil, Pavan Rallabhandi)
  • rgw: improve handling of already removed buckets in expirer (Radoslaw Rzarzynski)
  • rgw: log to /var/log/ceph instead of /var/log/radosgw
  • rgw: rework X-Trans-Id header to be conform with Swift API (Radoslaw Rzarzynski)
  • rgw: s3 encoding-type for get bucket (Jeff Weber)
  • rgw: set max buckets per user in ceph.conf (Vikhyat Umrao)
  • rgw: support for Swift expiration API (Radoslaw Rzarzynski, Yehuda Sadeh)
  • rgw: user rm is idempotent (Orit Wasserman)
  • selinux policy (Boris Ranto, Milan Broz)
  • systemd: many fixes (Sage Weil, Owen Synge, Boris Ranto, Dan van der Ster)
  • systemd: run daemons as user ceph

Last week, Red Hat investigated an intrusion on the sites of both the Ceph community project ( and Inktank (, which were hosted on a computer system outside of Red Hat infrastructure. provided Ceph community versions downloads signed with a Ceph signing key  (id 7EBFDD5D17ED316D). provided releases of the Red Hat Ceph product for Ubuntu and CentOS operating systems signed with an Inktank signing key (id 5438C7019DCEEEAD). While the investigation into the intrusion is ongoing, our initial focus was on the integrity of the software and distribution channel for both sites.

To date, our investigation has not discovered any compromised code or binaries available for download on these sites. However, we cannot fully rule out the possibility that some compromised code or binaries were available for download at some point in the past. Further, we can no longer trust the integrity of the Ceph signing key, and therefore have created a new signing key (id E84AC2C0460F3994) for verifying downloads.  This new key is committed to the ceph.git repository and is also available from  All future release git tags will be signed with this new key.

This intrusion did not affect other Ceph sites such as (which contained some Ceph downloads) or (which mirrors various source repositories), and is not known to have affected any other Ceph community infrastructure.  There is no evidence that build systems or the Ceph github source repository were compromised.

New hosts for and have been created and the sites have been rebuilt.  All content available on has been verified, and all URLs for package locations now redirect there.  There is still some content missing from that will appear later today: source tarballs will be regenerated from git, and older release packages are being resigned with the new release key.

The host has been retired and affected Red Hat customers have been notified, further information is available at

Users of Ceph packages should take action as a precautionary measure to download the newly-signed versions.  Please see the instructions below.

The Ceph community would like to thank Kai Fabian for initially alerting us to this issue.

The following steps should be performed on all nodes with Ceph software installed.

Replace APT keys (Debian, Ubuntu)

sudo apt-key del 17ED316D
curl | sudo apt-key add -
sudo apt-get update

Replace RPM keys (Fedora, CentOS, SUSE, etc.)

sudo rpm -e --allmatches gpg-pubkey-17ed316d-4fb96ee8
sudo rpm --import ''

Reinstalling packages (Fedora, CentOS, SUSE, etc.)

sudo yum clean metadata
sudo yum reinstall -y $(repoquery --disablerepo=* --enablerepo=ceph --queryformat='%{NAME}' list '*')
Page 1 of 1712345...10...Last »
© 2016, Red Hat, Inc. All rights reserved.