Merge pull request #31794 from dillaman/wip-42889

librbd: disable zero-copy writes by default

Reviewed-by: Ilya Dryomov <idryomov@redhat.com>
This commit is contained in:
Jason Dillaman 2019-12-09 12:47:47 -05:00 committed by GitHub
commit 703a4ebde4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 0 deletions

View File

@ -7020,6 +7020,11 @@ static std::vector<Option> get_rbd_options() {
.set_default(60)
.set_description("time in seconds for detecting a hung thread"),
Option("rbd_disable_zero_copy_writes", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
.set_default(true)
.set_description("Disable the use of zero-copy writes to ensure unstable "
"writes from clients cannot cause a CRC mismatch"),
Option("rbd_non_blocking_aio", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
.set_default(true)
.set_description("process AIO ops from a dispatch thread to prevent blocking"),

View File

@ -814,6 +814,12 @@ public:
RBD_QOS_WRITE_BPS_THROTTLE,
config.get_val<uint64_t>("rbd_qos_write_bps_limit"),
config.get_val<uint64_t>("rbd_qos_write_bps_burst"));
if (!disable_zero_copy &&
config.get_val<bool>("rbd_disable_zero_copy_writes")) {
ldout(cct, 5) << this << ": disabling zero-copy writes" << dendl;
disable_zero_copy = true;
}
}
ExclusiveLock<ImageCtx> *ImageCtx::create_exclusive_lock() {