Commit
40f6f5224bce ("qa/workunits/rbd: fix issues in
luks-encryption.sh") did the right thing for reads, which solved
most of the issue. However, it actually made a step in the opposite
direction for writes -- depending on the RBD cache settings, rbd-nbd
virtual devices can behave as physical devices with a volatile write
cache, so fsync is required.
While at it, involving O_DIRECT for reads isn't needed outside of
test_encryption_format().
Fixes: https://tracker.ceph.com/issues/67051
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit
9e1c0342e9931e898d795d47f923edd3b4324f4a)
Conflicts:
qa/workunits/rbd/luks-encryption.sh [ commit
1d3de19c4005
("tools/rbd: add encryption format support for cloned image")
not in quincy ]
sudo chmod 666 $LIBRBD_DEV
# write via librbd && compare
- dd if=/tmp/testdata1 of=$LIBRBD_DEV oflag=direct bs=1M
+ dd if=/tmp/testdata1 of=$LIBRBD_DEV conv=fsync bs=1M
dd if=/dev/mapper/cryptsetupdev of=/tmp/cmpdata iflag=direct bs=4M count=4
cmp -n 16MB /tmp/cmpdata /tmp/testdata1
# write via cryptsetup && compare
- dd if=/tmp/testdata2 of=/dev/mapper/cryptsetupdev oflag=direct bs=1M
+ dd if=/tmp/testdata2 of=/dev/mapper/cryptsetupdev conv=fsync bs=1M
dd if=$LIBRBD_DEV of=/tmp/cmpdata iflag=direct bs=4M count=4
cmp -n 16MB /tmp/cmpdata /tmp/testdata2
}