However, when reading large files, the majority of the disk traffic is due to many read RPCs, all of which are eliminated. All cached file data exists only in disk-based structures. Each remote file from which a page is cached has a corresponding local cache file. The name of the local file is the concatenation of the server name, the server's superblock number, and the inode number of the file being cached. Since the disk cache can persists for months or longer, it is important that the access times are accurate.
Bold text denotes new data members, heavy boxes denote added data structures.
Thus, we must maintain in-kernel data structures to track which pages of each inode have been cached to local disk. We use a simple packed binary array representation, and also include the number of total pages, and the number valid, along with some information needed by nfsfillind to finishing reading a file after the NFS inode may have left memory. See Figure for details. The life-cycle of an inode, and its corresponding cache file's inode . From A to B a remote file is first accessed, thus assigning an inode structure to that file.