Read directly into the user's bufferlist instead of copying the buffer
contents.
NOTE: this potentially exposes cached buffers to C++ API users. Document
this!
Signed-off-by: Sage Weil <sage@inktank.com>
This will let us transition much of the read code to move bufferlists
around instead of copying data between buffers.
Signed-off-by: Sage Weil <sage@inktank.com>
Object sizes no longer make sense since we are iterating over the logical
device image space, and the striping may make that unrelated to the size
of the individual objects.
Signed-off-by: Sage Weil <sage@inktank.com>
This replaces most of the existing striping code with use of the Filer
striping helper methods and a more general ceph_file_layout that can
handle more sophisticated striping patterns that the previous uniform
object approach.
This patch is not fully complete; there are a few additional patches that
follow that clean up some of the support functions. However, most of the
IO path is covered here.
Signed-off-by: Sage Weil <sage@inktank.com>
This is intended to replace the Objecter::_sg_read_finish() monstrosity,
and be reused by the librbd striping code.
Signed-off-by: Sage Weil <sage@inktank.com>
This lets us map backwards, if we need to. Arguably the oid and oloc
don't belong here at all. That can come later.
Signed-off-by: Sage Weil <sage@inktank.com>
Ignore any omap keys that don't begin with "snap_". We got away with this
previously because it was (lexiographically) the last key for the object.
Signed-off-by: Sage Weil <sage@inktank.com>
Silently tolerate an -ENOEXEC or -EINVAL (which means striping is not
present or is not supported by the osd class).
Signed-off-by: Sage Weil <sage@inktank.com>
CID 728080 (#1 of 1): Incorrect sizeof expression (BAD_SIZEOF)
Taking the size of pointer parameter "layout" is suspicious.
At (2): Non-static class member field "layout.fl_stripe_unit" is not initialized in this constructor nor in any functions that it calls.
At (4): Non-static class member field "layout.fl_stripe_count" is not initialized in this constructor nor in any functions that it calls.
At (6): Non-static class member field "layout.fl_object_size" is not initialized in this constructor nor in any functions that it calls.
At (8): Non-static class member field "layout.fl_cas_hash" is not initialized in this constructor nor in any functions that it calls.
At (10): Non-static class member field "layout.fl_object_stripe_unit" is not initialized in this constructor nor in any functions that it calls.
At (12): Non-static class member field "layout.fl_unused" is not initialized in this constructor nor in any functions that it calls.
CID 717206 (#1 of 1): Uninitialized scalar field (UNINIT_CTOR)
At (14): Non-static class member field "layout.fl_pg_pool" is not initialized in this constructor nor in any functions that it calls.
Signed-off-by: Sage Weil <sage@inktank.com>
At (2): Non-static class member "readdir_offset" is not initialized in this constructor nor in any functions that it calls.
At (4): Non-static class member "readdir_end" is not initialized in this constructor nor in any functions that it calls.
At (6): Non-static class member "readdir_num" is not initialized in this constructor nor in any functions that it calls.
CID 717207 (#1 of 1): Uninitialized scalar field (UNINIT_CTOR)
At (8): Non-static class member "tid" is not initialized in this constructor nor in any functions that it calls.
Signed-off-by: Sage Weil <sage@inktank.com>
CID 727992 (#1 of 1): Uninitialized scalar field (UNINIT_CTOR)
At (2): Non-static class member "tag_timeout" is not initialized in this constructor nor in any functions that it calls.
Signed-off-by: Sage Weil <sage@inktank.com>
Fixes: #3296
Specifically, is host name string already has ':', then
don't try to append theport (swift auth).
backport: argonaut
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Previously, ceph-disk-* would only let you use a journal that was a
file inside the OSD data directory. With this, you can do:
ceph-disk-prepare /dev/sdb /dev/sdb
to put the journal as a second partition on the same disk as the OSD
data (might save some file system overhead), or, more interestingly:
ceph-disk-prepare /dev/sdb /dev/sdc
which makes it create a new partition on /dev/sdc to use as the
journal. Size of the partition is decided by $osd_journal_size.
/dev/sdc must be a GPT-format disk. Multiple OSDs may share the same
journal disk (using separate partitions); this way, a single fast SSD
can serve as journal for multiple spinning disks.
The second use case currently requires parted, so a Recommends: for
parted has been added to Debian packaging.
Closes: #3078Closes: #3079
Signed-off-by: Tommi Virtanen <tv@inktank.com>
- drop xattr warning; this is not an issue with the leveldb stuff.
- the ext3 vs xattr discussion was somewhat inaccurate. also, no longer
relevant.
Signed-off-by: Sage Weil <sage@inktank.com>