summaryrefslogtreecommitdiffstats
path: root/sys/ufs/ffs/ffs_inode.c
diff options
context:
space:
mode:
authorkan <kan@FreeBSD.org>2004-07-28 06:41:27 +0000
committerkan <kan@FreeBSD.org>2004-07-28 06:41:27 +0000
commit586367666db6acf703bf5135bb74bb3a490b5de2 (patch)
tree8dcb27436e9b802f1fcb3932069f9411a04bba6b /sys/ufs/ffs/ffs_inode.c
parent7a2c503e1b6f63cf58059c4c57f2d7e24577c923 (diff)
downloadFreeBSD-src-586367666db6acf703bf5135bb74bb3a490b5de2.zip
FreeBSD-src-586367666db6acf703bf5135bb74bb3a490b5de2.tar.gz
Avoid using casts as lvalues. Introduce DIP_SET macro which sets proper
inode field based on UFS version. Use DIP ro read values and DIP_SET to modify them throughout FFS code base.
Diffstat (limited to 'sys/ufs/ffs/ffs_inode.c')
-rw-r--r--sys/ufs/ffs/ffs_inode.c35
1 files changed, 19 insertions, 16 deletions
diff --git a/sys/ufs/ffs/ffs_inode.c b/sys/ufs/ffs/ffs_inode.c
index a608fa4..ce0d77e 100644
--- a/sys/ufs/ffs/ffs_inode.c
+++ b/sys/ufs/ffs/ffs_inode.c
@@ -229,7 +229,7 @@ ffs_truncate(vp, length, flags, cred, td)
#endif
bzero(SHORTLINK(oip), (u_int)oip->i_size);
oip->i_size = 0;
- DIP(oip, i_size) = 0;
+ DIP_SET(oip, i_size, 0);
oip->i_flag |= IN_CHANGE | IN_UPDATE;
if (needextclean)
softdep_setup_freeblocks(oip, length, IO_EXT);
@@ -291,7 +291,7 @@ ffs_truncate(vp, length, flags, cred, td)
if (error)
return (error);
oip->i_size = length;
- DIP(oip, i_size) = length;
+ DIP_SET(oip, i_size, length);
if (bp->b_bufsize == fs->fs_bsize)
bp->b_flags |= B_CLUSTEROK;
if (flags & IO_SYNC)
@@ -312,7 +312,7 @@ ffs_truncate(vp, length, flags, cred, td)
offset = blkoff(fs, length);
if (offset == 0) {
oip->i_size = length;
- DIP(oip, i_size) = length;
+ DIP_SET(oip, i_size, length);
} else {
lbn = lblkno(fs, length);
flags |= BA_CLRBUF;
@@ -333,7 +333,7 @@ ffs_truncate(vp, length, flags, cred, td)
(error = VOP_FSYNC(ovp, cred, MNT_WAIT, td)) != 0)
return (error);
oip->i_size = length;
- DIP(oip, i_size) = length;
+ DIP_SET(oip, i_size, length);
size = blksize(fs, oip, lbn);
if (ovp->v_type != VDIR)
bzero((char *)bp->b_data + offset,
@@ -367,14 +367,14 @@ ffs_truncate(vp, length, flags, cred, td)
for (level = TRIPLE; level >= SINGLE; level--) {
oldblks[NDADDR + level] = DIP(oip, i_ib[level]);
if (lastiblock[level] < 0) {
- DIP(oip, i_ib[level]) = 0;
+ DIP_SET(oip, i_ib[level], 0);
lastiblock[level] = -1;
}
}
for (i = 0; i < NDADDR; i++) {
oldblks[i] = DIP(oip, i_db[i]);
if (i > lastblock)
- DIP(oip, i_db[i]) = 0;
+ DIP_SET(oip, i_db[i], 0);
}
oip->i_flag |= IN_CHANGE | IN_UPDATE;
allerror = UFS_UPDATE(ovp, 1);
@@ -387,14 +387,14 @@ ffs_truncate(vp, length, flags, cred, td)
*/
for (i = 0; i < NDADDR; i++) {
newblks[i] = DIP(oip, i_db[i]);
- DIP(oip, i_db[i]) = oldblks[i];
+ DIP_SET(oip, i_db[i], oldblks[i]);
}
for (i = 0; i < NIADDR; i++) {
newblks[NDADDR + i] = DIP(oip, i_ib[i]);
- DIP(oip, i_ib[i]) = oldblks[NDADDR + i];
+ DIP_SET(oip, i_ib[i], oldblks[NDADDR + i]);
}
oip->i_size = osize;
- DIP(oip, i_size) = osize;
+ DIP_SET(oip, i_size, osize);
error = vtruncbuf(ovp, cred, td, length, fs->fs_bsize);
if (error && (allerror == 0))
@@ -415,7 +415,7 @@ ffs_truncate(vp, length, flags, cred, td)
allerror = error;
blocksreleased += count;
if (lastiblock[level] < 0) {
- DIP(oip, i_ib[level]) = 0;
+ DIP_SET(oip, i_ib[level], 0);
ffs_blkfree(fs, oip->i_devvp, bn, fs->fs_bsize,
oip->i_number);
blocksreleased += nblocks;
@@ -434,7 +434,7 @@ ffs_truncate(vp, length, flags, cred, td)
bn = DIP(oip, i_db[i]);
if (bn == 0)
continue;
- DIP(oip, i_db[i]) = 0;
+ DIP_SET(oip, i_db[i], 0);
bsize = blksize(fs, oip, i);
ffs_blkfree(fs, oip->i_devvp, bn, bsize, oip->i_number);
blocksreleased += btodb(bsize);
@@ -456,7 +456,7 @@ ffs_truncate(vp, length, flags, cred, td)
*/
oldspace = blksize(fs, oip, lastblock);
oip->i_size = length;
- DIP(oip, i_size) = length;
+ DIP_SET(oip, i_size, length);
newspace = blksize(fs, oip, lastblock);
if (newspace == 0)
panic("ffs_truncate: newspace");
@@ -492,11 +492,11 @@ done:
* Put back the real size.
*/
oip->i_size = length;
- DIP(oip, i_size) = length;
- DIP(oip, i_blocks) -= blocksreleased;
+ DIP_SET(oip, i_size, length);
+ DIP_SET(oip, i_blocks, DIP(oip, i_blocks) - blocksreleased);
if (DIP(oip, i_blocks) < 0) /* sanity */
- DIP(oip, i_blocks) = 0;
+ DIP_SET(oip, i_blocks, 0);
oip->i_flag |= IN_CHANGE;
#ifdef QUOTA
(void) chkdq(oip, -blocksreleased, NOCRED, 0);
@@ -579,7 +579,10 @@ ffs_indirtrunc(ip, lbn, dbn, lastbn, level, countp)
MALLOC(copy, caddr_t, fs->fs_bsize, M_TEMP, M_WAITOK);
bcopy((caddr_t)bp->b_data, copy, (u_int)fs->fs_bsize);
for (i = last + 1; i < NINDIR(fs); i++)
- BAP(ip, i) = 0;
+ if (ip->i_ump->um_fstype == UFS1)
+ bap1[i] = 0;
+ else
+ bap2[i] = 0;
if (DOINGASYNC(vp)) {
bawrite(bp);
} else {
OpenPOWER on IntegriCloud