@Digard - IMHO @DaveH's request for some more information was perfectly reasonable. At first reading, it was unclear that the error was being generated by Gerbera, not TVH. It was only upon reading your response that gave that clue.
I found this thread from a long time ago.
https://tvheadend.org/d/4711-deleted-recordings-not-removed-from-filesystem
It suggests that under some circumstances, TVH first renames a file to be file.name.removing
before actually deleting it later.
Enabling logging in TVH could give valuable clues regarding what is going on during the deletion process.
Are you 100% certain that the file is no longer in use when you try to delete it?
Does Gerbera stream via TVH, or does it read the recorded file directly from the recording directory?
Does Gerbera keep the file open/locked for quick access to metadata or something?