summaryrefslogtreecommitdiff
path: root/ufs/inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'ufs/inode.c')
-rw-r--r--ufs/inode.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/ufs/inode.c b/ufs/inode.c
index 91963c16..ba720b48 100644
--- a/ufs/inode.c
+++ b/ufs/inode.c
@@ -333,6 +333,7 @@ write_node (struct node *np)
diskfs_end_catch_exception ();
np->dn_stat_dirty = 0;
+ record_poke (di, sizeof (struct dinode));
}
}
@@ -344,6 +345,7 @@ create_symlink_hook (struct node *np, char *target)
{
int len = strlen (target);
error_t err;
+ struct dinode *di;
if (!direct_symlink_extension)
return EINVAL;
@@ -357,10 +359,12 @@ create_symlink_hook (struct node *np, char *target)
if (err)
return err;
- bcopy (target, (dino (np->dn->number))->di_shortlink, len);
+ di = dino (np->dn->number);
+ bcopy (target, di->di_shortlink, len);
np->dn_stat.st_size = len;
np->dn_set_ctime = 1;
np->dn_set_mtime = 1;
+ record_poke (di, sizeof (struct dinode));
diskfs_end_catch_exception ();
return 0;
@@ -446,7 +450,8 @@ diskfs_set_translator (struct node *np, char *name, u_int namelen,
daddr_t blkno;
error_t err;
char buf[sblock->fs_bsize];
-
+ struct dinode *di;
+
if (compat_mode != COMPAT_GNU)
return EOPNOTSUPP;
@@ -457,7 +462,8 @@ diskfs_set_translator (struct node *np, char *name, u_int namelen,
if (err)
return err;
- blkno = (dino (np->dn->number))->di_trans;
+ di = dino (np->dn->number);
+ blkno = di->di_trans;
if (namelen && !blkno)
{
@@ -468,14 +474,16 @@ diskfs_set_translator (struct node *np, char *name, u_int namelen,
diskfs_end_catch_exception ();
return err;
}
- (dino (np->dn->number))->di_trans = blkno;
+ di->di_trans = blkno;
+ record_poke (di, sizeof (struct dinode));
np->dn_set_ctime = 1;
}
else if (!namelen && blkno)
{
/* Clear block for translator going away. */
ffs_blkfree (np, blkno, sblock->fs_bsize);
- (dino (np->dn->number))->di_trans = 0;
+ di->di_trans = 0;
+ record_poke (di, sizeof (struct dinode));
np->istranslated = 0;
np->dn_set_ctime = 1;
}