I'm starting to sound like a broken record as I'm stating it the third time now, but: no, this does not in any way fix the problem of holding the invalidate lock over long running I/O. It just does ease the symptoms in the least important but apparently visible to you caller. What we need to do is to get the zeroing I/O out from under the invalidate lock, just like how we don't do direct I/O under it.