Deallocation of a file is broken into several transactions. It should be
possible to merge some of these. Also there is considerable scope for
optimisation by reading things ahead in various places.
Also, if it is possible to deallocate directories without having to journal all
the hash table blocks and write them back to disk, then that should also result
in a faster deallocation.
The main problem here is the indeterminate number of rgrps in which the blocks
of the inode might reside. This means that deallocation may have to be broken
into separate transactions in order not to overflow the max transaction size.
We also need to spend some time looking for other oprimisations in this code.
->delete_inode() has become ->evict_inode() in the upstream code