Compare And Write against unwritten ranges

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Mike,

Returning to the OSD cmpext functionality in
https://github.com/ceph/ceph/pull/8911 , I'm wondering how such
requests should be handled against unwritten ranges.

Currently an OSD will return -EINVAL to the client, as the short read
will be caught via:
https://github.com/ceph/ceph/pull/8911/commits/440895ea9f2604756c9f3c81e5c4ec5ca40401d7#diff-72747d40a424e7b5404366b557ff12a3R3722
-EINVAL then means that krbd will return an error for the corresponding
client I/O.

For read requests, rbd_img_obj_request_read_callback() handles
zero-filling read buffers that cover unwritten RBD ranges. For SCSI
Compare And Write the OSD is responsible for atomicity, so zero-filling
on the client side is problematic.
One potential option could be to add a truncate/zero operation to the
Compare And Write compound request, or optionally support truncate_seq
and truncate_size parameters in cmpext. Any thoughts/suggestions on the
approach here?

FWIW, I'm using the following test to trigger this from the client side:
https://github.com/sahlberg/libiscsi/pull/213/commits/e6f2ce306cf8706b666ec088fc74219bc52ea8cf

Cheers, David
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux