On Tue, Dec 10, 2019 at 11:02 PM Li Wang
<laurence.liwang(a)gmail.com> wrote:
Hi Jason,
If possible to do the following optimization,
(1) For write, update in memory map first, then write data and
asynchrously update map,
therefore will not have the first write performance problem
(2) For rbd open, after exclusive lock acquired, before loading the map,
write a flag MAP_IN_USE into the rbd header
(3) Before releasing exclusive lock, flush pending map writes, clean the flag
(4) For rbd open, if the flag exists before loading map, discard and
rebuild the map
Changing the behaviour like this would break backwards compatibility
with older clients. Therefore, it would really need a new feature bit
to describe "object-map v2". Rebuilding the map on a large image is
not a "free" operation since you might have to loop through tens of
thousands of objects. That could be quite the unexpected surprise for
a user attempting to restart a failed VM.