--object-locator locator causes io to use the specified locator. For
objects with non-empty locators, rados pool ls will output the locator
as well.
Signed-off-by: Samuel Just <samuel.just@dreamhost.com>
The device number depends on how many rbd images have been
mapped. Removing it makes the name determined solely by the name,
image, and snapshot that are mapped, for ease of scripting or persistence
across reboots.
Signed-off-by: Josh Durgin <josh.durgin@dreamhost.com>
No need for the old collection_list_partial instance: it's cleaner to
just use an hobject_t as the collection list handle.
Signed-off-by: Samuel Just <samuel.just@dreamhost.com>
Previously, there was no way to recover the locator key used to create
and object. Now, rados_objects_list_next and ObjectIterator will return
the key as well as the object name.
Signed-off-by: Samuel Just <samuel.just@dreamhost.com>
To match the HashIndex ordering, we need to sort hobject_t by the nibble
reversed hash. We store objects in the filestore in a directory tree
with the least significant nibble at the top and the most at the bottom
to facilitate pg splitting in the future.
Signed-off-by: Samuel Just <samuel.just@dreamhost.com>
If data_subset is empty (i.e., the data we pulled is no longer useful),
we should mark complete false and continue rather than fail the
assert in range_end().
Signed-off-by: Samuel Just <samuel.just@dreamhost.com>
This function is passing a reference from PG::active_rep_scrub to
the req_scrub_wq, not eliminating the reference (and the WorkQueue
doesn't grab a new reference itself, either).
The other alternative is to convert the WorkQueue to grab a
reference, but since they can cycle through the WorkQueue more than
once, and need to be ->put() outside the WorkQueue, I don't like
that option.
This should fix#1758.
Also add an assert to PG::_request_scrub_map to check on the other
possible cause of this bug (and fix the indentation).
Signed-off-by: Greg Farnum <gregory.farnum@dreamhost.com>
The conditional before running pip install was unnecessary,
"pip install" on already installed packages is fast (as long
as it's not --upgrade), and --quiet makes it not spam the
console.
Signed-off-by: Tommi Virtanen <tommi.virtanen@dreamhost.com>
Now you can create diagrams easily with the ".. ditaa::"
directive in the Sphinx documents.
admin/build-doc now checks for debs required for building
the documentation, or just lists commands missing for hosts
not using dpkg.
For more on Ditaa, see http://ditaa.sourceforge.net/
Signed-off-by: Tommi Virtanen <tommi.virtanen@dreamhost.com>
If a secret is specified, store and use it, but otherwise
check for a pre-existing secret to use.
Signed-off-by: Josh Durgin <josh.durgin@dreamhost.com>
add_key will return -1 when an error occurs, which should be handled at a higher level and not printed here.
Signed-off-by: Josh Durgin <josh.durgin@dreamhost.com>
Pass in fs_op_seq (last_committed_seq), not the next expected seq, so we
can avoid subtracting and adding 1 in odd places.
Signed-off-by: Sage Weil <sage@newdream.net>
It is perfectly fine to read events that are older than the fs's seq from
the journal; open() will skip them when positioning the read pointer on
open.
Also, this code is nonsensical; it always failed the assertion.
Signed-off-by: Sage Weil <sage@newdream.net>
last_committed_seq is the last seq committed to the fs, not the journal.
Set it when we begin replay with the fs provided value, not from the newest
entry in the journal.
Signed-off-by: Sage Weil <sage@newdream.net>