The prototype implementation generally used multiple structures for each update dependency: one for the "depender" and one for each "dependee." For example, each time a block was allocated, new dependency structures were associated with the disk block, the bitmap, and the inode (the "depender" in this case).
Thus, there is a short period of time between the directory entry being removed and the inode being deallocated.
For 2KB thru 64KB files, Conventional involves approximately 3.1 disk writes per file, which includes 2 synchronous disk writes to create the file, 1 asynchronous disk write of the data, and a partial disk write for coalesced updates to bitmap blocks and directory inodes. For these same file sizes, Soft Updates and No Order involve approximately 1.1 disk writes per file, corresponding to 1 asynchronous disk write of the data and a partial disk write for coalesced updates to bitmap, inode, and directory blocks.
(2) The actual requirement is that the on-disk inode should not be reinitialized or pointed to by the free inode map (if the on-disk map is to be trusted after failure) before all previous on-disk directory entry pointers to it have been nullified.
In file systems, metadata (e.g., directories, inodes, and free block maps) gives structure to raw storage capacity.