# HG changeset patch # User Paul Boddie # Date 1666300108 -7200 # Node ID 328868b6085135280d94c07177dec0d297052d57 # Parent 500382c759fed17d65d196cedac74d1013d122bf Defer file removal until the provider is itself deallocated. diff -r 500382c759fe -r 328868b60851 libfsserver/include/fsserver/file_provider.h --- a/libfsserver/include/fsserver/file_provider.h Thu Oct 20 23:06:59 2022 +0200 +++ b/libfsserver/include/fsserver/file_provider.h Thu Oct 20 23:08:28 2022 +0200 @@ -32,6 +32,7 @@ { protected: PageMapper *_mapper; + bool _to_remove = false; public: explicit FileProvider(fileid_t fileid, ProviderRegistry *registry, diff -r 500382c759fe -r 328868b60851 libfsserver/lib/files/file_provider.cc --- a/libfsserver/lib/files/file_provider.cc Thu Oct 20 23:06:59 2022 +0200 +++ b/libfsserver/lib/files/file_provider.cc Thu Oct 20 23:08:28 2022 +0200 @@ -43,6 +43,10 @@ delete _mapper; accessor->close(); + + if (_to_remove) + accessor->remove(); + delete accessor; } @@ -81,7 +85,7 @@ void FileProvider::remove() { - _mapper->accessor()->remove(); + _to_remove = true; } // vim: tabstop=4 expandtab shiftwidth=4