]> git.proxmox.com Git - ceph.git/blob - ceph/doc/releases/emperor.rst
3c0bcb782d8f2504d08c6e2338e71809d47c1d3e
[ceph.git] / ceph / doc / releases / emperor.rst
1 =======
2 Emperor
3 =======
4
5 Emperor is the 5th stable release of Ceph. It is named after the emperor squid.
6
7
8 v0.72.3 Emperor (pending release)
9 =================================
10
11 Upgrading
12 ---------
13
14 * Monitor 'auth' read-only commands now expect the user to have 'rx' caps.
15 This is the same behavior that was present in dumpling, but in emperor
16 and more recent development releases the 'r' cap was sufficient. Note that
17 this backported security fix will break mon keys that are using the following
18 commands but do not have the 'x' bit in the mon capability::
19
20 ceph auth export
21 ceph auth get
22 ceph auth get-key
23 ceph auth print-key
24 ceph auth list
25
26
27 v0.72.2 Emperor
28 ===============
29
30 This is the second bugfix release for the v0.72.x Emperor series. We
31 have fixed a hang in radosgw, and fixed (again) a problem with monitor
32 CLI compatibility with mixed version monitors. (In the future this
33 will no longer be a problem.)
34
35 Upgrading
36 ---------
37
38 * The JSON schema for the 'osd pool set ...' command changed slightly. Please
39 avoid issuing this particular command via the CLI while there is a mix of
40 v0.72.1 and v0.72.2 monitor daemons running.
41
42 * As part of fix for #6796, 'ceph osd pool set <pool> <var> <arg>' now
43 receives <arg> as an integer instead of a string. This affects how
44 'hashpspool' flag is set/unset: instead of 'true' or 'false', it now
45 must be '0' or '1'.
46
47
48 Changes
49 -------
50
51 * mon: 'osd pool set ...' syntax change
52 * osd: added test for missing on-disk HEAD object
53 * osd: fix osd bench block size argument
54 * rgw: fix hang on large object GET
55 * rgw: fix rare use-after-free
56 * rgw: various DR bug fixes
57 * rgw: do not return error on empty owner when setting ACL
58 * sysvinit, upstart: prevent starting daemons using both init systems
59
60 For more detailed information, see :download:`the complete changelog <../changelog/v0.72.2.txt>`.
61
62 v0.72.1 Emperor
63 ===============
64
65 Important Note
66 --------------
67
68 When you are upgrading from Dumpling to Emperor, do not run any of the
69 "ceph osd pool set" commands while your monitors are running separate versions.
70 Doing so could result in inadvertently changing cluster configuration settings
71 that exhaust compute resources in your OSDs.
72
73 Changes
74 -------
75
76 * osd: fix upgrade bug #6761
77 * ceph_filestore_tool: introduced tool to repair errors caused by #6761
78
79 This release addresses issue #6761. Upgrading to Emperor can cause
80 reads to begin returning ENFILE (too many open files). v0.72.1 fixes
81 that upgrade issue and adds a tool ceph_filestore_tool to repair osd
82 stores affected by this bug.
83
84 To repair a cluster affected by this bug:
85
86 #. Upgrade all osd machines to v0.72.1
87 #. Install the ceph-test package on each osd machine to get ceph_filestore_tool
88 #. Stop all osd processes
89 #. To see all lost objects, run the following on each osd with the osd stopped and
90 the osd data directory mounted::
91
92 ceph_filestore_tool --list-lost-objects=true --filestore-path=<path-to-osd-filestore> --journal-path=<path-to-osd-journal>
93
94 #. To fix all lost objects, run the following on each osd with the
95 osd stopped and the osd data directory mounted::
96
97 ceph_filestore_tool --fix-lost-objects=true --list-lost-objects=true --filestore-path=<path-to-osd-filestore> --journal-path=<path-to-osd-journal>
98
99 #. Once lost objects have been repaired on each osd, you can restart
100 the cluster.
101
102 Note, the ceph_filestore_tool performs a scan of all objects on the
103 osd and may take some time.
104
105
106 v0.72 Emperor
107 =============
108
109 This is the fifth major release of Ceph, the fourth since adopting a
110 3-month development cycle. This release brings several new features,
111 including multi-datacenter replication for the radosgw, improved
112 usability, and lands a lot of incremental performance and internal
113 refactoring work to support upcoming features in Firefly.
114
115 Important Note
116 --------------
117
118 When you are upgrading from Dumpling to Emperor, do not run any of the
119 "ceph osd pool set" commands while your monitors are running separate versions.
120 Doing so could result in inadvertently changing cluster configuration settings
121 that exhaust compute resources in your OSDs.
122
123 Highlights
124 ----------
125
126 * common: improved crc32c performance
127 * librados: new example client and class code
128 * mds: many bug fixes and stability improvements
129 * mon: health warnings when pool pg_num values are not reasonable
130 * mon: per-pool performance stats
131 * osd, librados: new object copy primitives
132 * osd: improved interaction with backend file system to reduce latency
133 * osd: much internal refactoring to support ongoing erasure coding and tiering support
134 * rgw: bucket quotas
135 * rgw: improved CORS support
136 * rgw: performance improvements
137 * rgw: validate S3 tokens against Keystone
138
139 Coincident with core Ceph, the Emperor release also brings:
140
141 * radosgw-agent: support for multi-datacenter replication for disaster recovery
142 * tgt: improved support for iSCSI via upstream tgt
143
144 Packages for both are available on ceph.com.
145
146 Upgrade sequencing
147 ------------------
148
149 There are no specific upgrade restrictions on the order or sequence of
150 upgrading from 0.67.x Dumpling. However, you cannot run any of the
151 "ceph osd pool set" commands while your monitors are running separate versions.
152 Doing so could result in inadvertently changing cluster configuration settings
153 and exhausting compute resources in your OSDs.
154
155 It is also possible to do a rolling upgrade from 0.61.x Cuttlefish,
156 but there are ordering restrictions. (This is the same set of
157 restrictions for Cuttlefish to Dumpling.)
158
159 #. Upgrade ceph-common on all nodes that will use the command line 'ceph' utility.
160 #. Upgrade all monitors (upgrade ceph package, restart ceph-mon
161 daemons). This can happen one daemon or host at a time. Note that
162 because cuttlefish and dumpling monitors can't talk to each other,
163 all monitors should be upgraded in relatively short succession to
164 minimize the risk that an a untimely failure will reduce
165 availability.
166 #. Upgrade all osds (upgrade ceph package, restart ceph-osd daemons).
167 This can happen one daemon or host at a time.
168 #. Upgrade radosgw (upgrade radosgw package, restart radosgw daemons).
169
170
171 Upgrading from v0.71
172 --------------------
173
174 * ceph-fuse and radosgw now use the same default values for the admin
175 socket and log file paths that the other daemons (ceph-osd,
176 ceph-mon, etc.) do. If you run these daemons as non-root, you may
177 need to adjust your ceph.conf to disable these options or to adjust
178 the permissions on /var/run/ceph and /var/log/ceph.
179
180 Upgrading from v0.67 Dumpling
181 -----------------------------
182
183 * ceph-fuse and radosgw now use the same default values for the admin
184 socket and log file paths that the other daemons (ceph-osd,
185 ceph-mon, etc.) do. If you run these daemons as non-root, you may
186 need to adjust your ceph.conf to disable these options or to adjust
187 the permissions on /var/run/ceph and /var/log/ceph.
188
189 * The MDS now disallows snapshots by default as they are not
190 considered stable. The command 'ceph mds set allow_snaps' will
191 enable them.
192
193 * For clusters that were created before v0.44 (pre-argonaut, Spring
194 2012) and store radosgw data, the auto-upgrade from TMAP to OMAP
195 objects has been disabled. Before upgrading, make sure that any
196 buckets created on pre-argonaut releases have been modified (e.g.,
197 by PUTing and then DELETEing an object from each bucket). Any
198 cluster created with argonaut (v0.48) or a later release or not
199 using radosgw never relied on the automatic conversion and is not
200 affected by this change.
201
202 * Any direct users of the 'tmap' portion of the librados API should be
203 aware that the automatic tmap -> omap conversion functionality has
204 been removed.
205
206 * Most output that used K or KB (e.g., for kilobyte) now uses a
207 lower-case k to match the official SI convention. Any scripts that
208 parse output and check for an upper-case K will need to be modified.
209
210 * librados::Rados::pool_create_async() and librados::Rados::pool_delete_async()
211 don't drop a reference to the completion object on error, caller needs to take
212 care of that. This has never really worked correctly and we were leaking an
213 object
214
215 * 'ceph osd crush set <id> <weight> <loc..>' no longer adds the osd to the
216 specified location, as that's a job for 'ceph osd crush add'. It will
217 however continue to work just the same as long as the osd already exists
218 in the crush map.
219
220 * The OSD now enforces that class write methods cannot both mutate an
221 object and return data. The rbd.assign_bid method, the lone
222 offender, has been removed. This breaks compatibility with
223 pre-bobtail librbd clients by preventing them from creating new
224 images.
225
226 * librados now returns on commit instead of ack for synchronous calls.
227 This is a bit safer in the case where both OSDs and the client crash, and
228 is probably how it should have been acting from the beginning. Users are
229 unlikely to notice but it could result in lower performance in some
230 circumstances. Those who care should switch to using the async interfaces,
231 which let you specify safety semantics precisely.
232
233 * The C++ librados AioComplete::get_version() method was incorrectly
234 returning an int (usually 32-bits). To avoid breaking library
235 compatibility, a get_version64() method is added that returns the
236 full-width value. The old method is deprecated and will be removed
237 in a future release. Users of the C++ librados API that make use of
238 the get_version() method should modify their code to avoid getting a
239 value that is truncated from 64 to to 32 bits.
240
241
242 Notable Changes since v0.71
243 ---------------------------
244
245 * build: fix [/usr]/sbin locations (Alan Somers)
246 * ceph-fuse, radosgw: enable admin socket and logging by default
247 * ceph: make -h behave when monitors are down
248 * common: cache crc32c values where possible
249 * common: fix looping on BSD (Alan Somers)
250 * librados, mon: ability to query/ping out-of-quorum monitor status (Joao Luis)
251 * librbd python bindings: fix parent image name limit (Josh Durgin)
252 * mds: avoid leaking objects when deleting truncated files (Yan, Zheng)
253 * mds: fix F_GETLK (Yan, Zheng)
254 * mds: fix many bugs with stray (unlinked) inodes (Yan, Zheng)
255 * mds: fix many directory fragmentation bugs (Yan, Zheng)
256 * mon: allow (un)setting HASHPSPOOL flag on existing pools (Joao Luis)
257 * mon: make 'osd pool rename' idempotent (Joao Luis)
258 * osd: COPY_GET on-wire encoding improvements (Greg Farnum)
259 * osd: bloom_filter encodability, fixes, cleanups (Loic Dachary, Sage Weil)
260 * osd: fix handling of racing read vs write (Samuel Just)
261 * osd: reduce blocking on backing fs (Samuel Just)
262 * radosgw-agent: multi-region replication/DR
263 * rgw: fix/improve swift COPY support (Yehuda Sadeh)
264 * rgw: misc fixes to support DR (Josh Durgin, Yehuda Sadeh)
265 * rgw: per-bucket quota (Yehuda Sadeh)
266 * rpm: fix junit dependencies (Alan Grosskurth)
267
268 Notable Changes since v0.67 Dumpling
269 ------------------------------------
270
271 * build cleanly under clang (Christophe Courtaut)
272 * build: Makefile refactor (Roald J. van Loon)
273 * build: fix [/usr]/sbin locations (Alan Somers)
274 * ceph-disk: fix journal preallocation
275 * ceph-fuse, radosgw: enable admin socket and logging by default
276 * ceph-fuse: fix problem with readahead vs truncate race (Yan, Zheng)
277 * ceph-fuse: trim deleted inodes from cache (Yan, Zheng)
278 * ceph-fuse: use newer fuse api (Jianpeng Ma)
279 * ceph-kvstore-tool: new tool for working with leveldb (copy, crc) (Joao Luis)
280 * ceph-post-file: new command to easily share logs or other files with ceph devs
281 * ceph: improve parsing of CEPH_ARGS (Benoit Knecht)
282 * ceph: make -h behave when monitors are down
283 * ceph: parse CEPH_ARGS env variable
284 * common: bloom_filter improvements, cleanups
285 * common: cache crc32c values where possible
286 * common: correct SI is kB not KB (Dan Mick)
287 * common: fix looping on BSD (Alan Somers)
288 * common: migrate SharedPtrRegistry to use boost::shared_ptr<> (Loic Dachary)
289 * common: misc portability fixes (Noah Watkins)
290 * crc32c: fix optimized crc32c code (it now detects arch support properly)
291 * crc32c: improved intel-optimized crc32c support (~8x faster on my laptop!)
292 * crush: fix name caching
293 * doc: erasure coding design notes (Loic Dachary)
294 * hadoop: removed old version of shim to avoid confusing users (Noah Watkins)
295 * librados, mon: ability to query/ping out-of-quorum monitor status (Joao Luis)
296 * librados: fix async aio completion wakeup
297 * librados: fix installed header #includes (Dan Mick)
298 * librados: get_version64() method for C++ API
299 * librados: hello_world example (Greg Farnum)
300 * librados: sync calls now return on commit (instead of ack) (Greg Farnum)
301 * librbd python bindings: fix parent image name limit (Josh Durgin)
302 * librbd, ceph-fuse: avoid some sources of ceph-fuse, rbd cache stalls
303 * mds: avoid leaking objects when deleting truncated files (Yan, Zheng)
304 * mds: fix F_GETLK (Yan, Zheng)
305 * mds: fix LOOKUPSNAP bug
306 * mds: fix heap profiler commands (Joao Luis)
307 * mds: fix locking deadlock (David Disseldorp)
308 * mds: fix many bugs with stray (unlinked) inodes (Yan, Zheng)
309 * mds: fix many directory fragmentation bugs (Yan, Zheng)
310 * mds: fix mds rejoin with legacy parent backpointer xattrs (Alexandre Oliva)
311 * mds: fix rare restart/failure race during fs creation
312 * mds: fix standby-replay when we fall behind (Yan, Zheng)
313 * mds: fix stray directory purging (Yan, Zheng)
314 * mds: notify clients about deleted files (so they can release from their cache) (Yan, Zheng)
315 * mds: several bug fixes with clustered mds (Yan, Zheng)
316 * mon, osd: improve osdmap trimming logic (Samuel Just)
317 * mon, osd: initial CLI for configuring tiering
318 * mon: a few 'ceph mon add' races fixed (command is now idempotent) (Joao Luis)
319 * mon: allow (un)setting HASHPSPOOL flag on existing pools (Joao Luis)
320 * mon: allow cap strings with . to be unquoted
321 * mon: allow logging level of cluster log (/var/log/ceph/ceph.log) to be adjusted
322 * mon: avoid rewriting full osdmaps on restart (Joao Luis)
323 * mon: continue to discover peer addr info during election phase
324 * mon: disallow CephFS snapshots until 'ceph mds set allow_new_snaps' (Greg Farnum)
325 * mon: do not expose uncommitted state from 'osd crush {add,set} ...' (Joao Luis)
326 * mon: fix 'ceph osd crush reweight ...' (Joao Luis)
327 * mon: fix 'osd crush move ...' command for buckets (Joao Luis)
328 * mon: fix byte counts (off by factor of 4) (Dan Mick, Joao Luis)
329 * mon: fix paxos corner case
330 * mon: kv properties for pools to support EC (Loic Dachary)
331 * mon: make 'osd pool rename' idempotent (Joao Luis)
332 * mon: modify 'auth add' semantics to make a bit more sense (Joao Luis)
333 * mon: new 'osd perf' command to dump recent performance information (Samuel Just)
334 * mon: new and improved 'ceph -s' or 'ceph status' command (more info, easier to read)
335 * mon: some auth check cleanups (Joao Luis)
336 * mon: track per-pool stats (Joao Luis)
337 * mon: warn about pools with bad pg_num
338 * mon: warn when mon data stores grow very large (Joao Luis)
339 * monc: fix small memory leak
340 * new wireshark patches pulled into the tree (Kevin Jones)
341 * objecter, librados: redirect requests based on cache tier config
342 * objecter: fix possible hang when cluster is unpaused (Josh Durgin)
343 * osd, librados: add new COPY_FROM rados operation
344 * osd, librados: add new COPY_GET rados operations (used by COPY_FROM)
345 * osd: 'osd recover clone overlap limit' option to limit cloning during recovery (Samuel Just)
346 * osd: COPY_GET on-wire encoding improvements (Greg Farnum)
347 * osd: add 'osd heartbeat min healthy ratio' configurable (was hard-coded at 33%)
348 * osd: add option to disable pg log debug code (which burns CPU)
349 * osd: allow cap strings with . to be unquoted
350 * osd: automatically detect proper xattr limits (David Zafman)
351 * osd: avoid extra copy in erasure coding reference implementation (Loic Dachary)
352 * osd: basic cache pool redirects (Greg Farnum)
353 * osd: basic whiteout, dirty flag support (not yet used)
354 * osd: bloom_filter encodability, fixes, cleanups (Loic Dachary, Sage Weil)
355 * osd: clean up and generalize copy-from code (Greg Farnum)
356 * osd: cls_hello OSD class example
357 * osd: erasure coding doc updates (Loic Dachary)
358 * osd: erasure coding plugin infrastructure, tests (Loic Dachary)
359 * osd: experiemental support for ZFS (zfsonlinux.org) (Yan, Zheng)
360 * osd: fix RWORDER flags
361 * osd: fix exponential backoff of slow request warnings (Loic Dachary)
362 * osd: fix handling of racing read vs write (Samuel Just)
363 * osd: fix version value returned by various operations (Greg Farnum)
364 * osd: generalized temp object infrastructure
365 * osd: ghobject_t infrastructure for EC (David Zafman)
366 * osd: improvements for compatset support and storage (David Zafman)
367 * osd: infrastructure to copy objects from other OSDs
368 * osd: instrument peering states (David Zafman)
369 * osd: misc copy-from improvements
370 * osd: opportunistic crc checking on stored data (off by default)
371 * osd: properly enforce RD/WR flags for rados classes
372 * osd: reduce blocking on backing fs (Samuel Just)
373 * osd: refactor recovery using PGBackend (Samuel Just)
374 * osd: remove old magical tmap->omap conversion
375 * osd: remove old pg log on upgrade (Samuel Just)
376 * osd: revert xattr size limit (fixes large rgw uploads)
377 * osd: use fdatasync(2) instead of fsync(2) to improve performance (Sam Just)
378 * pybind: fix blacklisting nonce (Loic Dachary)
379 * radosgw-agent: multi-region replication/DR
380 * rgw: complete in-progress requests before shutting down
381 * rgw: default log level is now more reasonable (Yehuda Sadeh)
382 * rgw: fix S3 auth with response-* query string params (Sylvain Munaut, Yehuda Sadeh)
383 * rgw: fix a few minor memory leaks (Yehuda Sadeh)
384 * rgw: fix acl group check (Yehuda Sadeh)
385 * rgw: fix inefficient use of std::list::size() (Yehuda Sadeh)
386 * rgw: fix major CPU utilization bug with internal caching (Yehuda Sadeh, Mark Nelson)
387 * rgw: fix ordering of write operations (preventing data loss on crash) (Yehuda Sadeh)
388 * rgw: fix ordering of writes for mulitpart upload (Yehuda Sadeh)
389 * rgw: fix various CORS bugs (Yehuda Sadeh)
390 * rgw: fix/improve swift COPY support (Yehuda Sadeh)
391 * rgw: improve help output (Christophe Courtaut)
392 * rgw: misc fixes to support DR (Josh Durgin, Yehuda Sadeh)
393 * rgw: per-bucket quota (Yehuda Sadeh)
394 * rgw: validate S3 tokens against keystone (Roald J. van Loon)
395 * rgw: wildcard support for keystone roles (Christophe Courtaut)
396 * rpm: fix junit dependencies (Alan Grosskurth)
397 * sysvinit radosgw: fix status return code (Danny Al-Gaaf)
398 * sysvinit rbdmap: fix error 'service rbdmap stop' (Laurent Barbe)
399 * sysvinit: add condrestart command (Dan van der Ster)
400 * sysvinit: fix shutdown order (mons last) (Alfredo Deza)
401
402
403
404 v0.71
405 =====
406
407 This development release includes a significant amount of new code and
408 refactoring, as well as a lot of preliminary functionality that will be needed
409 for erasure coding and tiering support. There are also several significant
410 patch sets improving this with the MDS.
411
412 Upgrading
413 ---------
414
415 * The MDS now disallows snapshots by default as they are not
416 considered stable. The command 'ceph mds set allow_snaps' will
417 enable them.
418
419 * For clusters that were created before v0.44 (pre-argonaut, Spring
420 2012) and store radosgw data, the auto-upgrade from TMAP to OMAP
421 objects has been disabled. Before upgrading, make sure that any
422 buckets created on pre-argonaut releases have been modified (e.g.,
423 by PUTing and then DELETEing an object from each bucket). Any
424 cluster created with argonaut (v0.48) or a later release or not
425 using radosgw never relied on the automatic conversion and is not
426 affected by this change.
427
428 * Any direct users of the 'tmap' portion of the librados API should be
429 aware that the automatic tmap -> omap conversion functionality has
430 been removed.
431
432 * Most output that used K or KB (e.g., for kilobyte) now uses a
433 lower-case k to match the official SI convention. Any scripts that
434 parse output and check for an upper-case K will need to be modified.
435
436 Notable Changes
437 ---------------
438
439 * build: Makefile refactor (Roald J. van Loon)
440 * ceph-disk: fix journal preallocation
441 * ceph-fuse: trim deleted inodes from cache (Yan, Zheng)
442 * ceph-fuse: use newer fuse api (Jianpeng Ma)
443 * ceph-kvstore-tool: new tool for working with leveldb (copy, crc) (Joao Luis)
444 * common: bloom_filter improvements, cleanups
445 * common: correct SI is kB not KB (Dan Mick)
446 * common: misc portability fixes (Noah Watkins)
447 * hadoop: removed old version of shim to avoid confusing users (Noah Watkins)
448 * librados: fix installed header #includes (Dan Mick)
449 * librbd, ceph-fuse: avoid some sources of ceph-fuse, rbd cache stalls
450 * mds: fix LOOKUPSNAP bug
451 * mds: fix standby-replay when we fall behind (Yan, Zheng)
452 * mds: fix stray directory purging (Yan, Zheng)
453 * mon: disallow CephFS snapshots until 'ceph mds set allow_new_snaps' (Greg Farnum)
454 * mon, osd: improve osdmap trimming logic (Samuel Just)
455 * mon: kv properties for pools to support EC (Loic Dachary)
456 * mon: some auth check cleanups (Joao Luis)
457 * mon: track per-pool stats (Joao Luis)
458 * mon: warn about pools with bad pg_num
459 * osd: automatically detect proper xattr limits (David Zafman)
460 * osd: avoid extra copy in erasure coding reference implementation (Loic Dachary)
461 * osd: basic cache pool redirects (Greg Farnum)
462 * osd: basic whiteout, dirty flag support (not yet used)
463 * osd: clean up and generalize copy-from code (Greg Farnum)
464 * osd: erasure coding doc updates (Loic Dachary)
465 * osd: erasure coding plugin infrastructure, tests (Loic Dachary)
466 * osd: fix RWORDER flags
467 * osd: fix exponential backoff of slow request warnings (Loic Dachary)
468 * osd: generalized temp object infrastructure
469 * osd: ghobject_t infrastructure for EC (David Zafman)
470 * osd: improvements for compatset support and storage (David Zafman)
471 * osd: misc copy-from improvements
472 * osd: opportunistic crc checking on stored data (off by default)
473 * osd: refactor recovery using PGBackend (Samuel Just)
474 * osd: remove old magical tmap->omap conversion
475 * pybind: fix blacklisting nonce (Loic Dachary)
476 * rgw: default log level is now more reasonable (Yehuda Sadeh)
477 * rgw: fix acl group check (Yehuda Sadeh)
478 * sysvinit: fix shutdown order (mons last) (Alfredo Deza)
479
480 v0.70
481 =====
482
483 Upgrading
484 ---------
485
486 * librados::Rados::pool_create_async() and librados::Rados::pool_delete_async()
487 don't drop a reference to the completion object on error, caller needs to take
488 care of that. This has never really worked correctly and we were leaking an
489 object
490
491 * 'ceph osd crush set <id> <weight> <loc..>' no longer adds the osd to the
492 specified location, as that's a job for 'ceph osd crush add'. It will
493 however continue to work just the same as long as the osd already exists
494 in the crush map.
495
496 Notable Changes
497 ---------------
498
499 * mon: a few 'ceph mon add' races fixed (command is now idempotent) (Joao Luis)
500 * crush: fix name caching
501 * rgw: fix a few minor memory leaks (Yehuda Sadeh)
502 * ceph: improve parsing of CEPH_ARGS (Benoit Knecht)
503 * mon: avoid rewriting full osdmaps on restart (Joao Luis)
504 * crc32c: fix optimized crc32c code (it now detects arch support properly)
505 * mon: fix 'ceph osd crush reweight ...' (Joao Luis)
506 * osd: revert xattr size limit (fixes large rgw uploads)
507 * mds: fix heap profiler commands (Joao Luis)
508 * rgw: fix inefficient use of std::list::size() (Yehuda Sadeh)
509
510
511 v0.69
512 =====
513
514 Upgrading
515 ---------
516
517 * The sysvinit /etc/init.d/ceph script will, by default, update the
518 CRUSH location of an OSD when it starts. Previously, if the
519 monitors were not available, this command would hang indefinitely.
520 Now, that step will time out after 10 seconds and the ceph-osd daemon
521 will not be started.
522
523 * Users of the librados C++ API should replace users of get_version()
524 with get_version64() as the old method only returns a 32-bit value
525 for a 64-bit field. The existing 32-bit get_version() method is now
526 deprecated.
527
528 * The OSDs are now more picky that request payload match their
529 declared size. A write operation across N bytes that includes M
530 bytes of data will now be rejected. No known clients do this, but
531 the because the server-side behavior has changed it is possible that
532 an application misusing the interface may now get errors.
533
534 * The OSD now enforces that class write methods cannot both mutate an
535 object and return data. The rbd.assign_bid method, the lone
536 offender, has been removed. This breaks compatibility with
537 pre-bobtail librbd clients by preventing them from creating new
538 images.
539
540 * librados now returns on commit instead of ack for synchronous calls.
541 This is a bit safer in the case where both OSDs and the client crash, and
542 is probably how it should have been acting from the beginning. Users are
543 unlikely to notice but it could result in lower performance in some
544 circumstances. Those who care should switch to using the async interfaces,
545 which let you specify safety semantics precisely.
546
547 * The C++ librados AioComplete::get_version() method was incorrectly
548 returning an int (usually 32-bits). To avoid breaking library
549 compatibility, a get_version64() method is added that returns the
550 full-width value. The old method is deprecated and will be removed
551 in a future release. Users of the C++ librados API that make use of
552 the get_version() method should modify their code to avoid getting a
553 value that is truncated from 64 to to 32 bits.
554
555
556 Notable Changes
557 ---------------
558
559 * build cleanly under clang (Christophe Courtaut)
560 * common: migrate SharedPtrRegistry to use boost::shared_ptr<> (Loic Dachary)
561 * doc: erasure coding design notes (Loic Dachary)
562 * improved intel-optimized crc32c support (~8x faster on my laptop!)
563 * librados: get_version64() method for C++ API
564 * mds: fix locking deadlock (David Disseldorp)
565 * mon, osd: initial CLI for configuring tiering
566 * mon: allow cap strings with . to be unquoted
567 * mon: continue to discover peer addr info during election phase
568 * mon: fix 'osd crush move ...' command for buckets (Joao Luis)
569 * mon: warn when mon data stores grow very large (Joao Luis)
570 * objecter, librados: redirect requests based on cache tier config
571 * osd, librados: add new COPY_FROM rados operation
572 * osd, librados: add new COPY_GET rados operations (used by COPY_FROM)
573 * osd: add 'osd heartbeat min healthy ratio' configurable (was hard-coded at 33%)
574 * osd: add option to disable pg log debug code (which burns CPU)
575 * osd: allow cap strings with . to be unquoted
576 * osd: fix version value returned by various operations (Greg Farnum)
577 * osd: infrastructure to copy objects from other OSDs
578 * osd: use fdatasync(2) instead of fsync(2) to improve performance (Sam Just)
579 * rgw: fix major CPU utilization bug with internal caching (Yehuda Sadeh, Mark Nelson)
580 * rgw: fix ordering of write operations (preventing data loss on crash) (Yehuda Sadeh)
581 * rgw: fix ordering of writes for mulitpart upload (Yehuda Sadeh)
582 * rgw: fix various CORS bugs (Yehuda Sadeh)
583 * rgw: improve help output (Christophe Courtaut)
584 * rgw: validate S3 tokens against keystone (Roald J. van Loon)
585 * rgw: wildcard support for keystone roles (Christophe Courtaut)
586 * sysvinit radosgw: fix status return code (Danny Al-Gaaf)
587 * sysvinit rbdmap: fix error 'service rbdmap stop' (Laurent Barbe)
588
589 v0.68
590 =====
591
592 Upgrading
593 ---------
594
595 * 'ceph osd crush set <id> <weight> <loc..>' no longer adds the osd to the
596 specified location, as that's a job for 'ceph osd crush add'. It will
597 however continue to work just the same as long as the osd already exists
598 in the crush map.
599
600 * The OSD now enforces that class write methods cannot both mutate an
601 object and return data. The rbd.assign_bid method, the lone
602 offender, has been removed. This breaks compatibility with
603 pre-bobtail librbd clients by preventing them from creating new
604 images.
605
606 * librados now returns on commit instead of ack for synchronous calls.
607 This is a bit safer in the case where both OSDs and the client crash, and
608 is probably how it should have been acting from the beginning. Users are
609 unlikely to notice but it could result in lower performance in some
610 circumstances. Those who care should switch to using the async interfaces,
611 which let you specify safety semantics precisely.
612
613 * The C++ librados AioComplete::get_version() method was incorrectly
614 returning an int (usually 32-bits). To avoid breaking library
615 compatibility, a get_version64() method is added that returns the
616 full-width value. The old method is deprecated and will be removed
617 in a future release. Users of the C++ librados API that make use of
618 the get_version() method should modify their code to avoid getting a
619 value that is truncated from 64 to to 32 bits.
620
621
622
623 Notable Changes
624 ---------------
625
626 * ceph-fuse: fix problem with readahead vs truncate race (Yan, Zheng)
627 * ceph-post-file: new command to easily share logs or other files with ceph devs
628 * ceph: parse CEPH_ARGS env variable
629 * librados: fix async aio completion wakeup
630 * librados: hello_world example (Greg Farnum)
631 * librados: sync calls now return on commit (instead of ack) (Greg Farnum)
632 * mds: fix mds rejoin with legacy parent backpointer xattrs (Alexandre Oliva)
633 * mds: fix rare restart/failure race during fs creation
634 * mds: notify clients about deleted files (so they can release from their cache) (Yan, Zheng)
635 * mds: several bug fixes with clustered mds (Yan, Zheng)
636 * mon: allow logging level of cluster log (/var/log/ceph/ceph.log) to be adjusted
637 * mon: do not expose uncommitted state from 'osd crush {add,set} ...' (Joao Luis)
638 * mon: fix byte counts (off by factor of 4) (Dan Mick, Joao Luis)
639 * mon: fix paxos corner case
640 * mon: modify 'auth add' semantics to make a bit more sense (Joao Luis)
641 * mon: new 'osd perf' command to dump recent performance information (Samuel Just)
642 * mon: new and improved 'ceph -s' or 'ceph status' command (more info, easier to read)
643 * monc: fix small memory leak
644 * new wireshark patches pulled into the tree (Kevin Jones)
645 * objecter: fix possible hang when cluster is unpaused (Josh Durgin)
646 * osd: 'osd recover clone overlap limit' option to limit cloning during recovery (Samuel Just)
647 * osd: cls_hello OSD class example
648 * osd: experiemental support for ZFS (zfsonlinux.org) (Yan, Zheng)
649 * osd: instrument peering states (David Zafman)
650 * osd: properly enforce RD/WR flags for rados classes
651 * osd: remove old pg log on upgrade (Samuel Just)
652 * rgw: complete in-progress requests before shutting down
653 * rgw: fix S3 auth with response-* query string params (Sylvain Munaut, Yehuda Sadeh)
654 * sysvinit: add condrestart command (Dan van der Ster)