Currently DstReference#destroyAndCollectBlocks may fail to clean the subtree under the DstReference node for file/directory/snapshot deletion.
Use case 1:
- rename under-construction file with 0-sized blocks after snapshot.
- delete the renamed directory.
We need to make sure we delete the 0-sized block.
Use case 2:
- create snapshot s0 for /
- create a new file under /foo/bar/
- rename foo --> foo2
- create snapshot s1
- delete bar and foo2
- delete snapshot s1
We need to make sure we delete the file under /foo/bar since it is not included in snapshot s0.