“closei”, as its last action calls “iput”. This routine is in fact called from many places, whenever a connection to a core “inode” is to be severed and the reference count decremented.
If the reference count is one at this point, the “inode” is to be released. While this is happening, it should be locked.
If the number of “links” to the file is zero (or less) the file is to be deallocated (see below);
“iupdat” (7374) updates the accessed and update times as recorded on the disk “inode”;
“prele” unlocks the “inode”. Why should it be called here as well as at line 7363?