tell what an inode is
This commit is contained in:
parent
a505fd6651
commit
6c34f97cb8
1 changed files with 9 additions and 4 deletions
13
fs.c
13
fs.c
|
@ -98,7 +98,12 @@ bfree(int dev, uint b)
|
||||||
brelse(bp);
|
brelse(bp);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Inodes
|
// Inodes.
|
||||||
|
//
|
||||||
|
// An inode is a single, unnamed file in the file system.
|
||||||
|
// The inode disk structure holds metadata (the type, device numbers,
|
||||||
|
// and data size) along with a list of blocks where the associated
|
||||||
|
// data can be found.
|
||||||
//
|
//
|
||||||
// The inodes are laid out sequentially on disk immediately after
|
// The inodes are laid out sequentially on disk immediately after
|
||||||
// the superblock. The kernel keeps a cache of the in-use
|
// the superblock. The kernel keeps a cache of the in-use
|
||||||
|
@ -110,9 +115,9 @@ bfree(int dev, uint b)
|
||||||
// When ip->ref falls to zero, the inode is no longer cached.
|
// When ip->ref falls to zero, the inode is no longer cached.
|
||||||
// It is an error to use an inode without holding a reference to it.
|
// It is an error to use an inode without holding a reference to it.
|
||||||
//
|
//
|
||||||
// Inodes can be locked with I_BUSY (like bufs and B_BUSY).
|
|
||||||
// Processes are only allowed to read and write inode
|
// Processes are only allowed to read and write inode
|
||||||
// metadata and contents when holding the inode's lock.
|
// metadata and contents when holding the inode's lock,
|
||||||
|
// represented by the I_BUSY flag in the in-memory copy.
|
||||||
// Because inode locks are held during disk accesses,
|
// Because inode locks are held during disk accesses,
|
||||||
// they are implemented using a flag rather than with
|
// they are implemented using a flag rather than with
|
||||||
// spin locks. Callers are responsible for locking
|
// spin locks. Callers are responsible for locking
|
||||||
|
@ -123,7 +128,7 @@ bfree(int dev, uint b)
|
||||||
// To give maximum control over locking to the callers,
|
// To give maximum control over locking to the callers,
|
||||||
// the routines in this file that return inode pointers
|
// the routines in this file that return inode pointers
|
||||||
// return pointers to *unlocked* inodes. It is the callers'
|
// return pointers to *unlocked* inodes. It is the callers'
|
||||||
// responsibility to lock them before using them. A non-zero
|
// responsibility to lock them before using them. A non-zero
|
||||||
// ip->ref keeps these unlocked inodes in the cache.
|
// ip->ref keeps these unlocked inodes in the cache.
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
|
|
Loading…
Reference in a new issue