Zheng noticed on my new sessionmap code [1] that sessions weren't getting dirtied on trim_completed_requests. I had missed that, because I was only updating the places that we already incremented the sessionmap version while modifying something.
I went and looked at how this worked in the existing code, and it appears that we don't actually bother persisting updates to the sessionmap if completed_requests is the only thing that changed. We would *tend* to persist it as a consequence to other session updates like prealloc_inos, but if one is simply issuing lots of metadata updates to existing files in a loop, the sessionmap never gets written back (even when expiring log segments).
During replay, we rebuild completed_requests from EMetaBlob::replay, and we've made it this far without reliably persisting it in sessionmap, so I wonder if we ever needed to save this at all? Thoughts?
Cheers, John 1. https://github.com/ceph/ceph/pull/3718 -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html