From: "Dr. David Alan Gilbert" <dgilb...@redhat.com> Force unmap all remaining dax cache entries on a destroy.
Signed-off-by: Dr. David Alan Gilbert <dgilb...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> --- tools/virtiofsd/passthrough_ll.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tools/virtiofsd/passthrough_ll.c b/tools/virtiofsd/passthrough_ll.c index 910c4831fb..726343677e 100644 --- a/tools/virtiofsd/passthrough_ll.c +++ b/tools/virtiofsd/passthrough_ll.c @@ -3128,6 +3128,20 @@ static void lo_destroy(void *userdata, struct fuse_session *se) { struct lo_data *lo = (struct lo_data *)userdata; + if (fuse_lowlevel_is_virtio(se)) { + VhostUserFSSlaveMsg *msg = g_malloc0(sizeof(VhostUserFSSlaveMsg) + + sizeof(VhostUserFSSlaveMsgEntry)); + + msg->count = 0; + msg->entries[0].len = ~(uint64_t)0; /* Special: means 'all' */ + msg->entries[0].c_offset = 0; + if (fuse_virtio_unmap(se, msg)) { + fuse_log(FUSE_LOG_ERR, "%s: unmap during destroy failed\n", + __func__); + } + g_free(msg); + } + pthread_mutex_lock(&lo->mutex); while (true) { GHashTableIter iter; -- 2.31.1