src/: Add namespace and pool fields to hobject_t

From this point, hobjects in the ObjectStore will be globally unique.  This
will allow us to avoid including the collection in the ObjectMap key encoding
and thereby enable efficient collection renames and, eventually, collection
splits.

Signed-off-by: Samuel Just <sam.just@inktank.com>
test/ObjectMap: Copy current DBObjectMap implementation

This implementation will be used to test the upgrade process.

Signed-off-by: Samuel Just <sam.just@dreamhost.com>
os/: update CollectionIndex filename encodings

filename encodings now include namespace and pool.

Signed-off-by: Samuel Just <sam.just@inktank.com>
DBObjectMap: add parse method for old encoding

Signed-off-by: Samuel Just <sam.just@inktank.com>
DBObjectMap: version bump for new format

Signed-off-by: Samuel Just <sam.just@inktank.com>
FileStore,DBObjectMap: remove ObjectMap link method

hobject_t's are now globally unique in filestore.  Essentially, there is
a 1-to-1 mapping from inodes to hobject_t's.  The entry in the
DBObjectMap is now tied to the inode/hobject_t.  Thus, links needn't be
tracked.  Rather, we delete the ObjectMap entry when nlink == 0.

Signed-off-by: Samuel Just <sam.just@inktank.com>
DBObjectMap: restructure for unique hobject_t's

Previously, the ObjectStore operated in terms of (coll_t,hobject_t)
tupples.  Now that hobject_t's are globally unique within the
ObjectStore, it is no longer necessary to support multiple names for the
same DBObjectMap node.

Signed-off-by: Samuel Just <sam.just@dreamhost.com>
DBObjectMap: Implement upgrade from previous format

Also includes tests in test_object_map.cc

Signed-off-by: Samuel Just <sam.just@dreamhost.com>
DBObjectMap: update check() for new format

Signed-off-by: Samuel Just <sam.just@dreamhost.com>
DBObjectMap::init: initialize seq and v to correct values

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: remove_object_with_snap_hardlinks before creating temp obj

hobject_ts must be unique in the filestore.  Thus, when we create the
new temp object, the old one must have been deleted already.

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: adjust missing at push_start

When we start recieving an object, we remove the old copy.  This will
prevent the primary from using that old copy after that point.
We do the same on the pushee.

Signed-off-by: Samuel Just <sam.just@inktank.com>
OSD: exit(0) once filestore is converted

Also, do not upgrade filestore automatically

Signed-off-by: Samuel Just <sam.just@dreamhost.com>
FileStore: skip omap during list_collections

Signed-off-by: Samuel Just <sam.just@dreamhost.com>
DBObjectMap: update header comments for new structure

Signed-off-by: Samuel Just <sam.just@inktank.com>
DBObjectMap,FileStore: Remove IndexedPath parameters from ObjectMap

IndexedPath parameters are no longer needed for getting the object
collections or for supporting the TMAP implementation.

Signed-off-by: Samuel Just <sam.just@inktank.com>
OSD,FileStore: clean up filestore convsersion

Previously, we messed with the filestore_update_collections config
option to enable upgrades in the filestore.  We now pass that in as a
parameter to the FileStore,IndexManager constructors.

Further, the user must now specify the version to which to update in
order to prevent accidental updates.

Signed-off-by: Samuel Just <sam.just@inktank.com>
test_object_map: remove DBObjectMapv0

Signed-off-by: Samuel Just <sam.just@inktank.com>
osd_types,PG: handle new hobject format in object_info,pg_log

There are also legacy hobject encodings in the pg log and in object_info
attributes on objects.

Signed-off-by: Samuel Just <sam.just@inktank.com>
test_filestore_idempotent_sequence: add omap

Signed-off-by: Samuel Just <sam.just@inktank.com>