If we want to discard a range of an object, we will zero(use fallocate
to punch a hole) the range now. In general this introduce some overhead(extra writes).
If the filesystem ontop of RBD holding lots of small files, this
behavior will bring big performance penalty.
Adding a flag that allow user to control if they want to zero the
range.
Signed-off-by: Xiaoxi Chen <xiaoxi.chen@intel.com>
Remove code duplication by generalizing ceph_argparse_with{int,float,longlong}
routines - make one template function for those cases.
Signed-off-by: Dmitry Yatsushkevich <dyatsushkevich@mirantis.com>
Remove erroneous arg for ceph_argparse_witharg call when '--io-pattern' parsed:
the name look up will point the compiler to bool ceph_argparse_witharg(
std::vector<const char*> &args,
std::vector<const char*>::iterator &i, std::string *ret, ...) when compiler
is resolving this function call. The &err argument will be wrongly interpreted
as a char * variable to be compared with the argument name pointed by i.
Signed-off-by: Dmitry Yatsushkevich <dyatsushkevich@mirantis.com>
The librbd unit tests currently only test the old image format. Ensure
the new format and its possible features are also tested.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
FileJournal needs stuff from blkdev.c in libcommon.
./.libs/libosd.a(libos_la-FileJournal.o): In function `FileJournal::_open_block_device()':
/home/nwatkins/src/ceph/src/os/FileJournal.cc:139: undefined reference to `get_block_device_size(int, long*)'
/home/nwatkins/src/ceph/src/os/FileJournal.cc:161: undefined reference to `block_device_support_discard(char const*)'
./.libs/libosd.a(libos_la-FileJournal.o): In function `FileJournal::do_discard(long, long)':
/home/nwatkins/src/ceph/src/os/FileJournal.cc:1587: undefined reference to `block_device_discard(int, long, long)'
Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
Add some performance critial configurations
Also group and polish the description of each configuration
to make it more clear, changed the default from 0 to actual
value.
Signed-off-by: Xiaoxi Chen <xiaoxi.chen@intel.com>
We don't want to spit out the warning twice, and we don't have cct
anyway.
Also test_init is annoying; we should try to kill it.
Signed-off-by: Sage Weil <sage@redhat.com>
osd: coalesce into single omap_setkeys for normal writes
Tested-by: Andreas Bluemle <andreas.bluemle@itxperts.de>
Reviewed-by: David Zafman <dzafman@redhat.com>
When MDS is no longer laggy, it should process deferred messages
first, then process newly received messages.
Fix: #11258
Signed-off-by: Yan, Zheng <zyan@redhat.com>
ISA-L 2.13 brings better performance on Avoton (20%). There's no impact on Xeon
platform. The details are in the release notes.
There's a new API ec_encode_data_update() for incremental encoding
and decoding. The other highlevel API keeps the same as in 2.10
Signed-off-by: Yuan Zhou <yuan.zhou@intel.com>
Nightly ran and encountered a situation in which fstat following
ftruncate reported a size not equal to the truncated size.
Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
cls_rbd: fix read past end of bufferlist c_str() in debug log msg
Reviewed-by: Haomai Wang <haomaiwang@gmail.com>
Reviewed-by: Josh Durgin <jdurgin@redhat.com>
When we want to get mdsmap, we try to get_version()
and the return value err = 0 means success.
The assert verified r == 0. r would not change in this flow.
It always meet assert and lead mon failure.
I think this verify should be:
assert(err == 0)
It will help to check return value of get_version().
If you have any questions, feel free to let me know.
Thanks!
Signed-off-by: Vicente Cheng <freeze.bilsted@gmail.com>