On 3/9/22 10:51, Mikulas Patocka wrote:
Hi Note that you must submit kcopyd callbacks from a single thread, otherwise there's a race condition in snapshot.
Hi, Thanks for the feedback. Yes, I'm aware of that.
The snapshot code doesn't take locks in the copy_callback and it expects that the callbacks are serialized. Maybe, adding the locks to copy_callback would solve it.
That's what I did. I used a lock to ensure that kcopyd callbacks are serialized for persistent snapshots. For transient snapshots we can lift this limitation, and complete pending exceptions out-of-oder and in "parallel", i.e., without explicitly serializing kcopyd callbacks. The locks in pending_complete() are enough in this case. Nikos