On Wed, Dec 11, 2019 at 08:41:10AM -0500, Jason Dillaman wrote:
On Tue, Dec 10, 2019 at 11:02 PM Li Wang <laurence.liwang@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.
Could mark the map as invalid on open and start rebuilding in background? -- Mykola Golub