diff --git a/PendingReleaseNotes b/PendingReleaseNotes index a2c59aa87a04c..cd49938526f09 100644 --- a/PendingReleaseNotes +++ b/PendingReleaseNotes @@ -1,8 +1,3 @@ -v0.72 +v0.73 ~~~~~ -* ceph-fuse and radosgw now use the same default values for the admin - socket and log file paths that the other daemons (ceph-osd, - ceph-mon, etc.) do. If you run these daemons as non-root, you may - need to adjust your ceph.conf to disable these options or to adjust - the permissions on /var/run/ceph and /var/log/ceph. diff --git a/doc/release-notes.rst b/doc/release-notes.rst index 4911c72363f18..6b28873cf0db4 100644 --- a/doc/release-notes.rst +++ b/doc/release-notes.rst @@ -2,6 +2,293 @@ Release Notes =============== +v0.72 Emperor +------------- + +Highlights +~~~~~~~~~~ + +* common: improved crc32c performance +* librados: new example client and class code +* mds: many bug fixes and stability improvements +* mon: health warnings when pool pg_num values are not reasonable +* mon: per-pool performance stats +* osd, librados: new object copy primitives +* osd: improved interaction with backend file system to reduce latency +* osd: much internal refactoring to support ongoing erasure coding and tiering support +* rgw: bucket quotas +* rgw: improved CORS support +* rgw: performance improvements +* rgw: validate S3 tokens against Keystone + +Outside of core Ceph, the Emperor release also brings:: + +* radosgw-agent: support for multi-datacenter replication for disaster recovery +* tgt: improved support for iSCSI via upstream tgt + +Packages for both are available on ceph.com. + +Upgrade sequencing +~~~~~~~~~~~~~~~~~~ + +There are no specific upgrade restrictions on the order or sequence of +upgrading from 0.67.x Dumpling. + +It is also possible to do a rolling upgrade from 0.61.x Cuttlefish, +but there are ordering restrictions. (This is the same set of +restrictions for Cuttlefish to Dumpling.):: + +#. Upgrade ceph-common on all nodes that will use the command line + 'ceph' utility. +#. Upgrade all monitors (upgrade ceph package, restart ceph-mon + daemons). This can happen one daemon or host at a time. Note that + because cuttlefish and dumpling monitors can't talk to each other, + all monitors should be upgraded in relatively short succession to + minimize the risk that an a untimely failure will reduce + availability. +#. Upgrade all osds (upgrade ceph package, restart ceph-osd daemons). + This can happen one daemon or host at a time. +#. Upgrade radosgw (upgrade radosgw package, restart radosgw daemons). + + +Upgrading from v0.71 +~~~~~~~~~~~~~~~~~~~~ + +* ceph-fuse and radosgw now use the same default values for the admin + socket and log file paths that the other daemons (ceph-osd, + ceph-mon, etc.) do. If you run these daemons as non-root, you may + need to adjust your ceph.conf to disable these options or to adjust + the permissions on /var/run/ceph and /var/log/ceph. + +Upgrading from v0.67 Dumpling +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* ceph-fuse and radosgw now use the same default values for the admin + socket and log file paths that the other daemons (ceph-osd, + ceph-mon, etc.) do. If you run these daemons as non-root, you may + need to adjust your ceph.conf to disable these options or to adjust + the permissions on /var/run/ceph and /var/log/ceph. + +* The MDS now disallows snapshots by default as they are not + considered stable. The command 'ceph mds set allow_snaps' will + enable them. + +* For clusters that were created before v0.44 (pre-argonaut, Spring + 2012) and store radosgw data, the auto-upgrade from TMAP to OMAP + objects has been disabled. Before upgrading, make sure that any + buckets created on pre-argonaut releases have been modified (e.g., + by PUTing and then DELETEing an object from each bucket). Any + cluster created with argonaut (v0.48) or a later release or not + using radosgw never relied on the automatic conversion and is not + affected by this change. + +* Any direct users of the 'tmap' portion of the librados API should be + aware that the automatic tmap -> omap conversion functionality has + been removed. + +* Most output that used K or KB (e.g., for kilobyte) now uses a + lower-case k to match the official SI convention. Any scripts that + parse output and check for an upper-case K will need to be modified. + +* librados::Rados::pool_create_async() and librados::Rados::pool_delete_async() + don't drop a reference to the completion object on error, caller needs to take + care of that. This has never really worked correctly and we were leaking an + object + +* 'ceph osd crush set ' no longer adds the osd to the + specified location, as that's a job for 'ceph osd crush add'. It will + however continue to work just the same as long as the osd already exists + in the crush map. + +* 'ceph osd crush set ' no longer adds the osd to the + specified location, as that's a job for 'ceph osd crush add'. It will + however continue to work just the same as long as the osd already exists + in the crush map. + +* The OSD now enforces that class write methods cannot both mutate an + object and return data. The rbd.assign_bid method, the lone + offender, has been removed. This breaks compatibility with + pre-bobtail librbd clients by preventing them from creating new + images. + +* librados now returns on commit instead of ack for synchronous calls. + This is a bit safer in the case where both OSDs and the client crash, and + is probably how it should have been acting from the beginning. Users are + unlikely to notice but it could result in lower performance in some + circumstances. Those who care should switch to using the async interfaces, + which let you specify safety semantics precisely. + +* The C++ librados AioComplete::get_version() method was incorrectly + returning an int (usually 32-bits). To avoid breaking library + compatibility, a get_version64() method is added that returns the + full-width value. The old method is deprecated and will be removed + in a future release. Users of the C++ librados API that make use of + the get_version() method should modify their code to avoid getting a + value that is truncated from 64 to to 32 bits. + + +Notable Changes since v0.71 +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* build: fix [/usr]/sbin locations (Alan Somers) +* ceph-fuse, radosgw: enable admin socket and logging by default +* ceph: make -h behave when monitors are down +* common: cache crc32c values where possible +* common: fix looping on *BSD (Alan Somers) +* librados, mon: ability to query/ping out-of-quorum monitor status (Joao Luis) +* librbd python bindings: fix parent image name limit (Josh Durgin) +* mds: avoid leaking objects when deleting truncated files (Yan, Zheng) +* mds: fix F_GETLK (Yan, Zheng) +* mds: fix many bugs with stray (unlinked) inodes (Yan, Zheng) +* mds: fix many directory fragmentation bugs (Yan, Zheng) +* mon: allow (un)setting HASHPSPOOL flag on existing pools (Joao Luis) +* mon: make 'osd pool rename' idempotent (Joao Luis) +* osd: COPY_GET on-wire encoding improvements (Greg Farnum) +* osd: bloom_filter encodability, fixes, cleanups (Loic Dachary, Sage Weil) +* osd: fix handling of racing read vs write (Samuel Just) +* osd: reduce blocking on backing fs (Samuel Just) +* radosgw-agent: multi-region replication/DR +* rgw: fix/improve swift COPY support (Yehuda Sadeh) +* rgw: misc fixes to support DR (Josh Durgin, Yehuda Sadeh) +* rgw: per-bucket quota (Yehuda Sadeh) +* rpm: fix junit dependencies (Alan Grosskurth) + +Notable Changes since v0.67 Dumpling +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* build cleanly under clang (Christophe Courtaut) +* build: Makefile refactor (Roald J. van Loon) +* build: fix [/usr]/sbin locations (Alan Somers) +* ceph-disk: fix journal preallocation +* ceph-fuse, radosgw: enable admin socket and logging by default +* ceph-fuse: fix problem with readahead vs truncate race (Yan, Zheng) +* ceph-fuse: trim deleted inodes from cache (Yan, Zheng) +* ceph-fuse: use newer fuse api (Jianpeng Ma) +* ceph-kvstore-tool: new tool for working with leveldb (copy, crc) (Joao Luis) +* ceph-post-file: new command to easily share logs or other files with ceph devs +* ceph: improve parsing of CEPH_ARGS (Benoit Knecht) +* ceph: make -h behave when monitors are down +* ceph: parse CEPH_ARGS env variable +* common: bloom_filter improvements, cleanups +* common: cache crc32c values where possible +* common: correct SI is kB not KB (Dan Mick) +* common: fix looping on *BSD (Alan Somers) +* common: migrate SharedPtrRegistry to use boost::shared_ptr<> (Loic Dachary) +* common: misc portability fixes (Noah Watkins) +* crc32c: fix optimized crc32c code (it now detects arch support properly) +* crc32c: improved intel-optimized crc32c support (~8x faster on my laptop!) +* crush: fix name caching +* doc: erasure coding design notes (Loic Dachary) +* hadoop: removed old version of shim to avoid confusing users (Noah Watkins) +* librados, mon: ability to query/ping out-of-quorum monitor status (Joao Luis) +* librados: fix async aio completion wakeup +* librados: fix installed header #includes (Dan Mick) +* librados: get_version64() method for C++ API +* librados: hello_world example (Greg Farnum) +* librados: sync calls now return on commit (instead of ack) (Greg Farnum) +* librbd python bindings: fix parent image name limit (Josh Durgin) +* librbd, ceph-fuse: avoid some sources of ceph-fuse, rbd cache stalls +* mds: avoid leaking objects when deleting truncated files (Yan, Zheng) +* mds: fix F_GETLK (Yan, Zheng) +* mds: fix LOOKUPSNAP bug +* mds: fix heap profiler commands (Joao Luis) +* mds: fix locking deadlock (David Disseldorp) +* mds: fix many bugs with stray (unlinked) inodes (Yan, Zheng) +* mds: fix many directory fragmentation bugs (Yan, Zheng) +* mds: fix mds rejoin with legacy parent backpointer xattrs (Alexandre Oliva) +* mds: fix rare restart/failure race during fs creation +* mds: fix standby-replay when we fall behind (Yan, Zheng) +* mds: fix stray directory purging (Yan, Zheng) +* mds: notify clients about deleted files (so they can release from their cache) (Yan, Zheng) +* mds: several bug fixes with clustered mds (Yan, Zheng) +* mon, osd: improve osdmap trimming logic (Samuel Just) +* mon, osd: initial CLI for configuring tiering +* mon: a few 'ceph mon add' races fixed (command is now idempotent) (Joao Luis) +* mon: allow (un)setting HASHPSPOOL flag on existing pools (Joao Luis) +* mon: allow cap strings with . to be unquoted +* mon: allow logging level of cluster log (/var/log/ceph/ceph.log) to be adjusted +* mon: avoid rewriting full osdmaps on restart (Joao Luis) +* mon: continue to discover peer addr info during election phase +* mon: disallow CephFS snapshots until 'ceph mds set allow_new_snaps' (Greg Farnum) +* mon: do not expose uncommitted state from 'osd crush {add,set} ...' (Joao Luis) +* mon: fix 'ceph osd crush reweight ...' (Joao Luis) +* mon: fix 'osd crush move ...' command for buckets (Joao Luis) +* mon: fix byte counts (off by factor of 4) (Dan Mick, Joao Luis) +* mon: fix paxos corner case +* mon: kv properties for pools to support EC (Loic Dachary) +* mon: make 'osd pool rename' idempotent (Joao Luis) +* mon: modify 'auth add' semantics to make a bit more sense (Joao Luis) +* mon: new 'osd perf' command to dump recent performance information (Samuel Just) +* mon: new and improved 'ceph -s' or 'ceph status' command (more info, easier to read) +* mon: some auth check cleanups (Joao Luis) +* mon: track per-pool stats (Joao Luis) +* mon: warn about pools with bad pg_num +* mon: warn when mon data stores grow very large (Joao Luis) +* monc: fix small memory leak +* new wireshark patches pulled into the tree (Kevin Jones) +* objecter, librados: redirect requests based on cache tier config +* objecter: fix possible hang when cluster is unpaused (Josh Durgin) +* osd, librados: add new COPY_FROM rados operation +* osd, librados: add new COPY_GET rados operations (used by COPY_FROM) +* osd: 'osd recover clone overlap limit' option to limit cloning during recovery (Samuel Just) +* osd: COPY_GET on-wire encoding improvements (Greg Farnum) +* osd: add 'osd heartbeat min healthy ratio' configurable (was hard-coded at 33%) +* osd: add option to disable pg log debug code (which burns CPU) +* osd: allow cap strings with . to be unquoted +* osd: automatically detect proper xattr limits (David Zafman) +* osd: avoid extra copy in erasure coding reference implementation (Loic Dachary) +* osd: basic cache pool redirects (Greg Farnum) +* osd: basic whiteout, dirty flag support (not yet used) +* osd: bloom_filter encodability, fixes, cleanups (Loic Dachary, Sage Weil) +* osd: clean up and generalize copy-from code (Greg Farnum) +* osd: cls_hello OSD class example +* osd: erasure coding doc updates (Loic Dachary) +* osd: erasure coding plugin infrastructure, tests (Loic Dachary) +* osd: experiemental support for ZFS (zfsonlinux.org) (Yan, Zheng) +* osd: fix RWORDER flags +* osd: fix exponential backoff of slow request warnings (Loic Dachary) +* osd: fix handling of racing read vs write (Samuel Just) +* osd: fix version value returned by various operations (Greg Farnum) +* osd: generalized temp object infrastructure +* osd: ghobject_t infrastructure for EC (David Zafman) +* osd: improvements for compatset support and storage (David Zafman) +* osd: infrastructure to copy objects from other OSDs +* osd: instrument peering states (David Zafman) +* osd: misc copy-from improvements +* osd: opportunistic crc checking on stored data (off by default) +* osd: properly enforce RD/WR flags for rados classes +* osd: reduce blocking on backing fs (Samuel Just) +* osd: refactor recovery using PGBackend (Samuel Just) +* osd: remove old magical tmap->omap conversion +* osd: remove old pg log on upgrade (Samuel Just) +* osd: revert xattr size limit (fixes large rgw uploads) +* osd: use fdatasync(2) instead of fsync(2) to improve performance (Sam Just) +* pybind: fix blacklisting nonce (Loic Dachary) +* radosgw-agent: multi-region replication/DR +* rgw: complete in-progress requests before shutting down +* rgw: default log level is now more reasonable (Yehuda Sadeh) +* rgw: fix S3 auth with response-* query string params (Sylvain Munaut, Yehuda Sadeh) +* rgw: fix a few minor memory leaks (Yehuda Sadeh) +* rgw: fix acl group check (Yehuda Sadeh) +* rgw: fix inefficient use of std::list::size() (Yehuda Sadeh) +* rgw: fix major CPU utilization bug with internal caching (Yehuda Sadeh, Mark Nelson) +* rgw: fix ordering of write operations (preventing data loss on crash) (Yehuda Sadeh) +* rgw: fix ordering of writes for mulitpart upload (Yehuda Sadeh) +* rgw: fix various CORS bugs (Yehuda Sadeh) +* rgw: fix/improve swift COPY support (Yehuda Sadeh) +* rgw: improve help output (Christophe Courtaut) +* rgw: misc fixes to support DR (Josh Durgin, Yehuda Sadeh) +* rgw: per-bucket quota (Yehuda Sadeh) +* rgw: validate S3 tokens against keystone (Roald J. van Loon) +* rgw: wildcard support for keystone roles (Christophe Courtaut) +* rpm: fix junit dependencies (Alan Grosskurth) +* sysvinit radosgw: fix status return code (Danny Al-Gaaf) +* sysvinit rbdmap: fix error 'service rbdmap stop' (Laurent Barbe) +* sysvinit: add condrestart command (Dan van der Ster) +* sysvinit: fix shutdown order (mons last) (Alfredo Deza) + + + v0.71 -----