From the manual of syncfs, it first appeared in Linux 2.6.39. At this
point, btrfs didn't as a stable production. So remove this.
Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
In commit 808c644248, it will try sync() if syncfs() return error.
No evidence prove this way can work. And sync() don't return result
so make this function always return zero which cause filestore omit the
error.
Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
This feature determine whether we use tbl encode for transaction of use
the new map layout.
The primary uses peer_features to determine whether transaction should
use tbl, while the replica just follow the primary.
Change-Id: I92ca6e5b59bd1acde6007ad0dffc085be17accab
Signed-off-by: Dong Yuan <yuandong1222@gmail.com>
When tbl is used (for compatibility), the Transaction::begin method need
to build all fields used by iterator. That includes: coll_index,
object_index, data_bl, op_bl, etc.)
Change-Id: I48ea74fec8d052f50da254a726a9c0dffead19bc
Signed-off-by: Dong Yuan <yuandong1222@gmail.com>
Finish append and swap for new Transaction encode/decode layout.
Since append will modify the op_bl now, we changed the order of append
and swap in ReplicatedBackend::sub_op_modify and
ReplicatedBackend::submit_transaction to avoid append call on op_t, so
the op_t can be encode in message.
Change-Id: I6fb421e0defdb092fb9732eef818e90291b039f5
Signed-off-by: Dong Yuan <yuandong1222@gmail.com>
This patch add new Transaction::iterator interface according to new
encode/decode layout. The new iterator give the whole Op struct in a
single decode_op method.
All ObjectStore Impl (FileStore/MemStore/KeyValueStore) is also changed
to use the new interface.
Change-Id: I1900a6ec302890df2c4357b071e4966c26d7f037
Signed-off-by: Dong Yuan <yuandong1222@gmail.com>
When use_tbl is true, Transaction::encode will give the same result as
before, while when use_tbl is false, Transaction::encode will use new
field and logic to encode and all related methods such as
get_encoded_bytes, get_data_offset will do the same.
Change-Id: Ia5864e489d47f37cf496fe3fb825b21977d2d938
Signed-off-by: Dong Yuan <yuandong1222@gmail.com>
This patch add a new fixed size struct Transaction::Op to represent
all actions.
All coll and ghobject used by the transaction are keeped in two maps:
coll: map<coll_t, __le32> coll_index;
object: map<ghobject_t, __le32> object_index;
And the Op struct use the map value(__le32) to refer coll and object,
so each coll and object is only need to encode once in the transaction.
Other variable-size fields(key/value/data) is encoded in bufferlist
data_bl.
Change-Id: I52b2fcd3217a6cb35de7b309a6dd74a99478feb2
Signed-off-by: Dong Yuan <yuandong1222@gmail.com>
TransactionData wrap the following fields:
__le64 ops;
__le32 largest_data_len;
__le32 largest_data_off;
__le32 largest_data_off_in_tbl;
__le32 pad; //make TransactionData multiple of uint64_t
This struct can encode/decode just by a single memcpy instead of many
encode/decode operations.
Change-Id: I56df78def43bd2b80b77be0825756e133434a6e6
Signed-off-by: Dong Yuan <yuandong1222@gmail.com>
We don't need sobject and pool_override anymore since we don't need to
support anything older than dumpling.
Change-Id: I22c01d4b5c6bf99765bf6bc13aecadc997d6750c
Signed-off-by: Dong Yuan <yuandong1222@gmail.com>
Some tests were racing against the monitor. On a fast machine it worked
but slower machines (or sometime when running in parallel), the monitor
is lagging behind. Use wait_for_clean to make sure the monitor is in the
desired state for the test to succeed.
http://tracker.ceph.com/issues/10384Fixes: #10384
Signed-off-by: Loic Dachary <ldachary@redhat.com>
The tiobench software has been abandoned upstream for years. Fedora and
Debian are no longer shipping the tiobench package, so we've had to
carry the package ourselves in the Ceph project, and we're trying to
slim down our dependencies where it makes sense to do so.
Nuke the tiobench suite.
http://tracker.ceph.com/issues/10152 Refs: #10152
Signed-off-by: Ken Dreyer <kdreyer@redhat.com>
If there is error, _release_fh() already outputs error message.
No need to print extra error message
Fixes: #10412
Signed-off-by: Yan, Zheng <zyan@redhat.com>
Add the two new message type and change the corresponding code flow as well.
Basically the idea to have MOSDRepOp is to seperate subop(read/write)
out of other subop(pull/push,etc), so that we can cleanup some unused fields in
the message type, then save some encoding/decoding overhead.
The backward compatibility is also remian, if talking with old version OSD who
doesn't support osd_client_subop/subopreply, will fall back to osd_subop/subopreply.
Sage: rename MOSDClientSubOp -> MOSDRepOp
Signed-off-by: Xiaoxi Chen <xiaoxi.chen@intel.com>
Signed-off-by: Sage Weil <sage@redhat.com>
Prior to this commit, when ./configure can't find libkeyutils, it would
bail out with a terse error message.
Some of the other library checks helpfully print the DEB and RPM package
names in parentheses. Add the DEB and RPM package names to the
libkeyutils check.
Reported-by: Pankaj Garg <Pankaj.Garg@caviumnetworks.com>
Signed-off-by: Ken Dreyer <kdreyer@redhat.com>
case.
For root user, it meet those error:
test/bufferlist.cc:1880: Failure
Value of: bl.read_file("testfile", &error)
Actual: 0
Expected: -13
test/bufferlist.cc:1884: Failure
Value of: bl.length()
Actual: 8
Expected: (unsigned)4
Which is: 4
test/bufferlist.cc:1886: Failure
Value of: actual
Actual: "ABC
ABC
"
Expected: "ABC\n"
Which is: "ABC
Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>