On Thu, May 01, 2025 at 09:52:08PM -0700, Matthew Brost wrote: > On Fri, May 02, 2025 at 05:31:49AM +0100, Al Viro wrote: > > On Thu, May 01, 2025 at 09:26:25PM -0700, Matthew Brost wrote:
> > And what is the lifecycle of that thing? E.g. what is guaranteed about > > ttm_backup_fini() vs. functions accessing the damn thing? Are they > > serialized on something/tied to lifecycle stages of struct ttm_tt? > > I believe the life cycle is when ttm_tt is destroyed or api allows > overriding the old backup with a new one (currently unused). Umm... So can ttm_tt_setup_backup() be called in the middle of e.g. ttm_backup_drop() or ttm_backup_{copy,backup}_page(), etc.? I mean, if they had been called by ttm_backup.c internals, it would be an internal business of specific implementation, with all serialization, etc. warranties being its responsibility; but if it's called by other code that is supposed to be isolated from details of what ->backup is pointing to... Sorry for asking dumb questions, but I hadn't seen the original threads. Basically, what prevents the underlying shmem file getting torn apart while another operation is using it? It might very well be simple, but I had enough "it's because of... oh, bugger" moments on the receiving end of such questions...