summaryrefslogtreecommitdiff
path: root/ufs
diff options
context:
space:
mode:
authorMiles Bader <miles@gnu.org>1995-10-19 20:49:33 +0000
committerMiles Bader <miles@gnu.org>1995-10-19 20:49:33 +0000
commitd77d7cbde90553aa4178cba7e1591e0e6d4818c5 (patch)
tree0c5f106b04c8718cbd5752bb3a71d47183518a9f /ufs
parentb614f2c8bb637f0e12a1786b8bb15248be441626 (diff)
(diskfs_node_reload): New function.
(iget): Move allocsize setting into read_disknode.
Diffstat (limited to 'ufs')
-rw-r--r--ufs/inode.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/ufs/inode.c b/ufs/inode.c
index b15c9848..179a85bc 100644
--- a/ufs/inode.c
+++ b/ufs/inode.c
@@ -83,11 +83,6 @@ iget (ino_t inum, struct node **npp)
spin_unlock (&diskfs_node_refcnt_lock);
err = read_disknode (np);
-
- if (lblkno (sblock, np->dn_stat.st_size) < NDADDR)
- np->allocsize = fragroundup (sblock, np->dn_stat.st_size);
- else
- np->allocsize = blkroundup (sblock, np->dn_stat.st_size);
if (!diskfs_readonly && !np->dn_stat.st_gen)
{
@@ -271,6 +266,24 @@ read_disknode (struct node *np)
diskfs_end_catch_exception ();
if (!S_ISBLK (st->st_mode) && !S_ISCHR (st->st_mode))
st->st_rdev = 0;
+
+ if (lblkno (sblock, np->dn_stat.st_size) < NDADDR)
+ np->allocsize = fragroundup (sblock, np->dn_stat.st_size);
+ else
+ np->allocsize = blkroundup (sblock, np->dn_stat.st_size);
+
+ return 0;
+}
+
+error_t diskfs_node_reload (struct node *node)
+{
+ if (node->dn->dirents)
+ {
+ free (node->dn->dirents);
+ node->dn->dirents = 0;
+ }
+ flush_node_pager (node);
+ read_disknode (node);
return 0;
}