This procedure is called by “statl” (6050), “update” (7226) and “iput” (7357) to revise a particular “inode” entry on a FSV. It does nothing if the corresponding core “inode” is not flagged (“IUPD” or “IACC”);
The “IUPD” flag may be set by one of
unlink (3530) bmap (6452,6467) chmod (3570) itrunc (7448) chown (3583) maknode (7462) link (5942) namei (7609) writei (6285,6318) pipe (7751)
The “IACC” flag may be set by one of
readi (6232) maknode (7462) writei (6285) pipe (7751)
The flags are reset by “iput” (7359).
Forget it, if the FSV has been mounted as “read only”;
Read the appropriate block containing the FSV “inode” entry. As observed earlier with respect to “iget”, note the the use of “bread” instead of “readi”, the assumption that the “inode” table begins at block #2 and the convention that valid “inode” numbers begin at one;
Copy the relevant information from the core “inode”;
If appropriate, update the time of last access;
If appropriate, update the time of last modification;
Write the updated block back to the FSV.