# v0.46 04/22/2012 * Feature #1044: librbd: discard support * Feature #1451: librbd: instrument via perfcounter * Feature #1692: librbd: Support TRIM (hole punching) (userspace client) * Feature #1889: log: structure log records * Feature #1890: log: async log writeout * Feature #2052: librbd: caching * Feature #2113: objectcacher perfcounters * Bug #2161: nonlinear scaling for PGMap::pg_stat encode * Feature #2163: qa: full xfstests on rbd * Feature #2223: Tracing facility on FileStore * Feature #2226: osd: better filestore idempotency test * Subtask #2235: generate deterministic sequence of transactions (5) * Subtask #2236: filestore failure injection (3) * Subtask #2237: failure+replay tester (8) * Feature #2240: osd: new default locations * Feature #2245: rgw long run ceph install * Feature #2246: force10s on sepia * Feature #2248: cluster naming * Subtask #2249: teuthology task (3) * Feature #2250: rgw long run raid config * Feature #2251: rgw long run workloads * Feature #2252: rgw long run kernels * Bug #2255: osd: fix object name collisions between pools in temp collection * Bug #2262: qa: osd-recovery tasks fails on flush_pg_stats * Feature #2265: make sure objecter/kclient error out when localized pgs don't exist * Bug #2266: teuthology: nuke after failure is failing * Bug #2278: librados: python read has arguments swapped * Feature #2296: librbd: allow resizing to arbitrary sizes * Bug #2301: librados: LibRadosMisc.AioOperatePP failure * Bug #2304: rbd import fails on block device * Bug #2310: osd: too many open files * Bug #2311: rbd: delete + create image led to EEXIST * Bug #2324: osd: assert("q.empty()") failed in OpSequencer destructor * Bug #2328: osd: mapext/fiemap doesn't work for small extents