v16.2.15 Pacific released

Yuri Weinstein

This is the fifteenth, and expected to be last, backport release in the Pacific series.

Notable Changes

  • ceph config dump --format <json|xml> output will display the localized option names instead of their normalized version. For example, "mgr/prometheus/x/server_port" will be displayed instead of "mgr/prometheus/server_port". This matches the output of the non pretty-print formatted version of the command.

  • CephFS: MDS evicts clients who are not advancing their request tids, which causes a large buildup of session metadata, resulting in the MDS going read-only due to the RADOS operation exceeding the size threshold. The mds_session_metadata_threshold config controls the maximum size that an (encoded) session metadata can grow.

  • RADOS: The get_pool_is_selfmanaged_snaps_mode C++ API has been deprecated due to its susceptibility to false negative results. Its safer replacement is pool_is_in_selfmanaged_snaps_mode.

  • RBD: When diffing against the beginning of time (fromsnapname == NULL) in fast-diff mode (whole_object == true with fast-diff image feature enabled and valid), diff-iterate is now guaranteed to execute locally if exclusive lock is available. This brings a dramatic performance improvement for QEMU live disk synchronization and backup use cases.

Changelog

  • [CVE-2023-43040] rgw: Fix bucket validation against POST policies (pr#53758, Joshua Baergen)

  • admin/doc-requirements: bump Sphinx to 5.0.2 (pr#55258, Nizamudeen A)

  • blk/kernel: Add O_EXCL for block devices (pr#53567, Adam Kupczyk)

  • Bluestore: fix bluestore collection_list latency perf counter (pr#52949, Wangwenjuan)

  • bluestore: Fix problem with volume selector (pr#53587, Adam Kupczyk)

  • ceph-volume,python-common: Data allocate fraction (pr#53581, Jonas Pfefferle)

  • ceph-volume: add --osd-id option to raw prepare (pr#52928, Guillaume Abrioux)

  • ceph-volume: fix a bug in _check_generic_reject_reasons (pr#54707, Kim Minjong, Guillaume Abrioux, Michael English)

  • ceph-volume: fix raw list for lvm devices (pr#52981, Guillaume Abrioux)

  • ceph-volume: fix zap_partitions() in devices.lvm.zap (pr#55658, Guillaume Abrioux)

  • ceph-volume: fix zap_partitions() in devices.lvm.zap (pr#55481, Guillaume Abrioux)

  • ceph-volume: fixes fallback to stat in is_device and is_partition (pr#54709, Guillaume Abrioux, Teoman ONAY)

  • ceph: allow xlock state to be LOCK_PREXLOCK when putting it (pr#53662, Xiubo Li)

  • cephadm: add tcmu-runner to logrotate config (pr#53975, Adam King)

  • cephadm: Adding support to configure public_network cfg section (pr#52411, Redouane Kachach)

  • cephadm: allow ports to be opened in firewall during adoption, reconfig, redeploy (pr#52083, Adam King)

  • cephadm: make custom_configs work for tcmu-runner container (pr#53469, Adam King)

  • cephadm: run tcmu-runner through script to do restart on failure (pr#53977, Adam King, Raimund Sacherer)

  • cephfs-journal-tool: disambiguate usage of all keyword (in tool help) (pr#53645, Manish M Yathnalli)

  • cephfs-mirror: do not run concurrent C_RestartMirroring context (issue#62072, pr#53640, Venky Shankar)

  • cephfs-top: include the missing fields in --dump output (pr#53453, Jos Collin)

  • cephfs: upgrade cephfs-shell's path wherever necessary (pr#54144, Rishabh Dave)

  • cephfs_mirror: correctly set top level dir permissions (pr#53270, Milind Changire)

  • client: always refresh mds feature bits on session open (issue#63188, pr#54245, Venky Shankar)

  • client: fix sync fs to force flush mdlog for all sessions (pr#53981, Xiubo Li)

  • client: issue a cap release immediately if no cap exists (pr#52852, Xiubo Li)

  • client: queue a delay cap flushing if there are ditry caps/snapcaps (pr#54472, Xiubo Li)

  • cmake/modules/BuildRocksDB.cmake: inherit parent's CMAKE_CXX_FLAGS (pr#55500, Kefu Chai)

  • common/weighted_shuffle: don't feed std::discrete_distribution with all-zero weights (pr#55155, Radosław Zarzyński)

  • common: intrusive_lru destructor add (pr#54558, Ali Maredia)

  • doc/cephfs: note regarding start time time zone (pr#53576, Milind Changire)

  • doc/cephfs: write cephfs commands fully in docs (pr#53403, Rishabh Dave)

  • doc/rados/configuration/bluestore-config-ref: Fix lowcase typo (pr#54696, Adam Kupczyk)

  • doc/rados: update config for autoscaler (pr#55440, Zac Dover)

  • doc: clarify use of rados rm command (pr#51260, J. Eric Ivancich)

  • doc: discuss the standard multi-tenant CephFS security model (pr#53560, Greg Farnum)

  • Fixing example of BlueStore resharding (pr#54474, Adam Kupczyk)

  • isa-l: incorporate fix for aarch64 text relocation (pr#51314, luo rixin)

  • libcephsqlite: fill 0s in unread portion of buffer (pr#53103, Patrick Donnelly)

  • librados: make querying pools for selfmanaged snaps reliable (pr#55024, Ilya Dryomov)

  • librbd: Append one journal event per image request (pr#54820, Joshua Baergen)

  • librbd: don't report HOLE_UPDATED when diffing against a hole (pr#54949, Ilya Dryomov)

  • librbd: fix regressions in ObjectListSnapsRequest (pr#54860, Ilya Dryomov)

  • librbd: improve rbd_diff_iterate2() performance in fast-diff mode (pr#55256, Ilya Dryomov)

  • librbd: kick ExclusiveLock state machine on client being blocklisted when waiting for lock (pr#53295, Ramana Raja)

  • librbd: make CreatePrimaryRequest remove any unlinked mirror snapshots (pr#53274, Ilya Dryomov)

  • log: fix the formatting when dumping thread IDs (pr#53465, Radoslaw Zarzynski)

  • log: Make log_max_recent have an effect again (pr#48311, Joshua Baergen)

  • make-dist: don't use --continue option for wget (pr#55090, Casey Bodley)

  • make-dist: download liburing from kernel.io instead of github (pr#53197, Laura Flores)

  • MClientRequest: properly handle ceph_mds_request_head_legacy for ext_num_retry, ext_num_fwd, owner_uid, owner_gid (pr#54410, Alexander Mikhalitsyn)

  • mds,qa: some balancer debug messages (<=5) not printed when debug_mds is >=5 (pr#53552, Patrick Donnelly)

  • mds/Server: mark a cap acquisition throttle event in the request (pr#53169, Leonid Usov)

  • mds: acquire inode snaplock in open (pr#53185, Patrick Donnelly)

  • mds: add event for batching getattr/lookup (pr#53556, Patrick Donnelly)

  • mds: adjust pre_segments_size for MDLog when trimming segments for st… (issue#59833, pr#54033, Venky Shankar)

  • mds: blocklist clients with "bloated" session metadata (issue#61947, issue#62873, pr#53634, Venky Shankar)

  • mds: drop locks and retry when lock set changes (pr#53243, Patrick Donnelly)

  • mds: ensure next replay is queued on req drop (pr#54314, Patrick Donnelly)

  • mds: fix deadlock between unlinking and linkmerge (pr#53495, Xiubo Li)

  • mds: fix issuing redundant reintegrate/migrate_stray requests (pr#54517, Xiubo Li)

  • mds: log message when exiting due to asok command (pr#53550, Patrick Donnelly)

  • mds: replacing bootstrap session only if handle client session message (pr#53362, Mer Xuanyi)

  • mds: report clients laggy due laggy OSDs only after checking any OSD is laggy (pr#54120, Dhairya Parmar)

  • mds: set the loner to true for LOCK_EXCL_XSYN (pr#54912, Xiubo Li)

  • mds: use variable g_ceph_context directly in MDSAuthCaps (pr#52821, Rishabh Dave)

  • mgr/BaseMgrModule: Optimize CPython Call in Finish Function (pr#55109, Nitzan Mordechai)

  • mgr/cephadm: Add "networks" parameter to orch apply rgw (pr#53974, Teoman ONAY)

  • mgr/cephadm: ceph orch add fails when ipv6 address is surrounded by square brackets (pr#53978, Teoman ONAY)

  • mgr/dashboard: add 'omit_usage' query param to dashboard api 'get rbd' endpoint (pr#54192, Cory Snyder)

  • mgr/dashboard: allow tls 1.2 with a config option (pr#53781, Nizamudeen A)

  • mgr/dashboard: Consider null values as zero in grafana panels (pr#54542, Aashish Sharma)

  • mgr/dashboard: fix CephPGImbalance alert (pr#49478, Aashish Sharma)

  • mgr/dashboard: Fix CephPoolGrowthWarning alert (pr#49477, Aashish Sharma)

  • mgr/dashboard: fix constraints.txt (pr#54652, Ernesto Puerta)

  • mgr/dashboard: fix rgw page issues when hostname not resolvable (pr#53215, Nizamudeen A)

  • mgr/dashboard: set CORS header for unauthorized access (pr#53202, Nizamudeen A)

  • mgr/prometheus: avoid duplicates and deleted entries for rbd_stats_pools (pr#48524, Avan Thakkar)

  • mgr/prometheus: change pg_repaired_objects name to pool_repaired_objects (pr#48439, Pere Diaz Bou)

  • mgr/prometheus: fix pool_objects_repaired and daemon_health_metrics format (pr#51692, banuchka)

  • mgr/rbd_support: fix recursive locking on CreateSnapshotRequests lock (pr#54293, Ramana Raja)

  • mgr/snap-schedule: use the right way to check the result returned by… (pr#53355, Mer Xuanyi)

  • mgr/snap_schedule: allow retention spec 'n' to be user defined (pr#52750, Milind Changire, Jakob Haufe)

  • mgr/volumes: Fix pending_subvolume_deletions in volume info (pr#53574, Kotresh HR)

  • mgr: Add one finisher thread per module (pr#51045, Kotresh HR, Patrick Donnelly)

  • mgr: add throttle policy for DaemonServer (pr#54013, ericqzhao)

  • mgr: don't dump global config holding gil (pr#50194, Mykola Golub)

  • mgr: fix a race condition in DaemonServer::handle_report() (pr#52993, Radoslaw Zarzynski)

  • mgr: register OSDs in ms_handle_accept (pr#53189, Patrick Donnelly)

  • mgr: remove out&down osd from mgr daemons (pr#54553, shimin)

  • mon/ConfigMonitor: Show localized name in "config dump --format json" output (pr#53984, Sridhar Seshasayee)

  • mon/MonClient: resurrect original client_mount_timeout handling (pr#52533, Ilya Dryomov)

  • mon/Monitor.cc: exit function if !osdmon()->is_writeable() && mon/OSDMonitor: Added extra check before mon.go_recovery_stretch_mode() (pr#51414, Kamoltat)

  • mon/Monitor: during shutdown don't accept new authentication and crea… (pr#55113, Nitzan Mordechai)

  • mon: add exception handling to ceph health mute (pr#55118, Daniel Radjenovic)

  • mon: add proxy to cache tier options (pr#50552, tan changzhi)

  • mon: fix health store size growing infinitely (pr#55472, Wei Wang)

  • mon: fix iterator mishandling in PGMap::apply_incremental (pr#52555, Oliver Schmidt)

  • mon: fix mds metadata lost in one case (pr#54318, shimin)

  • msg/async: initialize worker in RDMAStack::create_worker() and drop Stack::num_workers (pr#55443, Kefu Chai)

  • msg/AsyncMessenger: re-evaluate the stop condition when woken up in 'wait()' (pr#53716, Leonid Usov)

  • nofail option in fstab not supported (pr#52987, Leonid Usov)

  • os/bluestore: don't require bluestore_db_block_size when attaching new (pr#52948, Igor Fedotov)

  • os/bluestore: get rid off resulting lba alignment in allocators (pr#54434, Igor Fedotov)

  • osd,bluestore: gracefully handle a failure during meta collection load (pr#53135, Igor Fedotov)

  • osd/OpRequest: Add detail description for delayed op in osd log file (pr#53693, Yite Gu)

  • osd/OSD: introduce reset_purged_snaps_last (pr#53970, Matan Breizman)

  • osd/OSDMap: Check for uneven weights & != 2 buckets post stretch mode (pr#52459, Kamoltat)

  • osd/scrub: Fix scrub starts messages spamming the cluster log (pr#53430, Prashant D)

  • osd: don't require RWEXCL lock for stat+write ops (pr#54593, Alice Zhao)

  • osd: ensure async recovery does not drop a pg below min_size (pr#54548, Samuel Just)

  • osd: fix shard-threads cannot wakeup bug (pr#51262, Jianwei Zhang)

  • osd: fix use-after-move in build_incremental_map_msg() (pr#54268, Ronen Friedman)

  • osd: log the number of extents for sparse read (pr#54604, Xiubo Li)

  • pacifc: Revert "mgr/dashboard: unselect rows in datatables" (pr#55415, Nizamudeen A)

  • pybind/mgr/autoscaler: Donot show NEW PG_NUM value if autoscaler is not on (pr#53464, Prashant D)

  • pybind/mgr/mgr_util: fix to_pretty_timedelta() (pr#51243, Sage Weil)

  • pybind/mgr/volumes: log mutex locks to help debug deadlocks (pr#53916, Kotresh HR)

  • pybind/mgr: ceph osd status crash with ZeroDivisionError (pr#46696, Nitzan Mordechai, Kefu Chai)

  • pybind/rados: don't close watch in dealloc if already closed (pr#51259, Tim Serong)

  • pybind/rados: fix missed changes for PEP484 style type annotations (pr#54361, Igor Fedotov)

  • pybind/rbd: don't produce info on errors in aio_mirror_image_get_info() (pr#54053, Ilya Dryomov)

  • python-common/drive_group: handle fields outside of 'spec' even when 'spec' is provided (pr#52413, Adam King)

  • python-common/drive_selection: lower log level of limit policy message (pr#52412, Adam King)

  • qa/distros: backport update from rhel 8.4 -> 8.6 (pr#54901, Casey Bodley, David Galloway)

  • qa/suites/krbd: stress test for recovering from watch errors (pr#53784, Ilya Dryomov)

  • qa/suites/orch: whitelist warnings that are expected in test environments (pr#55523, Laura Flores)

  • qa/suites/rbd: add test to check rbd_support module recovery (pr#54294, Ramana Raja)

  • qa/suites/upgrade/pacific-p2p: run librbd python API tests from pacific tip (pr#55418, Yuri Weinstein)

  • qa/suites/upgrade/pacific-p2p: skip TestClsRbd.mirror_snapshot test (pr#53204, Ilya Dryomov)

  • qa/suites: added more whitelisting + fix typo (pr#55717, Kamoltat)

  • qa/tasks/cephadm: enable mon_cluster_log_to_file (pr#55429, Dan van der Ster)

  • qa/upgrade: disable a failing ceph_test_cls_cmpomap test case (pr#55519, Casey Bodley)

  • qa/upgrade: use ragweed branch for starting ceph release (pr#55382, Casey Bodley)

  • qa/workunits/rbd/cli_generic.sh: narrow race window when checking that rbd_support module command fails after blocklisting the module's client (pr#54771, Ramana Raja)

  • qa: assign file system affinity for replaced MDS (issue#61764, pr#54039, Venky Shankar)

  • qa: ignore expected cluster warning from damage tests (pr#53486, Patrick Donnelly)

  • qa: lengthen shutdown timeout for thrashed MDS (pr#53555, Patrick Donnelly)

  • qa: pass arg as list to fix test case failure (pr#52763, Dhairya Parmar)

  • qa: remove duplicate import (pr#53447, Patrick Donnelly)

  • qa: run kernel_untar_build with newer tarball (pr#54713, Milind Changire)

  • qa: wait for file to have correct size (pr#52744, Patrick Donnelly)

  • rados: build minimally when "WITH_MGR" is off (pr#51250, J. Eric Ivancich)

  • rados: increase osd_max_write_op_reply_len default to 64 bytes (pr#53470, Matt Benjamin)

  • RadosGW API: incorrect bucket quota in response to HEAD /{bucket}/?usage (pr#53439, shreyanshjain7174)

  • radosgw-admin: allow 'bi purge' to delete index if entrypoint doesn't exist (pr#54010, Casey Bodley)

  • radosgw-admin: don't crash on --placement-id without --storage-class (pr#53474, Casey Bodley)

  • radosgw-admin: fix segfault on pipe modify without source/dest zone specified (pr#51256, caisan)

  • rbd-nbd: fix stuck with disable request (pr#54256, Prasanna Kumar Kalever)

  • rgw - Fix NoSuchTagSet error (pr#50533, Daniel Gryniewicz)

  • rgw/auth: ignoring signatures for HTTP OPTIONS calls (pr#55550, Tobias Urdin)

  • rgw/beast: add max_header_size option with 16k default, up from 4k (pr#52113, Casey Bodley)

  • rgw/keystone: EC2Engine uses reject() for ERR_SIGNATURE_NO_MATCH (pr#53764, Casey Bodley)

  • rgw/notification: remove non x-amz-meta-* attributes from bucket notifications (pr#53376, Juan Zhu)

  • rgw/putobj: RadosWriter uses part head object for multipart parts (pr#55586, Casey Bodley)

  • rgw/s3: ListObjectsV2 returns correct object owners (pr#54160, Casey Bodley)

  • rgw/sts: AssumeRole no longer writes to user metadata (pr#52051, Casey Bodley)

  • rgw/sts: code for returning an error when an IAM policy (pr#44462, Pritha Srivastava)

  • rgw/sts: code to fetch certs using .well-known/openid-configuration URL (pr#44464, Pritha Srivastava)

  • rgw/sts: createbucket op should take session_policies into account (pr#44476, Pritha Srivastava)

  • rgw/sts: fix read_obj_policy permission evaluation (pr#44471, Pritha Srivastava)

  • rgw/sts: fixes getsessiontoken authenticated with LDAP (pr#44463, Pritha Srivastava)

  • rgw/swift: check position of first slash in slo manifest files (pr#51600, Marcio Roberto Starke)

  • rgw/sync-policy: Correct "sync status" & "sync group" commands (pr#53410, Soumya Koduri)

  • rgw: 'bucket check' deletes index of multipart meta when its pending_map is nonempty (pr#54016, Huber-ming)

  • rgw: add radosgw-admin bucket check olh/unlinked commands (pr#53808, Cory Snyder)

  • rgw: Avoid segfault when OPA authz is enabled (pr#46106, Benoît Knecht)

  • rgw: beast frontend checks for local_endpoint() errors (pr#54167, Casey Bodley)

  • rgw: Drain async_processor request queue during shutdown (pr#53472, Soumya Koduri)

  • rgw: fix 2 null versionID after convert_plain_entry_to_versioned (pr#53400, rui ma, zhuo li)

  • rgw: Fix Browser POST content-length-range min value (pr#52936, Robin H. Johnson)

  • rgw: fix FP error when calculating enteries per bi shard (pr#53593, J. Eric Ivancich)

  • rgw: fix rgw cache invalidation after unregister_watch() error (pr#54014, lichaochao)

  • rgw: fix SignatureDoesNotMatch when extra headers start with 'x-amz' (pr#53772, rui ma)

  • rgw: Fix truncated ListBuckets response (pr#49526, Joshua Baergen)

  • rgw: fix unwatch crash at radosgw startup (pr#53759, lichaochao)

  • rgw: fix UploadPartCopy error code when src object not exist and src bucket not exist (pr#53356, yuliyang)

  • rgw: handle http options CORS with v4 auth (pr#53416, Tobias Urdin)

  • rgw: improve buffer list utilization in the chunkupload scenario (pr#53775, liubingrun)

  • rgw: multisite data log flag not used (pr#52055, J. Eric Ivancich)

  • rgw: pick http_date in case of http_x_amz_date absence (pr#53443, Seena Fallah, Mohamed Awnallah)

  • rgw: prevent spurious/lost notifications in the index completion thread (pr#49093, Casey Bodley, Yuval Lifshitz)

  • rgw: retry metadata cache notifications with INVALIDATE_OBJ (pr#52797, Casey Bodley)

  • rgw: s3 object lock avoids overflow in retention date (pr#52605, Casey Bodley)

  • rgw: s3website doesn't prefetch for web_dir() check (pr#53769, Casey Bodley)

  • rgw: set keys from from master zone on admin api user create (pr#51602, Ali Maredia)

  • rgw: Solving the issue of not populating etag in Multipart upload result (pr#51445, Ali Masarwa)

  • rgw: swift : check for valid key in POST forms (pr#52729, Abhishek Lekshmanan)

  • rgw: Update "CEPH_RGW_DIR_SUGGEST_LOG_OP" for remove entries (pr#50540, Soumya Koduri)

  • rgw: use unique_ptr for flat_map emplace in BucketTrimWatche (pr#52996, Vedansh Bhartia)

  • rgwlc: prevent lc for one bucket from exceeding time budget (pr#53562, Matt Benjamin)

  • test/lazy-omap-stats: Various enhancements (pr#50518, Brad Hubbard)

  • test/librbd: avoid config-related crashes in DiscardWithPruneWriteOverlap (pr#54859, Ilya Dryomov)

  • test/store_test: adjust physical extents to inject error against (pr#54782, Igor Fedotov)

  • tools/ceph_objectstore_tool: action_on_all_objects_in_pg to skip pgmeta (pr#54691, Matan Breizman)

  • tools/ceph_objectstore_tool: Support get/set/superblock (pr#55013, Matan Breizman)

  • tools/osdmaptool: fix possible segfaults when there are down osds (pr#52203, Mykola Golub)

  • Tools/rados: Improve Error Messaging for Object Name Resolution (pr#55111, Nitzan Mordechai)

  • vstart_runner: maintain log level when --debug is passed (pr#52977, Rishabh Dave)

  • vstart_runner: use FileNotFoundError when os.stat() fails (pr#52978, Rishabh Dave)

  • win32_deps_build.sh: change Boost URL (pr#55086, Lucian Petrut)