]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
osd/bluestore: Actually wait until completion in write_sync 29564/head
authorVitaliy Filippov <vitalif@yourcmc.ru>
Wed, 6 Mar 2019 23:01:18 +0000 (02:01 +0300)
committerKonstantin Shalygin <k0ste@k0ste.ru>
Fri, 9 Aug 2019 03:58:51 +0000 (10:58 +0700)
commitd23a41ada10fc7cefa284754a9ea8b18b732012f
treed7a4555d7a2959127d9168a7f71955e935d07776
parentba6e08657b50904486a87ae79399833f059fd89e
osd/bluestore: Actually wait until completion in write_sync

This function is only used by RocksDB WAL writing so it must sync data.

This fixes #18338 and thus allows to actually set `bluefs_preextend_wal_files`
to true, gaining +100% single-thread write iops in disk-bound (HDD or bad SSD) setups.
To my knowledge it doesn't hurt performance in other cases.
Test it yourself on any HDD with `fio -ioengine=rbd -direct=1 -bs=4k -iodepth=1`.

Issue #18338 is easily reproduced without this patch by issuing a `kill -9` to the OSD
while doing `fio -ioengine=rbd -direct=1 -bs=4M -iodepth=16`.

Fixes: https://tracker.ceph.com/issues/18338 https://tracker.ceph.com/issues/38559
Signed-off-by: Vitaliy Filippov <vitalif@yourcmc.ru>
(cherry picked from commit c703cf9a7632cbd9f17e148ef203509549a28571)

Conflicts:
- path: src/os/bluestore/KernelDevice.cc
  comment: luminous has a single variable "fd_buffered" where master has an array "fd_buffereds"
src/os/bluestore/KernelDevice.cc