The Ceph Blog

Ceph blog stories provide high-level spotlights on our customers all over the world

June 23, 2017

v12.1.0 Luminous RC released

This is the first release candidate for Luminous, the next long term
stable release.

Ceph Luminous will be the foundation for the next long-term
stable release series. There have been major changes since Kraken
(v11.2.z) and Jewel (v10.2.z)

Major Changes from Kraken

  • General:

    • Ceph now has a simple, built-in web-based dashboard for monitoring
      cluster status.
  • RADOS:

    • BlueStore:
      • The new BlueStore backend for ceph-osd is now stable and the new
        default for newly created OSDs. BlueStore manages data stored by each OSD
        by directly managing the physical HDDs or SSDs without the use of an
        intervening file system like XFS. This provides greater performance
        and features.
      • BlueStore supports full data and metadata checksums of all
        data stored by Ceph.
      • BlueStore supports inline compression using zlib, snappy, or LZ4. (Ceph
        also supports zstd for RGW compression but zstd is not recommended for
        BlueStore for performance reasons.)
    • Erasure coded pools now have full support for overwrites,
      allowing them to be used with RBD and CephFS. Read more about EC overwrites.
    • ceph-mgr:
      • There is a new daemon, ceph-mgr, which is a required part of any
        Ceph deployment. Although IO can continue when ceph-mgr is
        down, metrics will not refresh and some metrics-related calls
        (e.g., ceph df) may block. We recommend deploying several instances of
        ceph-mgr for reliability. See the notes on `Upgrading`_ below.
      • The ceph-mgr daemon includes a REST-based management API. The
        API is still experimental and somewhat limited but will form the basis
        for API-based management of Ceph going forward.
    • The overall scalability of the cluster has improved. We have
      successfully tested clusters with up to 10,000 OSDs.
    • Each OSD can now have a device class associated with it (e.g., hdd or
      ssd), allowing CRUSH rules to trivially map data to a subset of devices
      in the system. Manually writing CRUSH rules or manual editing of the CRUSH
      is normally not required.
    • You can now optimize CRUSH weights can now be optimized to
      maintain a near-perfect distribution of data across OSDs.
    • There is also a new upmap exception mechanism that allows
      individual PGs to be moved around to achieve a perfect
      (this requires luminous clients).
    • Each OSD now adjusts its default configuration based on whether the
      backing device is an HDD or SSD. Manual tuning generally not required.
    • The prototype mclock QoS queueing algorithm is now available.
    • There is now a backoff mechanism that prevents OSDs from being
      overloaded by requests to objects or PGs that are not currently able to
      process IO.
    • There is a simplified OSD replacement process that is more robust.
    • You can query the supported features and (apparent) releases of
      all connected daemons and clients with ceph features.
    • You can configure the oldest Ceph client version you wish to allow to
      connect to the cluster via ceph osd set-require-min-compat-client and
      Ceph will prevent you from enabling features that will break compatibility
      with those clients.
    • Several sleep settings, include osd_recovery_sleep,
      osd_snap_trim_sleep, and osd_scrub_sleep have been
      reimplemented to work efficiently. (These are used in some cases
      to work around issues throttling background work.)
  • RGW:

    • RGW metadata search backed by ElasticSearch now supports end
      user requests service via RGW itself, and also supports custom
      metadata fields. A query language a set of RESTful APIs were
      created for users to be able to search objects by their
      metadata. New APIs that allow control of custom metadata fields
      were also added.
    • RGW now supports dynamic bucket index sharding. As the number
      of objects in a bucket grows, RGW will automatically reshard the
      bucket index in response. No user intervention or bucket size
      capacity planning is required.
    • RGW introduces server side encryption of uploaded objects with
      three options for the management of encryption keys: automatic
      encryption (only recommended for test setups), customer provided
      keys similar to Amazon SSE-C specification, and through the use of
      an external key management service (Openstack Barbician) similar
      to Amazon SSE-KMS specification.
    • RGW now has preliminary AWS-like bucket policy API support. For
      now, policy is a means to express a range of new authorization
      concepts. In the future it will be the founation for additional
      auth capabilities such as STS and group policy.
    • RGW has consolidated the several metadata index pools via the use of rados
  • RBD:

    • RBD now has full, stable support for erasure coded pools via the new
      --data-pool option to rbd create.
    • RBD mirroring’s rbd-mirror daemon is now highly available. We
      recommend deploying several instances of rbd-mirror for
    • The default ‘rbd’ pool is no longer created automatically during
      cluster creation. Additionally, the name of the default pool used
      by the rbd CLI when no pool is specified can be overridden via a
      new rbd default pool = <pool name> configuration option.
    • Initial support for deferred image deletion via new rbd
      CLI commands. Images, even ones actively in-use by
      clones, can be moved to the trash and deleted at a later time.
    • New pool-level rbd mirror pool promote and rbd mirror pool
      commands to batch promote/demote all mirrored images
      within a pool.
    • Mirroring now optionally supports a configurable replication delay
      via the rbd mirroring replay delay = <seconds> configuration
    • Improved discard handling when the object map feature is enabled.
    • rbd CLI import and copy commands now detect sparse and
      preserve sparse regions.
    • Snapshots will now include a creation timestamp
  • CephFS:

    • Multiple active MDS daemons is now considered stable. The number
      of active MDS servers may be adjusted up or down on an active CephFS file
    • CephFS directory fragmentation is now stable and enabled by
      default on new filesystems. To enable it on existing filesystems
      use “ceph fs set <fs_name> allow_dirfrags”. Large or very busy
      directories are sharded and (potentially) distributed across
      multiple MDS daemons automatically.
    • Directory subtrees can be explicitly pinned to specific MDS daemons in
      cases where the automatic load balancing is not desired or effective.
  • Miscellaneous:

    • Release packages are now being built for Debian Stretch. The
      distributions we build for now includes:

      • CentOS 7 (x86_64 and aarch64)
      • Debian 8 Jessie (x86_64)
      • Debian 9 Stretch (x86_64)
      • Ubuntu 16.04 Xenial (x86_64 and aarch64)
      • Ubuntu 14.04 Trusty (x86_64)

      Note that QA is limited to CentOS and Ubuntu (xenial and trusty).

    • CLI changes:

      • The ceph -s or ceph status command has a fresh look.
      • ceph {osd,mds,mon} versions summarizes versions of running daemons.
      • ceph {osd,mds,mon} count-metadata <property> similarly
        tabulates any other daemon metadata visible via the ceph
        {osd,mds,mon} metadata
      • ceph features summarizes features and releases of connected
        clients and daemons.
      • ceph osd require-osd-release <release> replaces the old
        require_RELEASE_osds flags.
      • ceph osd pg-upmap, ceph osd rm-pg-upmap, ceph osd
        , ceph osd rm-pg-upmap-items can explicitly
        manage upmap items
      • ceph osd getcrushmap returns a crush map version number on
        stderr, and ceph osd setcrushmap [version] will only inject
        an updated crush map if the version matches. This allows crush
        maps to be updated offline and then reinjected into the cluster
        without fear of clobbering racing changes (e.g., by newly added
        osds or changes by other administrators).
      • ceph osd create has been replaced by ceph osd new. This
        should be hidden from most users by user-facing tools like
      • ceph osd destroy will mark an OSD destroyed and remove its
        cephx and lockbox keys. However, the OSD id and CRUSH map entry
        will remain in place, allowing the id to be reused by a
        replacement device with minimal data rebalancing.
      • ceph osd purge will remove all traces of an OSD from the
        cluster, including its cephx encryption keys, dm-crypt lockbox
        keys, OSD id, and crush map entry.
      • ceph osd ls-tree <name> will output a list of OSD ids under
        the given CRUSH name (like a host or rack name). This is useful
        for applying changes to entire subtrees. For example, ceph
        osd down `ceph osd ls-tree rack1`
      • ceph osd {add,rm}-{noout,noin,nodown,noup} allow the
        noout, nodown, noin, and noup flags to be applied to
        specific OSDs.
      • ceph log last [n] will output the last n lines of the cluster
      • ceph mgr dump will dump the MgrMap, including the currently active
        ceph-mgr daemon and any standbys.
      • ceph osd crush swap-bucket <src> <dest> will swap the
        contents of two CRUSH buckets in the hierarchy while preserving
        the buckets’ ids. This allows an entire subtree of devices to
        be replaced (e.g., to replace an entire host of FileStore OSDs
        with newly-imaged BlueStore OSDs) without disrupting the
        distribution of data across neighboring devices.
      • ceph osd set-require-min-compat-client <release> configures
        the oldest client release the cluster is required to support.
        Other changes, like CRUSH tunables, will fail with an error if
        they would violate this setting. Changing this setting also
        fails if clients older than the specified release are currently
        connected to the cluster.
      • ceph config-key dump dumps config-key entries and their
        contents. (The exist ceph config-key ls only dumps the key
        names, not the values.)
      • ceph osd set-{full,nearfull,backfillfull}-ratio sets the
        cluster-wide ratio for various full thresholds (when the cluster
        refuses IO, when the cluster warns about being close to full,
        when an OSD will defer rebalancing a PG to itself,
      • ceph osd reweightn will specify the reweight values for
        multiple OSDs in a single command. This is equivalent to a series of
        ceph osd reweight commands.
      • ceph crush class {create,rm,ls} manage the new CRUSH device
        feature. ceph crush set-device-class <osd> <class>
        will set the clas for a particular device.
      • ceph mon feature list will list monitor features recorded in the
        MonMap. ceph mon feature set will set an optional feature (none of
        these exist yet).

Major Changes from Jewel

  • RADOS:
    • We now default to the AsyncMessenger (ms type = async) instead
      of the legacy SimpleMessenger. The most noticeable difference is
      that we now use a fixed sized thread pool for network connections
      (instead of two threads per socket with SimpleMessenger).
    • Some OSD failures are now detected almost immediately, whereas
      previously the heartbeat timeout (which defaults to 20 seconds)
      had to expire. This prevents IO from blocking for an extended
      period for failures where the host remains up but the ceph-osd
      process is no longer running.
    • The size of encoded OSDMaps has been reduced.
    • The OSDs now quiesce scrubbing when recovery or rebalancing is in progress.
  • RGW:
    • RGW now supports the S3 multipart object copy-part API.
    • It is possible now to reshard an existing bucket offline. Offline
      bucket resharding currently requires that all IO (especially
      writes) to the specific bucket is quiesced. (For automatic online
      resharding, see the new feature in Luminous above.)
    • RGW now supports data compression for objects.
    • Civetweb version has been upgraded to 1.8
    • The Swift static website API is now supported (S3 support has been added
    • S3 bucket lifecycle API has been added. Note that currently it only supports
      object expiration.
    • Support for custom search filters has been added to the LDAP auth
    • Support for NFS version 3 has been added to the RGW NFS gateway.
    • A Python binding has been created for librgw.
  • RBD:
    • The rbd-mirror daemon now supports replicating dynamic image
      feature updates and image metadata key/value pairs from the
      primary image to the non-primary image.
    • The number of image snapshots can be optionally restricted to a
      configurable maximum.
    • The rbd Python API now supports asynchronous IO operations.
  • CephFS:
      • libcephfs function definitions have been changed to enable proper
        uid/gid control. The library version has been increased to reflect the
        interface change.
      • Standby replay MDS daemons now consume less memory on workloads
        doing deletions.
      • Scrub now repairs backtrace, and populates damage ls with
        discovered errors.
      • A new pg_files subcommand to cephfs-data-scan can identify
        files affected by a damaged or lost RADOS PG.
      • The false-positive “failing to respond to cache pressure” warnings have
        been fixed.


    Notable Changes

    • bluestore: ceph-disk: add –filestore argument, default to –bluestore (pr#15437, Loic Dachary, Sage Weil)
    • bluestore,core: os/bluestore: fix warning (pr#15435, Sage Weil)
    • bluestore,core: os/bluestore: improve mempool usage (pr#15402, Sage Weil)
    • bluestore,core: os/bluestore: write “mkfs_done” into disk only if we pass fsck() tests (pr#15238, xie xingguo)
    • bluestore,core: os: remove experimental status for BlueStore (pr#15177, Sage Weil)
    • bluestore: os/bluestore: better debug output on unsharing blobs (issue#20227, pr#15746, Sage Weil)
    • bluestore: os/bluestore/BlockDevice: support pmem device as bluestore backend (pr#15102, Jianpeng Ma)
    • bluestore: os/bluestore/BlueFS: Rebuild memcopy for bufferlist::page_aligned_app… (pr#15728, Jianpeng Ma, Sage Weil)
    • bluestore: os/bluestore/BlueFS: .slow should be compared with dirname (pr#15595, zhanglei)
    • bluestore: os/bluestore/BlueStore: no device no symlink. (pr#15721, Jianpeng Ma)
    • bluestore: os/bluestore: cleanup bluestore_types (pr#15680, xie xingguo)
    • bluestore: os/bluestore: configure rocksdb cache via bluestore_cache_kv_ratio (pr#15580, Sage Weil)
    • bluestore: os/bluestore: fix a typo about bleustore (pr#15357, Dongsheng Yang)
    • bluestore: os/bluestore: fix BitMapAllocator assert on out-of-bound hint value (pr#15289, Igor Fedotov)
    • bluestore: os/bluestore: fix buffers pinned by indefinitely deferred writes (pr#15398, Sage Weil)
    • bluestore: os/bluestore: fix false assert in IOContext::aio_wake (pr#15268, Igor Fedotov)
    • bluestore: os/bluestore: fix false asserts in Cache::trim_all() (pr#15470, xie xingguo)
    • bluestore: os/bluestore: fix fsck deferred_replay (pr#15295, Sage Weil)
    • bluestore: os/bluestore: fix possible out of order shard(offset == 0); add sanity check (pr#15658, xie xingguo)
    • bluestore: os/bluestore: fix potential access violation (pr#15657, xie xingguo)
    • bluestore: os/bluestore: fix unsharing blob dirty_range args (issue#20227, pr#15766, Sage Weil)
    • bluestore: os/bluestore: handle rounding error in cache ratios (pr#15672, Sage Weil)
    • bluestore: os/bluestore: initialize finishers properly (pr#15666, xie xingguo)
    • bluestore: os/bluestore/KernelDevice: fix comments (pr#15264, xie xingguo)
    • bluestore: os/bluestore/KernelDevice: helpful warning when aio limit exhausted (pr#15116, Sage Weil)
    • bluestore: os/bluestore: move sharedblob to new collection in same shard (issue#20358, pr#15783, Sage Weil)
    • bluestore: os/bluestore: refactor BlueStore::_do_write; kill dead ExtentMap::find_lextent() method (pr#15750, xie xingguo)
    • bluestore: os/bluestore: remove unused variables (pr#15718, zhanglei)
    • bluestore: os/bluestore: stop calculating bound if we must reshard; narrow shard combination condition (pr#15631, xie xingguo)
    • bluestore: os/bluestore: target_bytes should scale with meta/data ratios. (pr#15708, Mark Nelson)
    • bluestore,performance: os/bluestore: avoid overloading extents during reshard; atomic deferred_batch_ops (pr#15502, xie xingguo)
    • bluestore,performance: os/bluestore: batch throttle (pr#15284, Jianpeng Ma)
    • bluestore,performance: os/bluestore: keep statfs replica in RAM to avoid expensive KV retrieval (pr#15309, Igor Fedotov)
    • bluestore,performance: os/bluestore/KernelDevice: fix sync write vs flush (pr#15034, Sage Weil)
    • bluestore,performance: os/bluestore: move cache_trim into MempoolThread (pr#15380, xie xingguo)
    • bluestore,performance: os/bluestore: put bluefs in the middle of the shared device (pr#14873, Sage Weil)
    • bluestore,performance: os/bluestore: separate kv_sync_thread into two parts (pr#14035, Jianpeng Ma, Igor Fedotov, Sage Weil)
    • bluestore,performance: os/bluestore: try to unshare blobs for EC overwrite workload (pr#14239, Sage Weil)
    • bluestore,tests: qa/objectstore/bluestore*: fsck on mount (pr#15785, Sage Weil)
    • bluestore,tests: test/unittest_bluefs: When fsync ret is less than 0, fsync can not be… (pr#15365, shiqi)
    • bluestore: wrap blob id when it reaches maximum value of int16_t (issue#19555, pr#15654, Xiaoyan Li)
    • build/ops: 12.0.3 (pr#15600, Jenkins Build Slave User)
    • build/ops: build: move bash_completion.d/ceph to ceph-common (pr#15148, Leo Zhang)
    • build/ops: build: remove ceph-disk-udev entirely (pr#15259, Leo Zhang)
    • build/ops: build: revert -Wvla from #15342 (pr#15469, Willem Jan Withagen)
    • build/ops: build: Use .S suffix for ppc64le assembly files (issue#20106, pr#15373, Andrew Solomon)
    • build/ops: ceph-detect-init: detect init system by poking the system (issue#19884, pr#15043, Kefu Chai)
    • build/ops,common: build: Adds C++ warning flag for C Variable-Length Arrays. (pr#15342, Jesse Williamson)
    • build/ops,common: common/ propagate get_device_by_fd to different OSes (pr#15547, Willem Jan Withagen)
    • build/ops: conditionalize rgw Beast frontend so it isn’t built on s390x architecture (issue#20048, pr#15225, Willem Jan Withagen, Nathan Cutler, Kefu Chai, Tim Serong, Casey Bodley)
    • build/ops,core: common/ fix missing ; (pr#15741, Willem Jan Withagen)
    • build/ops,core: erasure-code: update ec_isa version + add missing AVX512 ISA-L sources (pr#15636, Ganesh Mahalingam, Tushar Gohad)
    • build/ops,core,tests: osd/dmclock/testing: reorganize testing, building now optional (pr#15375, J. Eric Ivancich)
    • build/ops: debian: ceph-mgr: fix package description (pr#15513, Fabian Grünbichler)
    • build/ops: debian: sync logrotate packaging with downstream (issue#19938, pr#15567, Fabian Grünbichler)
    • build/ops: enable ccache if installed (pr#15274, Sage Weil)
    • build/ops: drop libfcgi build dependency (pr#15285, Nathan Cutler)
    • build/ops: .gitignore: exclude rpm files (pr#15745, Leo Zhang)
    • build/ops: workaround setuptools’ dependency on six (pr#15406, Kefu Chai)
    • build/ops: miscellaneous cleanups and fixes (, (issue#20091, issue#20127, pr#15399, Nathan Cutler)
    • build/ops,rbd,tests: test/librbd: decouple ceph_test_librbd_api from libceph-common (issue#20175, pr#15611, Kefu Chai)
    • build/ops: rpm: apply epoch only if %epoch macro is defined (pr#15286, Nathan Cutler)
    • build/ops: rpm: make librbd1 %post scriptlet depend on coreutils (issue#20052, pr#15231, Giacomo Comes, Nathan Cutler)
    • build/ops: rpm: move _epoch_prefix below Epoch definition (pr#15417, Nathan Cutler)
    • build/ops: rpm: move RDMA and python-prettytables build dependencies to distro-conditional section (pr#15200, Nathan Cutler)
    • build/ops: rpm: package COPYING, move sample ceph.conf to ceph-common (pr#15596, Nathan Cutler)
    • build/ops: selinux: Allow read on var_run_t (issue#16674, pr#15523, Boris Ranto)
    • build/ops: selinux: Do parallel relabel on package install (issue#20077, pr#14871, Boris Ranto)
    • build/ops: selinux: Install ceph-base before ceph-selinux (issue#20184, pr#15490, Boris Ranto)
    • build/ops: Set subman cron attributes in spec file (issue#20074, pr#15270, Thomas Serlin)
    • build/ops: The Clangtastic Mr. Clocks (pr#15186, Adam C. Emerson)
    • build/ops: yasm-wrapper: filter -pthread (pr#15249, Alessandro Barbieri)
    • cephfs: #17980: MDS client blacklisting and blacklist on eviction (issue#17980, issue#9754, pr#14610, John Spray)
    • cephfs: ceph: simplify CInode::maybe_export_pin() (pr#15106, “Yan, Zheng”)
    • cephfs: client: avoid returning negative space available (issue#20178, pr#15481, John Spray)
    • cephfs: client: call the lru_remove() twice,when trim cache (pr#15662, huanwen ren)
    • cephfs: client: check for luminous MDS before sending FLUSH_MDLOG (pr#15805, John Spray)
    • cephfs: client: fix Dentry::dump (pr#15779, huanwen ren)
    • cephfs: client: fix display ino in the ldout (pr#15314, huanwen ren)
    • cephfs: client/inode: fix the dump type of Inode::dump() (pr#15198, huanwen ren)
    • cephfs,common,rbd: blkin: librbd trace hooks (pr#15053, Victor Araujo, Jason Dillaman)
    • cephfs: mds/MDBalancer: remove useless check_targets and hit_targets logic from MDS balancer (issue#20131, pr#15407, Zhi Zhang)
    • cephfs,mgr: pybind/mgr/fsstatus: use mds_mem.dn as dentry counter (pr#15255, Zhi Zhang)
    • cephfs: mon/FSCommand: fix indentation (pr#15423, Sage Weil)
    • cephfs: mon/MDSMonitor: respect mds_standby_for_rank config (pr#15129, “Yan, Zheng”)
    • cephfs: osdc/Journaler: avoid executing on_safe contexts prematurely (issue#20055, pr#15240, “Yan, Zheng”)
    • cephfs: osdc/Journaler: fix memory leak in Journaler::_issue_read() (issue#20338, pr#15776, “Yan, Zheng”)
    • cephfs: osdc/Objecter: fix inflight_ops update (pr#15768, “Yan, Zheng”)
    • cephfs: qa/cephfs: disable mds_bal_frag for TestStrays.test_purge_queue_op_rate (issue#19892, pr#15105, “Yan, Zheng”)
    • cephfs: qa/tasks/cephfs: use getattr to guarantee inode is in client cache (issue#19912, pr#15062, “Yan, Zheng”)
    • cephfs: qa: update log whitelists for kcephfs suite (pr#14922, “Yan, Zheng”)
    • cephfs,tests: ceph-object-corpus: mark MMDSSlaveRequest incompat change (pr#15730, Sage Weil)
    • cephfs,tests: qa: fix float parse error in test_fragment (pr#15122, Patrick Donnelly)
    • cephfs,tests: qa: misc cephfs test improvements (issue#20131, pr#15411, John Spray)
    • cephfs,tests: qa: silence upgrade test failure (issue#19934, pr#15126, Patrick Donnelly)
    • cephfs,tests: qa: simplify TestJournalRepair (pr#15096, John Spray)
    • cephfs: tools/cephfs: remove apply mode of cephfs-journal-tool (pr#15715, John Spray)
    • cleanup: src: put-to operator function – const input cleanup (issue#3977, pr#15364, Jos Collin)
    • cmake: Add -finstrument-functions flag to OSD code (pr#15055, Mohamad Gebai)
    • cmake: build boost as an external project (pr#15376, Kefu Chai)
    • cmake: check the existence of gperf before using it (pr#15164, Kefu Chai)
    • cmake: do not add dependencies to INTERFACE library on cmake < 3.3 (pr#15813, Kefu Chai)
    • cmake: do not link libcommon against some libs (pr#15340, Willem Jan Withagen)
    • cmake: exclude *.css while generating ctags (pr#15663, Leo Zhang)
    • cmake: fix boost components for WITH_SYSTEM_BOOST (pr#15160, Bassam Tabbara)
    • cmake: improved build speed by 5x when using ccache (pr#15147, Bassam Tabbara)
    • cmake: link against fcgi only if enabled (pr#15425, Yao Zongyou)
    • cmake: misc fixes for build on i386 (pr#15516, James Page)
    • cmake: rgw: do not link against boost in a wholesale (pr#15347, Nathan Cutler, Kefu Chai)
    • cmake: workaound ccache issue with .S assembly files (pr#15142, Bassam Tabbara)
    • common: add ceph::size() (pr#15181, Kefu Chai)
    • common: ceph_osd: remove client message cap limit (pr#14944, Haomai Wang)
    • common: cls: optimize header file dependency (pr#15165, Brad Hubbard, Xiaowei Chen)
    • common: cmdparse: more constness (pr#15023, Kefu Chai)
    • common: common/ceph_context: ‘config diff get’ option added (pr#10736, Daniel Oliveira)
    • common: common/ceph_context: fix leak of registered commands on exit (pr#15302, xie xingguo)
    • common: common/ fixed again a stupid typo (pr#15742, Willem Jan Withagen)
    • common: common/ Make return expression Clang compatible (pr#15336, Willem Jan Withagen)
    • common: common/LogEntry: include EntityName in log entries (pr#15395, Sage Weil)
    • common: common,osdc: remove atomic_t completely (pr#15562, Kefu Chai)
    • common: common/perf_counters: add average time for PERFCOUNTER_TIME (pr#15478, xie xingguo)
    • common: common/perf_counters: make schema more friendly and update docs (pr#14933, Sage Weil)
    • common: common,test: migrate atomic_t to std::atomic (pr#14866, Jesse Williamson)
    • common: config_opt: use bool instead of int for the default value of filestore_debug_omap_check (pr#15651, Leo Zhang)
    • common,core: ceph_test_rados_api_misc: fix LibRadosMiscConnectFailure.ConnectFailure retry (issue#19901, pr#15522, Sage Weil)
    • common: core/common: Fix ENODATA for FreeBSD with compat.h (issue#19883, pr#15685, Willem Jan Withagen)
    • common,core: osd/OSDMap: make osd_state 32 bits wide (pr#15390, Sage Weil)
    • common,core: osd/OSDMap: replace require_*_osds flags with a single require_osd_release field (pr#15068, Sage Weil)
    • common,core: osd/OSDMap: replace string-based min_compat_client with a CEPH_RELEASE_* uint8_t (pr#15351, Sage Weil)
    • common: crc32c: include acconfig.h to fix ceph_crc32c_aarch64() (pr#15515, Kefu Chai)
    • common: crush/CrushWrapper: fix has_incompat_choose_args (pr#15218, Sage Weil)
    • common: crush/CrushWrapper: fix has_incompat_choose_args() (pr#15244, Sage Weil)
    • common: denc: add encode/decode for basic_sstring (pr#15135, Kefu Chai, Casey Bodley)
    • common: fix typo in option of rados_mon_op_timeout’s comment (pr#15681, Leo Zhang)
    • common: get_process_name: use getprogname on bsd systems (pr#15338, Mykola Golub)
    • common: Improved CRC calculation for zero buffers (pr#11966, Adam Kupczyk)
    • common: include/lru.h: add const to member functions (pr#15408, yonghengdexin735)
    • common: include/rados: Fix typo in rados_ioctx_cct() doc (pr#15220, Jos Collin)
    • common: include: Redo some includes for FreeBSD (issue#19883, pr#15337, Willem Jan Withagen)
    • common: initialize _hash in LogEntryKey() (pr#15615, Jos Collin)
    • common: int_types.h: remove hacks to workaround old systems (pr#15069, Kefu Chai)
    • common: librados,libradosstriper,test: migrate atomic_t to std::atomic (baragon) (pr#14658, Jesse Williamson)
    • common: libradosstriper: Add example code (pr#15350, Logan Blyth)
    • common: mempool: improve dump; fix buffer accounting bugs (pr#15403, Sage Weil)
    • common: mgr/PyFormatter: implement dump_format_va (pr#15634, Sage Weil)
    • common,mon: messenger,client,compressor: migrate atomic_t to std::atomic (pr#14657, Jesse Williamson)
    • common,mon: mon,crush: add ‘osd crush swap-bucket’ command (pr#15072, Sage Weil)
    • common: msg/async: add assert of ms_async_op_threads > 0 (pr#15629, linbing)
    • common,performance: buffer: allow buffers to be accounted in arbitrary mempools (pr#15352, Sage Weil)
    • common,performance: crc32c: Add ppc64le fast zero optimized assembly. (pr#15100, Andrew Solomon)
    • common,performance: inline_memory: optimized mem_is_zero for non-x64 (pr#15307, Piotr Dałek)
    • common,performance: kv/rocksdb: supports SliceParts interface (pr#15058, Haomai Wang)
    • common,performance: osd/OSDMap: make pg_temp more efficient (pr#15291, Sage Weil)
    • common,rdma: msg/async/rdma: automatically set RDMAV_HUGEPAGES_SAFE according to conf (pr#15755, DanielBar-On)
    • common: Remove redundant includes – 2 (issue#19883, pr#15169, Jos Collin)
    • common: Remove redundant includes – 3 (issue#19883, pr#15204, Jos Collin)
    • common: Remove redundant includes – 4 (issue#19883, pr#15251, Jos Collin)
    • common: Remove redundant includes – 5 (issue#19883, pr#15267, Jos Collin)
    • common: Remove redundant includes – 6 (issue#19883, pr#15299, Jos Collin)
    • common: Remove redundant includes (issue#19883, pr#15042, Brad Hubbard)
    • common: Remove redundant includes (issue#19883, pr#15086, Jos Collin)
    • common: src/common/ceph_string: stringify new osd states (pr#15751, xie xingguo)
    • common,tests: ceph_test_rados_api_list: more fix LibRadosListNP.ListObjectsError (issue#19963, pr#15138, Sage Weil)
    • common,tests: test: Make screencandy optional for FreeBSD (pr#15444, Willem Jan Withagen)
    • common: xio: migrate atomic_t to std::atomic<> (pr#15230, Jesse Williamson)
    • core: ceph-dencoder: Silence coverity CID 1412579 (pr#15744, Brad Hubbard)
    • core: ceph-disk: do not setup_statedir on trigger (issue#19941, pr#15410, Loic Dachary)
    • core: ceph-objectstore-tool: do not populate snapmapper with missing clones (issue#19943, pr#15787, Sage Weil)
    • core: compressor: add LZ4 support (pr#15434, Haomai Wang)
    • core: compressor: optimize header file dependency (pr#15187, Brad Hubbard, Xiaowei Chen)
    • core: crush, mon: make jewel the lower bound for client/crush compat for new clusters (pr#15370, Sage Weil)
    • core: erasure-code: optimize header file dependency (pr#15172, Brad Hubbard, Xiaowei Chen)
    • core: erasure-code: Remove duplicate of isa-l files (pr#15372, Ganesh Mahalingam)
    • core: filestore: migrate atomic_t to std::atomic<> (pr#15228, Jesse Williamson)
    • core: include/types.h, introduce host_to_ceph_errno (pr#15496, Willem Jan Withagen)
    • core: Install Pecan for FreeBSD (pr#15610, Willem Jan Withagen)
    • core: introduce (and fix) code to pass errno to other OSes (pr#15495, Willem Jan Withagen)
    • core: messages/MOSDPing: initialize MOSDPing padding (issue#20323, pr#15714, Sage Weil)
    • core,mgr: mgr/DaemonServer: stop spamming log with pg stats (pr#15487, Sage Weil)
    • core,mgr,mon: mon/PGMap: fix osd_epoch update when removing osd_stat (issue#20208, pr#15573, Sage Weil)
    • core,mgr,tests: qa/suites/rados/rest: test restful mgr module (pr#15604, Sage Weil)
    • core: mon,mgr: fix “ceph osd df”, add some tools to find untested commands (issue#20256, pr#15675, Greg Farnum)
    • core,mon: mon/LogMonitor: ‘log last’ command (pr#15497, Sage Weil)
    • core,mon: mon/MgrStatMonitor: keep mgrstat version ahead of pgmon (issue#20219, pr#15584, Sage Weil)
    • core,mon: mon,osd: add crush_version to OSDMap, and allow crush map updates to gate on crush_version (pr#15533, Sage Weil)
    • core,mon: mon/OSDMonitor: cancel mapping job from update_from_paxos (issue#20067, pr#15320, Sage Weil)
    • core,mon: mon/OSDMonitor: use up set instead of acting set in reweight_by_utilization (pr#13802, Mingxin Liu)
    • core,mon: mon/PGMap: call blocked requests ERR not WARN (pr#15501, Sage Weil)
    • core: mon/OSDMonitor: batch noup/noin osds support (pr#15725, xie xingguo)
    • core: mon/OSDMonitor: batch OSDs nodown/noout support (pr#15381, xie xingguo)
    • core: mon/OSDMonitor: change info in ‘osd failed’ messages (pr#15321, Sage Weil)
    • core: mon,osd/OSDMap: a couple pg-upmap fixes (pr#15319, Sage Weil)
    • core: msg/async: avoid requeue racing with handle_write (issue#20093, pr#15324, Haomai Wang)
    • core: msg/async: fix deleted_conn is out of sync with conns (issue#20230, pr#15645, Haomai Wang)
    • core: objclass-sdk: use namespace ceph for bufferlist (pr#15581, Neha Ojha)
    • core: osd/ECTransaction: only read partial stripes when below original object size (issue#19882, pr#15712, Sage Weil)
    • core: osd,librados: add manifest, redirect (pr#15325, Sage Weil)
    • core: osd, messages/MOSDPing: bunch of fixes related to ping inflation (pr#15727, Piotr Dałek)
    • core: osd/OSD: bump up current version; conditionally encoding manifest into oi (pr#15687, xie xingguo)
    • core: osd/OSDMap: Change pg_to_ to return void (pr#15684, Brad Hubbard)
    • core: osd/OSDMap: improve upmap calculation (issue#19818, pr#14902, Sage Weil)
    • core: osd/PG: drop pre-firefly compat_mode for choose_*_acting (pr#15057, Sage Weil)
    • core: osd/pglog: remove loop through empty collection (pr#15121, J. Eric Ivancich)
    • core: osd/PG: make non-empty PastIntervals non-fatal (issue#20167, pr#15639, Sage Weil)
    • core: osd/PrimaryLogPG: clear oi from trim_object() (issue#19947, pr#15519, Sage Weil)
    • core: osd/PrimaryLogPG: fix oi reset during trim_object (issue#19947, pr#15696, Sage Weil)
    • core: osd/PrimaryLogPG: record prior_version for DELETE events (issue#20274, pr#15649, Sage Weil)
    • core: os/filestore: when print log, use __func__ instead of hard code function name (pr#15261, mychoxin)
    • core: os/filestore: zfs add get_name() (pr#15650, Yanhu Cao)
    • core,performance: msg/async: reduce write_lock contention (pr#15092, Haomai Wang)
    • core,performance: osd/OSD.h: requeue the scrub job with higher priority to shorten the blocking time of related requests (pr#15552, Jin Cai)
    • core: qa: do not restrict valgrind runs to centos (issue#18126, pr#15389, Greg Farnum)
    • core,rgw: qa: Removed all ‘default_idle_timeout’ due to chnage in rwg task (pr#15420, Yuri Weinstein)
    • core,rgw,tests: qa/rgw_snaps: move default_idle_timeout config under the client (issue#20128, pr#15400, Yehuda Sadeh)
    • core: src/ Use env(CEPH_DEV) to suppress noise from ceph (pr#14746, Willem Jan Withagen)
    • core,tests: ceph-disk: sensible default for block.db (pr#15576, Loic Dachary)
    • core,tests: ceph_test_rados_api_*: wait for snap trim on ENOENT during cleanup (issue#19948, pr#15638, Sage Weil)
    • core,tests: qa/suites/rados/*/at-end: wait for healthy before scrubbing (pr#15245, Sage Weil)
    • core,tests: qa/suites/rados/singleton-nomsg/health-warnings: behave on ext4 (issue#20043, pr#15207, Sage Weil)
    • core,tests: qa/suites/rados: temporarily remove scrub_test from basic/ until post-luminous (issue#19935, pr#15202, Sage Weil)
    • core,tests: qa/suites/upgrade/kraken-x: enable experimental for bluestore (pr#15359, Sage Weil)
    • core,tests: qa/tasks/ceph_manager: get osds all in after thrashing (pr#15784, Sage Weil)
    • core,tests: qa/tasks/ceph: osd_scrub_pgs: reissue scrub requests in loop (issue#20326, pr#15747, Sage Weil)
    • core,tests: qa/tasks/ tolerate active+clean+something (pr#15717, Sage Weil)
    • core,tests: qa/workunits/cephtool/ fix osd full health detail grep (issue#20187, pr#15494, Sage Weil)
    • core,tests: qa/workunits/rados/test_health_warning: misc fixes (issue#19990, pr#15201, Sage Weil)
    • core,tests: Revert “qa: do not restrict valgrind runs to centos” (issue#20360, pr#15791, Sage Weil)
    • core,tests: test/osd/ run set-redirect test after finishing setup (issue#20114, pr#15385, Myoungwon Oh)
    • core,tools: osdmaptool: require –upmap-save before modifying input osdmap (pr#15247, Sage Weil)
    • crush: add missing tunable in tests (pr#15412, Loic Dachary)
    • crush: detect and (usually) fix ruleset != rule id (pr#13683, Sage Weil)
    • crush: encode can override weights with weight set (issue#19836, pr#15002, Loic Dachary)
    • crush: optimize header file dependency (pr#9307, Xiaowei Chen)
    • crush: update choose_args when items are added/removed (pr#15311, Loic Dachary)
    • doc: 12.1.0/release notes 2 (pr#15627, Abhishek Lekshmanan)
    • doc: add descriptions for mon/mgr options (pr#15032, Kefu Chai)
    • doc: add FreeBSD manual install (pr#14941, Willem Jan Withagen)
    • doc: add new cn ceph mirror to doc and mirroring (pr#15089, Shengjing Zhu)
    • doc: add rados xattr commands to manpage (pr#15362, Andreas Gerstmayr)
    • doc: add README to dmclock subdir to inform developers it’s a git subtree (pr#15386, J. Eric Ivancich)
    • doc: AUTHORS: update with release manager, backport team (pr#15391, Sage Weil)
    • doc: Change the default values of some OSD options (issue#20199, pr#15566, Bara Ancincova)
    • doc: describe CephFS max_file_size (pr#15287, Ken Dreyer)
    • doc: describe mark_events logging available via the OSD’s OpTracker (pr#15095, Greg Farnum)
    • doc: dev improve the s3tests doc to reflect current scripts (pr#15180, Abhishek Lekshmanan)
    • doc: doc/cephfs: mention RADOS object size limit (pr#15550, John Spray)
    • doc: doc/release-notes: update which jewel version does sortbitwise warning (pr#15209, Sage Weil)
    • doc: doc/release-note: update release-note (pr#15748, liuchang0812)
    • doc: doc/rgw: remove fastcgi page and sample configs (pr#15133, Casey Bodley)
    • doc: doc/rgw: remove Federated Configuration, clean up multisite (issue#19504, issue#18082, pr#15132, Casey Bodley)
    • doc: Documentation Fixes for (issue#20057, issue#19879, pr#15606, Sameer Tiwari)
    • doc: document perf historgrams (pr#15150, Piotr Dałek)
    • doc: Document RGW quota cache options (issue#18747, pr#13395, Daniel Gryniewicz)
    • doc: document the setup of restful and dashboard plugins (issue#20239, pr#15707, Kefu Chai)
    • doc: fix broken link in erasure-code.rst (issue#19972, pr#15143, MinSheng Lin)
    • doc: fix factual inaccuracy in doc/architecture.rst (pr#15235, Nathan Cutler, Sage Weil)
    • doc: fixing an error in 12.0.3 release notes (pr#15195, Abhishek Lekshmanan)
    • doc: fix syntax on code snippets in cephfs/multimds (pr#15499, John Spray)
    • doc: freshen mgr docs (pr#15690, John Spray)
    • doc: kill some broken links (pr#15203, liuchang0812)
    • doc: mailmap for v12.0.2 (pr#14753, Abhishek Lekshmanan)
    • doc: mailmap: Leo Zhang infomation and affiliation (pr#15145, Leo Zhang)
    • doc: mention certain conf vars should be in global (pr#15119, Ali Maredia)
    • doc: Merge pull request from stiwari/wip-19879 (issue#19879, pr#15609, Sameer Tiwari)
    • doc: minor fixes in radosgw/ (pr#15103, Drunkard Zhang)
    • doc: PendingReleaseNotes: notes on whiteouts vs pgnls (pr#15575, Sage Weil)
    • doc: PendingReleaseNotes: warning about ‘osd rm …’ and #19119 (issue#19119, pr#13731, Sage Weil)
    • doc: release-notes clarify about rgw encryption (pr#14800, Abhishek Lekshmanan)
    • doc: release notes for v12.0.3 (dev) (pr#15090, Abhishek Lekshmanan)
    • doc: remove some non-existent and fix the default value according to … (pr#15664, Leo Zhang)
    • docs document “osd recovery max single start” setting (issue#17396, pr#15275, Ken Dreyer)
    • doc: tools/cephfs: fix cephfs-journal-tool –help (pr#15614, John Spray)
    • doc: typo fixes on hyperlink/words (pr#15144, Drunkard Zhang)
    • doc: update sample explaning “%” operator in test suites (pr#15511, Kefu Chai)
    • doc: Update some RGW documentation (pr#15175, Jens Rosenboom)
    • doc: update the usage of ‘ceph-deploy purge’ (pr#15080, Yu Shengzuo)
    • doc: use instead of cmake .. (pr#15110, Kefu Chai)
    • librbd: add create timestamp metadata for image (pr#15757, runsisi)
    • librbd: discard related IO should skip op if object non-existent (issue#19962, pr#15239, Mykola Golub)
    • librbd: do not raise an error if trash list returns -ENOENT (pr#15085, runsisi)
    • librbd: filter expected error codes from is_exclusive_lock_owner (issue#20182, pr#15483, Jason Dillaman)
    • librbd: fix issues with image removal state machine (pr#15734, Jason Dillaman)
    • librbd: fix valgrind errors and ensure tests detect future leaks (pr#15415, Jason Dillaman)
    • librbd: optimize copy-up to add hints only once to object op (issue#19875, pr#15037, Mykola Golub)
    • librbd: potential read IO hang when image is flattened (issue#19832, pr#15234, Jason Dillaman)
    • librbd: reacquire lock should update lock owner client id (issue#19929, pr#15093, Jason Dillaman)
    • librbd: reduce potential of erroneous blacklisting on image close (issue#19970, pr#15162, Jason Dillaman)
    • librbd: remove unused rbd_image_options_t ostream operator (pr#15443, Mykola Golub)
    • mds: change the type of data_pools (pr#15278, Vicente Cheng)
    • mds: check export pin during replay (issue#20039, pr#15205, Patrick Donnelly)
    • mds: Client syncfs is slow (waits for next MDS tick) (issue#20129, pr#15544, dongdong tao)
    • mds: explicitly output error msg for dump cache asok command (pr#15592, Zhi Zhang)
    • mds: fix CDir::merge() for mds_debug_auth_pins (issue#19946, pr#15130, “Yan, Zheng”)
    • mds: fix client ID truncation (pr#15258, Henry Chang)
    • mds: fix hangs involving re-entrant calls to journaler (issue#20165, pr#15430, John Spray)
    • mds: improvements for stray reintegration (pr#15548, “Yan, Zheng”)
    • mds: limit client writable range increment (issue#19955, pr#15131, “Yan, Zheng”)
    • mds: mds perf item ‘l_mdl_expos’ always behind journaler (pr#15621, redickwang)
    • mds: miscellaneous multimds fixes part2 (pr#15125, “Yan, Zheng”)
    • mds: miscellaneous multimds fixes (pr#14550, “Yan, Zheng”)
    • mds: multimds flock fixes (pr#15440, “Yan, Zheng”)
    • mds: Pass empty string to clear mantle balancer (issue#20076, pr#15282, Zhi Zhang)
    • mds: properly create aux subtrees for pinned directory (issue#20083, pr#15300, “Yan, Zheng”)
    • mds: save projected path into inode_t::stray_prior_path (issue#20340, pr#15800, “Yan, Zheng”)
    • mgr: ceph-create-keys: update client.admin if it already exists (issue#19940, pr#15112, John Spray)
    • mgr: ceph: introduce “tell x help” subcommand (issue#19885, pr#15111, liuchang0812)
    • mgr: ceph-mgr: Implement new pecan-based rest api (pr#14457, Boris Ranto)
    • mgr: cleanup, stop clients sending in perf counters (pr#15578, John Spray)
    • mgr: dashboard code cleanup (pr#15577, John Spray)
    • mgr: dashboard GUI module (pr#14946, John Spray, Dan Mick)
    • mgr: fix MgrStandby eating messages (pr#15716, John Spray)
    • mgr: load modules in separate python sub-interpreters (pr#14971, Tim Serong)
    • mgr: Mark session connections down on shutdown (issue#19900, pr#15192, Brad Hubbard)
    • mgr: mgr/ log daemon type string as well as id (pr#15560, Dan Mick)
    • mgr: mgr/dashboard: fix type error in get_rate function (issue#20276, pr#15668, liuchang0812)
    • mgr: mgr/dashboard: load log lines on startup, split out audit log (pr#15709, John Spray)
    • mgr: mgr/MgrStandby: prevent use-after-free on just-shut-down Mgr (issue#19595, pr#15297, Sage Weil)
    • mgr: mgr/MgrStandby: respawn when deactivated (issue#19595, issue#19549, pr#15557, Sage Weil)
    • mgr: mgr,osd: ceph-mgr –help, unify usage text of other daemons (pr#15176, Tim Serong)
    • mgr,mon: mon,mgr: extricate PGmap from monitor (issue#20067, issue#20174, issue#20050, pr#15073, Kefu Chai, Sage Weil, Greg Farnum)
    • mgr,mon: mon/MgrMonitor: add ‘mgr dump [epoch]’ command (pr#15158, Sage Weil)
    • mgr,mon: mon,mgr: print pgmap reports to debug (not cluster) log (pr#15740, Sage Weil)
    • mgr: optimize DaemonStateIndex::cull() a little bit (pr#14967, Kefu Chai)
    • mgr: print a more helpful error message for when users lack mgr ceph caps (issue#20296, pr#15697, Greg Farnum)
    • mgr: pybind/mgr/dashboard: monkeypatch os.exit to stop cherrypy from taking down mgr (issue#20216, pr#15588, Sage Weil)
    • mgr: pybind/mgr: Delete rest module (pr#15429, John Spray)
    • mgr: pybind/mgr/restful: improve cert handling; work with vstart (pr#15405, Sage Weil)
    • mgr: raise python exception on failure in send_command() (pr#15704, Kefu Chai)
    • mgr: remove default cert; disable both restful and dashboard by default (pr#15601, Boris Ranto, Sage Weil)
    • mgr,tests: qa/upgrade/jewel-x/point-to-point: add a mgr during final upgrade (pr#15637, Sage Weil)
    • mon: add crush type down health warnings (pr#14914, Neha Ojha)
    • mon: Add override for FsNewHandler::handle() (pr#15331, yonghengdexin735)
    • mon: cleanups (pr#15272, Kefu Chai)
    • mon: delete useless function definition (pr#15188, shiqi)
    • mon: DIVIDE_BY_ZERO in PGMapDigest::dump_pool_stats_full() (pr#15622, Jos Collin)
    • mon: don’t prefix mgr summary with epoch number (pr#15512, John Spray)
    • mon: fix accesing pending_fsmap from peon (issue#20040, pr#15213, John Spray)
    • mon: fix a few bugs with the osd health reporting (pr#15179, Sage Weil)
    • mon: Fixed typo in function comment blocks and in other comments (pr#15304, linbing)
    • mon: Fixed typo in @post of _active() (pr#15191, Linbing)
    • mon: fix mon_keyvaluedb application (pr#15059, Sage Weil)
    • mon: Incorrect expression in PGMap::get_health() (pr#15648, Jos Collin)
    • mon: it’s no need to get pg action_primary osd twice in pg scrub (pr#15313, linbing)
    • mon: Log errors at startup (issue#14088, `pr#15723 <https://
    • mon: mon/MgrMonitor: send digests only if is_active() (pr#15109, Kefu Chai)
    • mon: mon/MonClient: cancel pending commands on shutdown (issue#20051, pr#15227, Kefu Chai, Sage Weil)
    • mon: {mon,osd,mds} {versions,count-metadata} (pr#15436, Sage Weil)
    • mon: mon/PGMap: show %used in formatted output (issue#20123, pr#15387, Joao Eduardo Luis)
    • mon: Removed unnecessary function declaration in MDSMonitor.h (pr#15374, yonghengdexin735)
    • mon: replace osds with osd destroy and osd new (pr#14074, Joao Eduardo Luis, Sage Weil)
    • mon: revise “ceph status” output (pr#15396, John Spray)
    • mon: show io status quickly if no update in a long period (pr#14176, Mingxin Liu)
    • mon: track features from connect clients, and use it to gate set-require-min-compat-client (pr#15371, Sage Weil)
    • mon: trim the creating_pgs after updating it with pgmap (issue#20067, pr#15318, Kefu Chai)
    • msg: do not enable client-side binding by default (issue#20049, pr#15392, Jason Dillaman)
    • msg: don’t set msgr addr when disabing client bind (pr#15243, Haomai Wang)
    • msgr: msg/async: Lower down the AsyncMessenger’s standby warning from debug (pr#15242, Pan Liu)
    • msgr: msg/async/rdma: check if fin message completed (pr#15624, Alexander Mikheev, Adir Lev)
    • msgr: msg/async/rdma: handle buffers after close msg (pr#15749, DanielBar-On, Alexander Mikheev, Adir Lev)
    • msgr: msg/async: remove false alert “assert” (pr#15288, Haomai Wang)
    • osd: don’t leak pgrefs or reservations in SnapTrimmer (issue#19931, pr#15214, Greg Farnum)
    • osd: fix argument-dependent lookup of swap() (pr#15124, Casey Bodley)
    • osd: fix past_intervals base case by adding epoch_pool_created to pg_history_t (issue#19877, pr#14989, Sage Weil)
    • osd: hdd vs ssd defaults for osd op thread pool (pr#15422, Sage Weil)
    • osd: Implement asynchronous recovery sleep (pr#15212, Neha Ojha)
    • osd: Move scrub sleep timer to osdservice (issue#19986, pr#15217, Brad Hubbard)
    • osd: Object level shard errors are tracked and used if no auth available (issue#20089, pr#15397, David Zafman)
    • osd: osd/ check if osd is out in subtree_type_is_down (issue#19989, pr#15250, Neha Ojha)
    • osd: ‘osd tree in|out|up|down’ to filter tree results (pr#15294, Sage Weil)
    • osd: reduce buffer pinning from EC entries (pr#15120, Sage Weil)
    • osd: reduce map cache size (pr#15292, Sage Weil)
    • osd: reduce rados_max_object_size from 100 GB -> 128 MB (pr#15520, Sage Weil)
    • osd: rename osd -> osd_pglog; include pglog-related bufferlists (pr#15531, Sage Weil)
    • osd: Return early on shutdown (issue#19900, pr#15345, Brad Hubbard)
    • osd: take PGRef for recovery sleep wakeup event (issue#20226, pr#15582, Sage Weil)
    • osd: when osd in not in failure_pending, we don’t need to get osd inst from osdmap. (pr#15558, linbing)
    • osd: When scrub finds an attr error mark shard inconsistent (issue#20089, pr#15368, David Zafman)
    • performance: common/config_opts.h: Lower HDD throttle cost. (pr#15485, Mark Nelson)
    • performance: denc: add need_contiguous to denc_traits (pr#15224, Kefu Chai)
    • pybind: pybind/ceph_argparse: fix empty string check (issue#20135, pr#15500, Sage Weil)
    • pybind: pybind/ fix Termsize.update (pr#15253, Kefu Chai)
    • pybind: pybind/rados: avoid call free() on invalid pointer (pr#15159, Mingxin Liu)
    • pybind,rbd: pybind/rbd: OSError should be picklable (issue#20223, pr#15574, Jason Dillaman)
    • pybind: support mon target in pybind (pr#15409, liuchang0812)
    • qa: test/osd/ use wait_for_clean (pr#15722, Dan Mick)
    • rbd-mirror: coordinate image syncs with leader (issue#18789, pr#14745, Mykola Golub)
    • rbd-mirror: lock loss during sync should wait for in-flight copies (pr#15532, Jason Dillaman)
    • rbd-mirror: permit release of local image exclusive lock after force promotion (issue#18963, pr#15140, Jason Dillaman)
    • rbd: properly decode features when using image name optional (issue#20185, pr#15492, Jason Dillaman)
    • rbd: pybind/rbd: fix crash if more than 1024 images in trash bin (pr#15134, runsisi)
    • rbd: rbd/bench: fix write gaps when doing sequential writes with io-threads > 1 (pr#15206, Igor Fedotov)
    • rbd: removed hardcoded default pool (pr#15518, Jason Dillaman)
    • rbd,tests: qa: krbd discard/zeroout tests (pr#15388, Ilya Dryomov)
    • rbd,tests: qa/suites/krbd: unmap subsuite needs straw buckets (pr#15290, Ilya Dryomov)
    • rbd,tests: qa: update to match the new rados ls behavior (pr#15594, Ilya Dryomov)
    • rbd,tests: test/librbd: unit tests cleanup (pr#15113, Mykola Golub)
    • rdma: msg/async/rdma: Add DSCP support (pr#15484, Sarit Zubakov)
    • rdma: msg/async: Revert RDMA-CM (pr#15262, Amir Vadai)
    • rgw: Adding code to create tenanted user for s3 bucket policy tests. (pr#15028, Pritha Srivastava)
    • rgw: add “rgw_verify_ssl” config (pr#15301, Shasha Lu)
    • rgw: add the Vim’s modeline into (pr#15431, Radoslaw Zarzynski)
    • rgw: bucket index check in radosgw-admin removes valid index. (issue#18470, pr#12851, Zhang Shaowen)
    • rgw: datalog trim and mdlog trim handles the result returned by osd incorrectly. (issue#20190, pr#15507, Zhang Shaowen)
    • rgw: display more info when using radosgw-admin bucket stats (pr#15256, fang.yuxiang)
    • rgw: drop asio/{yield,coroutine}.hpp replacements (pr#15413, Kefu Chai)
    • rgw: drop using std ns in header files and other cleanups (pr#15137, Abhishek Lekshmanan)
    • rgw: dynamic resharding (pr#15493, Yehuda Sadeh, Orit Wasserman)
    • rgw: fix ‘gc list –include-all’ command infinite loop the first items (issue#19978, pr#12774, Shasha Lu, fang yuxiang)
    • rgw: fix lc list failure when shards not be all created (issue#19898, pr#15025, Jiaying Ren)
    • rgw: fix radosgw-admin retcode (pr#15257, Shasha Lu)
    • rgw: fix default config file path (pr#15306, Jiaying Ren)
    • rgw: fix X-Object-Meta-Static-Large-Object in SLO download (issue#19951, pr#15045, Shasha Lu)
    • rgw: metadata search part 2 (pr#14351, Yehuda Sadeh)
    • rgw: migrate atomic_t to std::atomic<> (pr#15001, Jesse Williamson)
    • rgw: optimize data sync. Add zones_trace in log to avoid needless sync. (issue#19219, pr#13851, Zhang Shaowen)
    • rgw: optimize generating torrent file. Object data won’t stay in memory now. (pr#15153, Zhang Shaowen)
    • rgw: pass authentication domain to civetweb (issue#17657, pr#12861, Abhishek Lekshmanan)
    • rgw: polymorphic error codes (pr#10690, Pritha Srivastava, Marcus Watts)
    • rgw: remove fastcgi from default rgw frontends (pr#15098, Casey Bodley)
    • rgw: rename s3_code to err_code for swift (pr#12300, Guo Zhandong)
    • rgw: return the version id in get object and object metadata request. (issue#19370, pr#14117, Zhang Shaowen)
    • rgw: rgw-admin: fix bucket limit check argparse, div(0) (pr#15316, Matt Benjamin)
    • rgw: rgw_common: use string::npos for the results of str.find (pr#14341, Abhishek Lekshmanan)
    • rgw: rgw_file: add lock protection for readdir against gc (issue#20121, pr#15329, Gui Hecheng)
    • rgw: rgw_file cleanup names (pr#15568, Gui Hecheng)
    • rgw: rgw_file: fix flags set on unsuccessful unlink (pr#15222, Gui Hecheng)
    • rgw: rgw_file: prevent conflict of mkdir between restarts (issue#20275, pr#15655, Gui Hecheng)
    • rgw: rgw_file: release rgw_fh lock and ref on ENOTEMPTY (issue#20061, pr#15246, Matt Benjamin)
    • rgw: rgw_file: removed extra rele() on fs in rgw_umount() (pr#15152, Gui Hecheng)
    • rgw: rgw_file: remove hidden uxattr objects from buckets on delete (issue#20045, pr#15210, Matt Benjamin)
    • rgw: rgw_file: remove post-unlink lookup check (issue#20047, pr#15216, Matt Benjamin)
    • rgw: rgw_file: replace raw fs->fh_lru.unref with predefined fs->unref (pr#15541, Gui Hecheng)
    • rgw: rgw_file: store bucket uxattrs on the bucket (issue#20082, pr#15293, Matt Benjamin)
    • rgw: rgw_file: v3: fix write-timer action (issue#19932, pr#15097, Matt Benjamin)
    • rgw: rgw_rados: create sync module instances only if run_sync_thread is set (issue#19830, pr#14994, Abhishek Lekshmanan)
    • rgw: rgw/ using string::back() instead as the C++11 recommend (pr#14827, liuyuhong)
    • rgw: segment fault when shard id out of range (issue#19732, pr#14389, redickwang)
    • rgw: set object accounted size correctly (issue#20071, pr#14950, fang yuxiang)
    • rgw: set placement rule properly (pr#15221, fang.yuxiang)
    • rgw: support certain archaic and antiquated distributions (pr#15498, Adam C. Emerson)
    • rgw,tests: qa/rgw: add multisite suite to configure and run multisite tests (pr#14688, Casey Bodley)
    • rgw,tests: qa/rgw: remove apache/fastcgi and radosgw-agent tests (pr#15184, Casey Bodley)
    • rgw: Turn off fcgi as a frontend (issue#16784, pr#15070, Thomas Serlin)
    • rgw: use get_data_extra_pool() when get extra pool (issue#20064, pr#15219, fang yuxiang)
    • rgw: use pre-defined calls to replace raw flag operation (pr#15107, Gui Hecheng)
    • tests: Add integration tests for admin socket output (pr#15223, Brad Hubbard)
    • tests: ceph-disk: add setting for external py-modules for tox-testing (pr#15433, Willem Jan Withagen)
    • tests: Check make_writeable() return value (pr#15266, zhanglei)
    • tests: config_opts: drop unused opts (pr#15031, Kefu Chai)
    • tests: qa: add task for dnsmasq configuration (pr#15071, Casey Bodley)
    • tests: qa: split test_tiering into smaller pieces (pr#15146, Kefu Chai)
    • tests: qa/suites/rados: fix ec thrashing (pr#15087, Sage Weil)
    • tests: qa/suites/rados/singleton-nomsgr: fix syntax (pr#15276, Sage Weil)
    • tests: qa/suites/rados/thrash: make sure osds have map before legacy scrub (pr#15117, Sage Weil)
    • tests: qa/suites/rados/upgrade: restart mds (pr#15517, Sage Weil)
    • tests: qa/tasks/ceph_manager: ‘ceph $service tell …’ is obsolete (pr#15252, Sage Weil)
    • tests: qa/tasks/rebuild_mondb: grant “mgr:allow *” to client.admin (issue#19439, pr#14284, Kefu Chai)
    • tests: qa/tasks/repair_test: unset flags we set (pr#15296, Sage Weil)
    • tests: qa/workunits/ use syntax understood by jq 1.3 (pr#15530, Kefu Chai)
    • tests: Rename FileJournal object to distinguish (pr#15279, Jos Collin)
    • tests: test/crush: silence warnings from -Walloc-size-larger-than= and -Wstringop-overflow= (pr#15173, Jos Collin)
    • tests: test: migrate atomic_t to std::atomic (pr#14655, Jesse Williamson)
    • tests: test/msgr: silence warnings from -Wsign-compare (pr#15356, Jos Collin)
    • tests: test/msgr: silence warnings from -Wsign-compare (pr#15570, Jos Collin)
    • tests: test/objectstore: Check apply_transaction() return values (pr#15171, zhanglei)
    • tests: test/old: Removed commented code (pr#15366, Jos Collin)
    • tests: test/osdc: fix comparison error and silence warning from -Wunused-value (pr#15353, Willem Jan Withagen)
    • tests: test: osd/ fix Clang complain about promotion (pr#15525, Willem Jan Withagen)
    • tests: test: silence warning from -Wsign-compare (pr#15355, Jos Collin)
    • tests: test: Test fix for SnapSet change (pr#15161, David Zafman)
    • tests: test/unittest_bluefs: check whether mounted success (pr#14988, shiqi)
    • tools: ceph-disk: command invocation needs all fields separate (pr#15733, Willem Jan Withagen)
    • tools: adjust usage width according to user’s tty (pr#15190, Kefu Chai)
    • tools: assert(state==connected) before help_for_target() (pr#15156, Kefu Chai)
    • tools: drop the compatiiblity to handle non json commands (pr#15508, Kefu Chai)
    • tools: print return code when json_command failed (pr#15378, liuchang0812)
    • tools: ceph-rest-api: be more tolerant on network failure (issue#20115, pr#15706, Kefu Chai)
    • tools: fio_ceph_objectstore: Print db_statistics when rocksdb_perf is enabled (pr#15796, Xiaoyan Li)
    • tools: tools/ceph_kvstore_tool: add “bluestore-kv” to usage (pr#15326, xie xingguo)
    • tools: tools/crushtool: replicated-rule API support (pr#15011, xie xingguo)
    • tools: vstart: “debug_ms=1” for mgr by default (pr#15127, Kefu Chai)
    • tools: vstart: print “start osd.$id” instead of “start osd$id” (pr#15427, Kefu Chai)