Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
CSEP551
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Krishna Vinnakota
CSEP551
Commits
6c34f97c
Commit
6c34f97c
authored
17 years ago
by
rsc
Browse files
Options
Downloads
Patches
Plain Diff
tell what an inode is
parent
a505fd66
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
fs.c
+9
-4
9 additions, 4 deletions
fs.c
with
9 additions
and
4 deletions
fs.c
+
9
−
4
View file @
6c34f97c
...
@@ -98,7 +98,12 @@ bfree(int dev, uint b)
...
@@ -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)
...
@@ -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)
...
@@ -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
{
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment