+static void vhost_set_vmap_dirty(struct vhost_vmap *used)This seems to rely on page lock to mark page dirty.
+{
+ int i;
+
+ for (i = 0; i < used->npages; i++)
+ set_page_dirty_lock(used->pages[i]);
Could it happen that page writeback will check the
page, find it clean, and then you mark it dirty and then
invalidate callback is called?