osd: add PGMETA ondisk feature

Once you start using the pgmeta objects there is no going back.

Signed-off-by: Sage Weil <sage@redhat.com>
common/hobject_t: add pgmeta named ctor and is_pgmeta() check

There will be exactly one of these per PG.  It slots into the flat

  (pool, hash, name...)

namespace but is not a legal rados name (since it is the empty string).

Signed-off-by: Sage Weil <sage@redhat.com>
osd/PGBackend: skip pgmeta objects

Signed-off-by: Sage Weil <sage@redhat.com>
ceph-objectstore-tool: skip pgmeta object on export

We will (eventually) export the contents of this object explicitly as
PG metadata.

Signed-off-by: Sage Weil <sage@redhat.com>
osd/PG: define pgmeta_oid member

Signed-off-by: Sage Weil <sage@redhat.com>
osd: don't need to pass object names via ctor

Calculate biginfo on the fly.

Signed-off-by: Sage Weil <sage@redhat.com>
osd: move PG collection creation into static PG method

Signed-off-by: Sage Weil <sage@redhat.com>
osd/PGLog: take ghobject_t instead of hobject_t

Signed-off-by: Sage Weil <sage@redhat.com>
osd/PGLog: explicitly pass log_oid collection

Do not assume the log_oid is ine the 'meta' collection.

Signed-off-by: Sage Weil <sage@redhat.com>
osd: move pg log and info to a per-pg object

Move all PG metadata (info, biginfo, epoch, and log) to a single per-PG
object.  This should make it easier for ObjectStore implementations to
avoid lock contention in the write path.

Signed-off-by: Sage Weil <sage@redhat.com>