Module Name: src
Committed By: dholland
Date: Fri Jul 24 06:59:32 UTC 2015
Modified Files:
src/libexec/lfs_cleanerd: cleaner.h coalesce.c lfs_cleanerd.c
src/sbin/dump_lfs: lfs_inode.c
src/sbin/fsck_lfs: inode.c lfs.c main.c pass1.c pass5.c pass6.c
segwrite.c setup.c utilities.c
src/sbin/newfs_lfs: make_lfs.c
src/sbin/resize_lfs: resize_lfs.c
src/sbin/scan_ffs: scan_ffs.c
src/sys/ufs/lfs: lfs.h lfs_alloc.c lfs_balloc.c lfs_bio.c lfs_inode.c
lfs_pages.c lfs_rfw.c lfs_segment.c lfs_subr.c lfs_syscalls.c
lfs_vfsops.c lfs_vnops.c ulfs_inode.h ulfs_quota2.c
ulfs_readwrite.c
src/usr.sbin/dumplfs: dumplfs.c
Log Message:
More lfs superblock accessors.
(This changes the rest of the code over; all the accessors were
already added.)
The difference between this commit and the previous one is arbitrary,
but the previous one passed the regression tests on its own so I'm
keeping it separate to help with any bisections that might be needed
in the future.
To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/libexec/lfs_cleanerd/cleaner.h
cvs rdiff -u -r1.25 -r1.26 src/libexec/lfs_cleanerd/coalesce.c
cvs rdiff -u -r1.39 -r1.40 src/libexec/lfs_cleanerd/lfs_cleanerd.c
cvs rdiff -u -r1.20 -r1.21 src/sbin/dump_lfs/lfs_inode.c
cvs rdiff -u -r1.55 -r1.56 src/sbin/fsck_lfs/inode.c
cvs rdiff -u -r1.46 -r1.47 src/sbin/fsck_lfs/lfs.c
cvs rdiff -u -r1.50 -r1.51 src/sbin/fsck_lfs/main.c
cvs rdiff -u -r1.38 -r1.39 src/sbin/fsck_lfs/pass1.c \
src/sbin/fsck_lfs/utilities.c
cvs rdiff -u -r1.30 -r1.31 src/sbin/fsck_lfs/pass5.c
cvs rdiff -u -r1.35 -r1.36 src/sbin/fsck_lfs/pass6.c
cvs rdiff -u -r1.32 -r1.33 src/sbin/fsck_lfs/segwrite.c
cvs rdiff -u -r1.47 -r1.48 src/sbin/fsck_lfs/setup.c
cvs rdiff -u -r1.32 -r1.33 src/sbin/newfs_lfs/make_lfs.c
cvs rdiff -u -r1.10 -r1.11 src/sbin/resize_lfs/resize_lfs.c
cvs rdiff -u -r1.26 -r1.27 src/sbin/scan_ffs/scan_ffs.c
cvs rdiff -u -r1.164 -r1.165 src/sys/ufs/lfs/lfs.h
cvs rdiff -u -r1.122 -r1.123 src/sys/ufs/lfs/lfs_alloc.c
cvs rdiff -u -r1.82 -r1.83 src/sys/ufs/lfs/lfs_balloc.c \
src/sys/ufs/lfs/lfs_subr.c
cvs rdiff -u -r1.129 -r1.130 src/sys/ufs/lfs/lfs_bio.c
cvs rdiff -u -r1.138 -r1.139 src/sys/ufs/lfs/lfs_inode.c
cvs rdiff -u -r1.2 -r1.3 src/sys/ufs/lfs/lfs_pages.c
cvs rdiff -u -r1.22 -r1.23 src/sys/ufs/lfs/lfs_rfw.c
cvs rdiff -u -r1.242 -r1.243 src/sys/ufs/lfs/lfs_segment.c
cvs rdiff -u -r1.161 -r1.162 src/sys/ufs/lfs/lfs_syscalls.c
cvs rdiff -u -r1.327 -r1.328 src/sys/ufs/lfs/lfs_vfsops.c
cvs rdiff -u -r1.274 -r1.275 src/sys/ufs/lfs/lfs_vnops.c
cvs rdiff -u -r1.13 -r1.14 src/sys/ufs/lfs/ulfs_inode.h
cvs rdiff -u -r1.19 -r1.20 src/sys/ufs/lfs/ulfs_quota2.c
cvs rdiff -u -r1.18 -r1.19 src/sys/ufs/lfs/ulfs_readwrite.c
cvs rdiff -u -r1.43 -r1.44 src/usr.sbin/dumplfs/dumplfs.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/libexec/lfs_cleanerd/cleaner.h
diff -u src/libexec/lfs_cleanerd/cleaner.h:1.6 src/libexec/lfs_cleanerd/cleaner.h:1.7
--- src/libexec/lfs_cleanerd/cleaner.h:1.6 Fri Jul 24 06:56:41 2015
+++ src/libexec/lfs_cleanerd/cleaner.h Fri Jul 24 06:59:31 2015
@@ -52,7 +52,8 @@ struct clfs {
static __unused inline void \
clfs_sb_add##field(struct clfs *fs, type val) \
{ \
- fs->lfs_dlfs.dlfs_##field += val; \
+ type *p = &fs->lfs_dlfs.dlfs_##field; \
+ *p += val; \
}
/* more ugh... */
@@ -61,22 +62,57 @@ CLFS_DEF_SB_ACCESSOR(u_int32_t, bsize);
CLFS_DEF_SB_ACCESSOR(u_int32_t, fsize);
CLFS_DEF_SB_ACCESSOR(u_int32_t, frag);
CLFS_DEF_SB_ACCESSOR(u_int32_t, ifile);
+CLFS_DEF_SB_ACCESSOR(u_int32_t, inopb);
CLFS_DEF_SB_ACCESSOR(u_int32_t, ifpb);
CLFS_DEF_SB_ACCESSOR(u_int32_t, sepb);
CLFS_DEF_SB_ACCESSOR(u_int32_t, nseg);
CLFS_DEF_SB_ACCESSOR(u_int32_t, cleansz);
CLFS_DEF_SB_ACCESSOR(u_int32_t, segtabsz);
+CLFS_DEF_SB_ACCESSOR(u_int64_t, bmask);
+CLFS_DEF_SB_ACCESSOR(u_int32_t, bshift);
+CLFS_DEF_SB_ACCESSOR(u_int64_t, ffmask);
+CLFS_DEF_SB_ACCESSOR(u_int32_t, ffshift);
+CLFS_DEF_SB_ACCESSOR(u_int32_t, fbshift);
+CLFS_DEF_SB_ACCESSOR(u_int32_t, blktodb);
+CLFS_DEF_SB_ACCESSOR(u_int32_t, minfreeseg);
+CLFS_DEF_SB_ACCESSOR(u_int32_t, sumsize);
+CLFS_DEF_SB_ACCESSOR(u_int32_t, ibsize);
+CLFS_DEF_SB_ACCESSOR(int32_t, s0addr);
+static __unused inline int32_t
+clfs_sb_getsboff(struct clfs *fs, unsigned n)
+{
+ assert(n < LFS_MAXNUMSB);
+ return fs->lfs_dlfs.dlfs_sboffs[n];
+}
+static __unused inline const char *
+clfs_sb_getfsmnt(struct clfs *fs)
+{
+ return (const char *)fs->lfs_dlfs.dlfs_fsmnt;
+}
/* still more ugh... */
#define lfs_sb_getssize(fs) clfs_sb_getssize(fs)
#define lfs_sb_getbsize(fs) clfs_sb_getbsize(fs)
#define lfs_sb_getfsize(fs) clfs_sb_getfsize(fs)
#define lfs_sb_getfrag(fs) clfs_sb_getfrag(fs)
+#define lfs_sb_getinopb(fs) clfs_sb_getinopb(fs)
#define lfs_sb_getifpb(fs) clfs_sb_getifpb(fs)
#define lfs_sb_getsepb(fs) clfs_sb_getsepb(fs)
#define lfs_sb_getnseg(fs) clfs_sb_getnseg(fs)
#define lfs_sb_getcleansz(fs) clfs_sb_getcleansz(fs)
#define lfs_sb_getsegtabsz(fs) clfs_sb_getsegtabsz(fs)
+#define lfs_sb_getbmask(fs) clfs_sb_getbmask(fs)
+#define lfs_sb_getbshift(fs) clfs_sb_getbshift(fs)
+#define lfs_sb_getffmask(fs) clfs_sb_getffmask(fs)
+#define lfs_sb_getffshift(fs) clfs_sb_getffshift(fs)
+#define lfs_sb_getfbshift(fs) clfs_sb_getfbshift(fs)
+#define lfs_sb_getblktodb(fs) clfs_sb_getblktodb(fs)
+#define lfs_sb_getminfreeseg(fs) clfs_sb_getminfreeseg(fs)
+#define lfs_sb_getsumsize(fs) clfs_sb_getsumsize(fs)
+#define lfs_sb_getibsize(fs) clfs_sb_getibsize(fs)
+#define lfs_sb_gets0addr(fs) clfs_sb_gets0addr(fs)
+#define lfs_sb_getsboff(fs, n) clfs_sb_getsboff(fs, n)
+#define lfs_sb_getfsmnt(fs) clfs_sb_getfsmnt(fs)
/*
* Fraction of the could-be-clean segments required to be clean.
Index: src/libexec/lfs_cleanerd/coalesce.c
diff -u src/libexec/lfs_cleanerd/coalesce.c:1.25 src/libexec/lfs_cleanerd/coalesce.c:1.26
--- src/libexec/lfs_cleanerd/coalesce.c:1.25 Fri Jul 24 06:56:41 2015
+++ src/libexec/lfs_cleanerd/coalesce.c Fri Jul 24 06:59:31 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: coalesce.c,v 1.25 2015/07/24 06:56:41 dholland Exp $ */
+/* $NetBSD: coalesce.c,v 1.26 2015/07/24 06:59:31 dholland Exp $ */
/*-
* Copyright (c) 2002, 2005 The NetBSD Foundation, Inc.
@@ -49,6 +49,7 @@
#include <util.h>
#include <errno.h>
#include <err.h>
+#include <assert.h>
#include <syslog.h>
@@ -118,9 +119,9 @@ get_dinode(struct clfs *fs, ino_t ino)
if (daddr == 0x0)
return NULL;
- bread(fs->clfs_devvp, daddr, fs->lfs_ibsize, 0, &bp);
+ bread(fs->clfs_devvp, daddr, lfs_sb_getibsize(fs), 0, &bp);
for (dip = (struct ulfs1_dinode *)bp->b_data;
- dip < (struct ulfs1_dinode *)(bp->b_data + fs->lfs_ibsize); dip++)
+ dip < (struct ulfs1_dinode *)(bp->b_data + lfs_sb_getibsize(fs)); dip++)
if (dip->di_inumber == ino) {
r = (struct ulfs1_dinode *)malloc(sizeof(*r));
if (r == NULL)
@@ -201,7 +202,7 @@ clean_inode(struct clfs *fs, ino_t ino)
lim.blkcnt = nb;
if (kops.ko_fcntl(fs->clfs_ifilefd, LFCNBMAPV, &lim) < 0) {
syslog(LOG_WARNING, "%s: coalesce: LFCNBMAPV: %m",
- fs->lfs_fsmnt);
+ lfs_sb_getfsmnt(fs));
retval = COALESCE_BADBMAPV;
goto out;
}
@@ -218,7 +219,7 @@ clean_inode(struct clfs *fs, ino_t ino)
if (bip[i].bi_daddr != bip[i - 1].bi_daddr + clfs_sb_getfrag(fs))
++noff;
toff += abs(bip[i].bi_daddr - bip[i - 1].bi_daddr
- - clfs_sb_getfrag(fs)) >> fs->lfs_fbshift;
+ - clfs_sb_getfrag(fs)) >> lfs_sb_getfbshift(fs);
}
/*
@@ -339,7 +340,7 @@ int clean_all_inodes(struct clfs *fs)
memset(totals, 0, sizeof(totals));
fstat(fs->clfs_ifilefd, &st);
- maxino = lfs_sb_getifpb(fs) * (st.st_size >> fs->lfs_bshift) -
+ maxino = lfs_sb_getifpb(fs) * (st.st_size >> lfs_sb_getbshift(fs)) -
lfs_sb_getsegtabsz(fs) - lfs_sb_getcleansz(fs);
for (i = 0; i < maxino; i++) {
@@ -383,14 +384,14 @@ fork_coalesce(struct clfs *fs)
*/
childpid = fork();
if (childpid < 0) {
- syslog(LOG_ERR, "%s: fork to coaleasce: %m", fs->lfs_fsmnt);
+ syslog(LOG_ERR, "%s: fork to coaleasce: %m", lfs_sb_getfsmnt(fs));
return 0;
} else if (childpid == 0) {
syslog(LOG_NOTICE, "%s: new coalescing process, pid %d",
- fs->lfs_fsmnt, getpid());
+ lfs_sb_getfsmnt(fs), getpid());
num = clean_all_inodes(fs);
syslog(LOG_NOTICE, "%s: coalesced %d discontiguous inodes",
- fs->lfs_fsmnt, num);
+ lfs_sb_getfsmnt(fs), num);
exit(0);
}
Index: src/libexec/lfs_cleanerd/lfs_cleanerd.c
diff -u src/libexec/lfs_cleanerd/lfs_cleanerd.c:1.39 src/libexec/lfs_cleanerd/lfs_cleanerd.c:1.40
--- src/libexec/lfs_cleanerd/lfs_cleanerd.c:1.39 Fri Jul 24 06:56:41 2015
+++ src/libexec/lfs_cleanerd/lfs_cleanerd.c Fri Jul 24 06:59:31 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs_cleanerd.c,v 1.39 2015/07/24 06:56:41 dholland Exp $ */
+/* $NetBSD: lfs_cleanerd.c,v 1.40 2015/07/24 06:59:31 dholland Exp $ */
/*-
* Copyright (c) 2005 The NetBSD Foundation, Inc.
@@ -120,7 +120,7 @@ dlog(const char *fmt, ...)
void
handle_error(struct clfs **cfsp, int n)
{
- syslog(LOG_NOTICE, "%s: detaching cleaner", cfsp[n]->lfs_fsmnt);
+ syslog(LOG_NOTICE, "%s: detaching cleaner", lfs_sb_getfsmnt(cfsp[n]));
free(cfsp[n]);
if (n != nfss - 1)
cfsp[n] = cfsp[nfss - 1];
@@ -133,9 +133,11 @@ handle_error(struct clfs **cfsp, int n)
int
reinit_fs(struct clfs *fs)
{
- char fsname[MNAMELEN];
+ char fsname[sizeof(fs->lfs_dlfs.dlfs_fsmnt)];
+
+ memcpy(fsname, fs->lfs_dlfs.dlfs_fsmnt, sizeof(fsname));
+ fsname[sizeof(fsname) - 1] = '\0';
- strncpy(fsname, (char *)fs->lfs_fsmnt, MNAMELEN);
kops.ko_close(fs->clfs_ifilefd);
kops.ko_close(fs->clfs_devfd);
fd_reclaim(fs->clfs_devvp);
@@ -174,11 +176,11 @@ init_unmounted_fs(struct clfs *fs, char
atatime);
/* Allocate and clear segtab */
- fs->clfs_segtab = (struct clfs_seguse *)malloc(fs->lfs_nseg *
+ fs->clfs_segtab = (struct clfs_seguse *)malloc(lfs_sb_getnseg(fs) *
sizeof(*fs->clfs_segtab));
- fs->clfs_segtabp = (struct clfs_seguse **)malloc(fs->lfs_nseg *
+ fs->clfs_segtabp = (struct clfs_seguse **)malloc(lfs_sb_getnseg(fs) *
sizeof(*fs->clfs_segtabp));
- for (i = 0; i < fs->lfs_nseg; i++) {
+ for (i = 0; i < lfs_sb_getnseg(fs); i++) {
fs->clfs_segtabp[i] = &(fs->clfs_segtab[i]);
fs->clfs_segtab[i].flags = 0x0;
}
@@ -200,6 +202,7 @@ init_unmounted_fs(struct clfs *fs, char
int
init_fs(struct clfs *fs, char *fsname)
{
+ char mnttmp[sizeof(fs->lfs_dlfs.dlfs_fsmnt)];
struct statvfs sf;
int rootfd;
int i;
@@ -261,7 +264,9 @@ init_fs(struct clfs *fs, char *fsname)
}
/* Assume fsname is the mounted name */
- strncpy((char *)fs->lfs_fsmnt, fsname, MNAMELEN);
+ strncpy(mnttmp, fsname, sizeof(mnttmp));
+ mnttmp[sizeof(mnttmp) - 1] = '\0';
+ memcpy(fs->lfs_dlfs.dlfs_fsmnt, mnttmp, sizeof(mnttmp));
/* Set up vnodes for Ifile and raw device */
fs->lfs_ivnode = fd_vget(fs->clfs_ifilefd, clfs_sb_getbsize(fs), 0, 0);
@@ -269,9 +274,9 @@ init_fs(struct clfs *fs, char *fsname)
atatime);
/* Allocate and clear segtab */
- fs->clfs_segtab = (struct clfs_seguse *)malloc(fs->lfs_nseg *
+ fs->clfs_segtab = (struct clfs_seguse *)malloc(lfs_sb_getnseg(fs) *
sizeof(*fs->clfs_segtab));
- fs->clfs_segtabp = (struct clfs_seguse **)malloc(fs->lfs_nseg *
+ fs->clfs_segtabp = (struct clfs_seguse **)malloc(lfs_sb_getnseg(fs) *
sizeof(*fs->clfs_segtabp));
if (fs->clfs_segtab == NULL || fs->clfs_segtabp == NULL) {
syslog(LOG_ERR, "%s: couldn't malloc segment table: %m",
@@ -279,7 +284,7 @@ init_fs(struct clfs *fs, char *fsname)
return -1;
}
- for (i = 0; i < fs->lfs_nseg; i++) {
+ for (i = 0; i < lfs_sb_getnseg(fs); i++) {
fs->clfs_segtabp[i] = &(fs->clfs_segtab[i]);
fs->clfs_segtab[i].flags = 0x0;
}
@@ -316,7 +321,7 @@ reload_ifile(struct clfs *fs)
ohashmax = hashmax;
bufrehash(st.st_size / clfs_sb_getbsize(fs));
dlog("%s: resized buffer hash from %d to %d",
- fs->lfs_fsmnt, ohashmax, hashmax);
+ lfs_sb_getfsmnt(fs), ohashmax, hashmax);
}
}
@@ -335,7 +340,7 @@ lfs_ientry(IFILE **ifpp, struct clfs *fs
lfs_sb_getsegtabsz(fs), clfs_sb_getbsize(fs), 0, bpp);
if (error)
syslog(LOG_ERR, "%s: ientry failed for ino %d",
- fs->lfs_fsmnt, (int)ino);
+ lfs_sb_getfsmnt(fs), (int)ino);
*ifpp = (IFILE *)(*bpp)->b_data + ino % lfs_sb_getifpb(fs);
return;
}
@@ -400,7 +405,7 @@ parse_pseg(struct clfs *fs, daddr_t dadd
*/
cp = fd_ptrget(fs->clfs_devvp, daddr);
ssp = (SEGSUM *)cp;
- iaddrp = ((int32_t *)(cp + fs->lfs_ibsize)) - 1;
+ iaddrp = ((int32_t *)(cp + lfs_sb_getibsize(fs))) - 1;
fip = (FINFO *)(cp + sizeof(SEGSUM));
/*
@@ -408,14 +413,14 @@ parse_pseg(struct clfs *fs, daddr_t dadd
*/
if (ssp->ss_magic != SS_MAGIC) {
syslog(LOG_WARNING, "%s: sumsum magic number bad at 0x%x:"
- " read 0x%x, expected 0x%x", fs->lfs_fsmnt,
+ " read 0x%x, expected 0x%x", lfs_sb_getfsmnt(fs),
(int32_t)daddr, ssp->ss_magic, SS_MAGIC);
return 0x0;
}
- ck = cksum(&ssp->ss_datasum, fs->lfs_sumsize - sizeof(ssp->ss_sumsum));
+ ck = cksum(&ssp->ss_datasum, lfs_sb_getsumsize(fs) - sizeof(ssp->ss_sumsum));
if (ck != ssp->ss_sumsum) {
syslog(LOG_WARNING, "%s: sumsum checksum mismatch at 0x%x:"
- " read 0x%x, computed 0x%x", fs->lfs_fsmnt,
+ " read 0x%x, computed 0x%x", lfs_sb_getfsmnt(fs),
(int32_t)daddr, ssp->ss_sumsum, ck);
return 0x0;
}
@@ -439,7 +444,7 @@ parse_pseg(struct clfs *fs, daddr_t dadd
*/
if (fic >= ssp->ss_nfinfo && *iaddrp != daddr) {
syslog(LOG_WARNING, "%s: bad pseg at %x (seg %d)",
- fs->lfs_fsmnt, odaddr, lfs_dtosn(fs, odaddr));
+ lfs_sb_getfsmnt(fs), odaddr, lfs_dtosn(fs, odaddr));
*bipp = bip;
return 0x0;
}
@@ -451,7 +456,7 @@ parse_pseg(struct clfs *fs, daddr_t dadd
cp = fd_ptrget(fs->clfs_devvp, daddr);
ck = lfs_cksum_part(cp, sizeof(u_int32_t), ck);
dip = (struct ulfs1_dinode *)cp;
- for (i = 0; i < fs->lfs_inopb; i++) {
+ for (i = 0; i < lfs_sb_getinopb(fs); i++) {
if (dip[i].di_inumber == 0)
break;
@@ -488,7 +493,7 @@ parse_pseg(struct clfs *fs, daddr_t dadd
bip[*bic - 1].bi_size = LFS_DINODE1_SIZE;
}
inoc += i;
- daddr += lfs_btofsb(fs, fs->lfs_ibsize);
+ daddr += lfs_btofsb(fs, lfs_sb_getibsize(fs));
--iaddrp;
continue;
}
@@ -519,7 +524,7 @@ parse_pseg(struct clfs *fs, daddr_t dadd
nssp = (SEGSUM *)nbp->b_data;
--nssp->ss_nfinfo;
nssp->ss_sumsum = cksum(&nssp->ss_datasum,
- fs->lfs_sumsize - sizeof(nssp->ss_sumsum));
+ lfs_sb_getsumsize(fs) - sizeof(nssp->ss_sumsum));
bwrite(nbp);
#endif
syslog(LOG_WARNING, "zero-length FINFO at %x (seg %d)",
@@ -586,7 +591,7 @@ parse_pseg(struct clfs *fs, daddr_t dadd
#ifndef REPAIR_ZERO_FINFO
if (ssp->ss_datasum != ck) {
syslog(LOG_WARNING, "%s: data checksum bad at 0x%x:"
- " read 0x%x, computed 0x%x", fs->lfs_fsmnt, odaddr,
+ " read 0x%x, computed 0x%x", lfs_sb_getfsmnt(fs), odaddr,
ssp->ss_datasum, ck);
*bic = obic;
return 0x0;
@@ -639,7 +644,7 @@ load_segment(struct clfs *fs, int sn, BL
if (daddr < lfs_btofsb(fs, LFS_LABELPAD))
daddr = lfs_btofsb(fs, LFS_LABELPAD);
for (i = 0; i < LFS_MAXNUMSB; i++) {
- if (fs->lfs_sboffs[i] == daddr) {
+ if (lfs_sb_getsboff(fs, i) == daddr) {
daddr += lfs_btofsb(fs, LFS_SBPAD);
break;
}
@@ -819,7 +824,7 @@ toss_old_blocks(struct clfs *fs, BLOCK_I
lim.blkcnt = *bic;
if ((r = kops.ko_fcntl(fs->clfs_ifilefd, LFCNBMAPV, &lim)) < 0) {
syslog(LOG_WARNING, "%s: bmapv returned %d (%m)",
- fs->lfs_fsmnt, r);
+ lfs_sb_getfsmnt(fs), r);
return;
}
@@ -856,7 +861,7 @@ invalidate_segment(struct clfs *fs, int
int blkcnt;
} */ lim;
- dlog("%s: inval seg %d", fs->lfs_fsmnt, sn);
+ dlog("%s: inval seg %d", lfs_sb_getfsmnt(fs), sn);
bip = NULL;
bic = 0;
@@ -880,7 +885,7 @@ invalidate_segment(struct clfs *fs, int
lim.blkcnt = bic;
if ((r = kops.ko_fcntl(fs->clfs_ifilefd, LFCNMARKV, &lim)) < 0) {
syslog(LOG_WARNING, "%s: markv returned %d (%m) "
- "for seg %d", fs->lfs_fsmnt, r, sn);
+ "for seg %d", lfs_sb_getfsmnt(fs), r, sn);
return r;
}
@@ -889,7 +894,7 @@ invalidate_segment(struct clfs *fs, int
*/
if ((r = kops.ko_fcntl(fs->clfs_ifilefd, LFCNINVAL, &sn)) < 0) {
syslog(LOG_WARNING, "%s: inval returned %d (%m) "
- "for seg %d", fs->lfs_fsmnt, r, sn);
+ "for seg %d", lfs_sb_getfsmnt(fs), r, sn);
return r;
}
@@ -1035,12 +1040,12 @@ clean_fs(struct clfs *fs, CLEANERINFO *c
}
/* Sort segments based on cleanliness, fulness, and condition */
- heapsort(fs->clfs_segtabp, fs->lfs_nseg, sizeof(struct clfs_seguse *),
+ heapsort(fs->clfs_segtabp, lfs_sb_getnseg(fs), sizeof(struct clfs_seguse *),
cb_comparator);
/* If no segment is cleanable, just return */
if (fs->clfs_segtabp[0]->priority == 0) {
- dlog("%s: no segment cleanable", fs->lfs_fsmnt);
+ dlog("%s: no segment cleanable", lfs_sb_getfsmnt(fs));
return 0;
}
@@ -1057,12 +1062,12 @@ clean_fs(struct clfs *fs, CLEANERINFO *c
dlog("%s: cleaning with goal %" PRId64
" bytes (%d segs clean, %d cleanable)",
- fs->lfs_fsmnt, goal, cip->clean, npos);
+ lfs_sb_getfsmnt(fs), goal, cip->clean, npos);
syslog(LOG_INFO, "%s: cleaning with goal %" PRId64
" bytes (%d segs clean, %d cleanable)",
- fs->lfs_fsmnt, goal, cip->clean, npos);
+ lfs_sb_getfsmnt(fs), goal, cip->clean, npos);
totbytes = 0;
- for (i = 0; i < fs->lfs_nseg && totbytes < goal; i++) {
+ for (i = 0; i < lfs_sb_getnseg(fs) && totbytes < goal; i++) {
if (fs->clfs_segtabp[i]->priority == 0)
break;
/* Upper bound on number of segments at once */
@@ -1071,7 +1076,7 @@ clean_fs(struct clfs *fs, CLEANERINFO *c
sn = (fs->clfs_segtabp[i] - fs->clfs_segtab);
dlog("%s: add seg %d prio %" PRIu64
" containing %ld bytes",
- fs->lfs_fsmnt, sn, fs->clfs_segtabp[i]->priority,
+ lfs_sb_getfsmnt(fs), sn, fs->clfs_segtabp[i]->priority,
fs->clfs_segtabp[i]->nbytes);
if ((r = load_segment(fs, sn, &bip, &bic)) > 0) {
++ngood;
@@ -1089,13 +1094,13 @@ clean_fs(struct clfs *fs, CLEANERINFO *c
goal = MAX(cip->clean - 1, 1);
dlog("%s: cleaning with goal %d segments (%d clean, %d cleanable)",
- fs->lfs_fsmnt, (int)goal, cip->clean, npos);
- for (i = 0; i < fs->lfs_nseg && ngood < goal; i++) {
+ lfs_sb_getfsmnt(fs), (int)goal, cip->clean, npos);
+ for (i = 0; i < lfs_sb_getnseg(fs) && ngood < goal; i++) {
if (fs->clfs_segtabp[i]->priority == 0)
break;
sn = (fs->clfs_segtabp[i] - fs->clfs_segtab);
dlog("%s: add seg %d prio %" PRIu64,
- fs->lfs_fsmnt, sn, fs->clfs_segtabp[i]->priority);
+ lfs_sb_getfsmnt(fs), sn, fs->clfs_segtabp[i]->priority);
if ((r = load_segment(fs, sn, &bip, &bic)) > 0)
++ngood;
else if (r == 0)
@@ -1109,7 +1114,7 @@ clean_fs(struct clfs *fs, CLEANERINFO *c
/* If there is nothing to do, try again later. */
if (bic == 0) {
dlog("%s: no blocks to clean in %d cleanable segments",
- fs->lfs_fsmnt, (int)ngood);
+ lfs_sb_getfsmnt(fs), (int)ngood);
fd_release_all(fs->clfs_devvp);
return 0;
}
@@ -1152,16 +1157,16 @@ clean_fs(struct clfs *fs, CLEANERINFO *c
if ((r = kops.ko_fcntl(fs->clfs_ifilefd, LFCNMARKV, &lim))<0) {
int oerrno = errno;
syslog(LOG_WARNING, "%s: markv returned %d (errno %d, %m)",
- fs->lfs_fsmnt, r, errno);
+ lfs_sb_getfsmnt(fs), r, errno);
if (oerrno != EAGAIN && oerrno != ESHUTDOWN) {
syslog(LOG_DEBUG, "%s: errno %d, returning",
- fs->lfs_fsmnt, oerrno);
+ lfs_sb_getfsmnt(fs), oerrno);
fd_release_all(fs->clfs_devvp);
return r;
}
if (oerrno == ESHUTDOWN) {
syslog(LOG_NOTICE, "%s: filesystem unmounted",
- fs->lfs_fsmnt);
+ lfs_sb_getfsmnt(fs));
fd_release_all(fs->clfs_devvp);
return r;
}
@@ -1175,14 +1180,14 @@ clean_fs(struct clfs *fs, CLEANERINFO *c
PRId64 " supporting indirect + %"
PRId64 " supporting Ifile = %"
PRId64 " bytes to clean %d segs (%" PRId64 "%% recovery)",
- fs->lfs_fsmnt, (int64_t)nb, (int64_t)(extra - if_extra),
+ lfs_sb_getfsmnt(fs), (int64_t)nb, (int64_t)(extra - if_extra),
(int64_t)if_extra, (int64_t)(nb + extra), ngood,
(ngood ? (int64_t)(100 - (100 * (nb + extra)) /
(ngood * clfs_sb_getssize(fs))) :
(int64_t)0));
if (nb + extra >= ngood * clfs_sb_getssize(fs))
syslog(LOG_WARNING, "%s: cleaner not making forward progress",
- fs->lfs_fsmnt);
+ lfs_sb_getfsmnt(fs));
/*
* Finally call reclaim to prompt cleaning of the segments.
@@ -1217,7 +1222,7 @@ needs_cleaning(struct clfs *fs, CLEANERI
* handing it back.
*/
if (bread(fs->lfs_ivnode, 0, clfs_sb_getbsize(fs), 0, &bp)) {
- syslog(LOG_ERR, "%s: can't read inode", fs->lfs_fsmnt);
+ syslog(LOG_ERR, "%s: can't read inode", lfs_sb_getfsmnt(fs));
return -1;
}
*cip = *(CLEANERINFO *)bp->b_data; /* Structure copy */
@@ -1229,24 +1234,25 @@ needs_cleaning(struct clfs *fs, CLEANERI
* We don't have to start over from scratch, however,
* since we don't hold any buffers.
*/
- if (fs->lfs_nseg != cip->clean + cip->dirty) {
+ if (lfs_sb_getnseg(fs) != cip->clean + cip->dirty) {
if (reinit_fs(fs) < 0) {
/* The normal case for unmount */
- syslog(LOG_NOTICE, "%s: filesystem unmounted", fs->lfs_fsmnt);
+ syslog(LOG_NOTICE, "%s: filesystem unmounted", lfs_sb_getfsmnt(fs));
return -1;
}
- syslog(LOG_NOTICE, "%s: nsegs changed", fs->lfs_fsmnt);
+ syslog(LOG_NOTICE, "%s: nsegs changed", lfs_sb_getfsmnt(fs));
}
/* Compute theoretical "free segments" maximum based on usage */
fsb_per_seg = lfs_segtod(fs, 1);
- max_free_segs = MAX(cip->bfree, 0) / fsb_per_seg + fs->lfs_minfreeseg;
+ max_free_segs = MAX(cip->bfree, 0) / fsb_per_seg + lfs_sb_getminfreeseg(fs);
dlog("%s: bfree = %d, avail = %d, clean = %d/%d",
- fs->lfs_fsmnt, cip->bfree, cip->avail, cip->clean, fs->lfs_nseg);
+ lfs_sb_getfsmnt(fs), cip->bfree, cip->avail, cip->clean,
+ lfs_sb_getnseg(fs));
/* If the writer is waiting on us, clean it */
- if (cip->clean <= fs->lfs_minfreeseg ||
+ if (cip->clean <= lfs_sb_getminfreeseg(fs) ||
(cip->flags & LFS_CLEANER_MUST_CLEAN))
return 1;
@@ -1270,7 +1276,7 @@ needs_cleaning(struct clfs *fs, CLEANERI
time(&now);
if (fstat(fs->clfs_ifilefd, &st) < 0) {
syslog(LOG_ERR, "%s: failed to stat ifile",
- fs->lfs_fsmnt);
+ lfs_sb_getfsmnt(fs));
return -1;
}
if (now - st.st_mtime > segwait_timeout &&
@@ -1280,7 +1286,7 @@ needs_cleaning(struct clfs *fs, CLEANERI
/* CPU idle - use one-minute load avg */
if (getloadavg(&loadavg, 1) == -1) {
syslog(LOG_ERR, "%s: failed to get load avg",
- fs->lfs_fsmnt);
+ lfs_sb_getfsmnt(fs));
return -1;
}
if (loadavg < load_threshold &&
Index: src/sbin/dump_lfs/lfs_inode.c
diff -u src/sbin/dump_lfs/lfs_inode.c:1.20 src/sbin/dump_lfs/lfs_inode.c:1.21
--- src/sbin/dump_lfs/lfs_inode.c:1.20 Fri Jul 24 06:56:41 2015
+++ src/sbin/dump_lfs/lfs_inode.c Fri Jul 24 06:59:31 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs_inode.c,v 1.20 2015/07/24 06:56:41 dholland Exp $ */
+/* $NetBSD: lfs_inode.c,v 1.21 2015/07/24 06:59:31 dholland Exp $ */
/*-
* Copyright (c) 1980, 1991, 1993, 1994
@@ -39,7 +39,7 @@ __COPYRIGHT("@(#) Copyright (c) 1980, 19
#if 0
static char sccsid[] = "@(#)main.c 8.6 (Berkeley) 5/1/95";
#else
-__RCSID("$NetBSD: lfs_inode.c,v 1.20 2015/07/24 06:56:41 dholland Exp $");
+__RCSID("$NetBSD: lfs_inode.c,v 1.21 2015/07/24 06:59:31 dholland Exp $");
#endif
#endif /* not lint */
@@ -95,8 +95,8 @@ fs_read_sblock(char *superblock)
#endif
quit("bad sblock magic number\n");
}
- if (lfs_fsbtob(sblock, (off_t)sblock->lfs_sboffs[0]) != sboff) {
- sboff = lfs_fsbtob(sblock, (off_t)sblock->lfs_sboffs[0]);
+ if (lfs_fsbtob(sblock, (off_t)lfs_sb_getsboff(sblock, 0)) != sboff) {
+ sboff = lfs_fsbtob(sblock, (off_t)lfs_sb_getsboff(sblock, 0));
continue;
}
break;
@@ -105,7 +105,7 @@ fs_read_sblock(char *superblock)
/*
* Read the secondary and take the older of the two
*/
- rawread(lfs_fsbtob(sblock, (off_t)sblock->lfs_sboffs[1]), u.tbuf,
+ rawread(lfs_fsbtob(sblock, (off_t)lfs_sb_getsboff(sblock, 1)), u.tbuf,
sizeof(u.tbuf));
#ifdef notyet
if (ns)
@@ -113,17 +113,17 @@ fs_read_sblock(char *superblock)
#endif
if (u.lfss.lfs_magic != LFS_MAGIC) {
msg("Warning: secondary superblock at 0x%" PRIx64 " bad magic\n",
- LFS_FSBTODB(sblock, (off_t)sblock->lfs_sboffs[1]));
+ LFS_FSBTODB(sblock, (off_t)lfs_sb_getsboff(sblock, 1)));
} else {
if (sblock->lfs_version > 1) {
if (lfs_sb_getserial(&u.lfss) < lfs_sb_getserial(sblock)) {
memcpy(sblock, u.tbuf, sizeof(u.tbuf));
- sboff = lfs_fsbtob(sblock, (off_t)sblock->lfs_sboffs[1]);
+ sboff = lfs_fsbtob(sblock, (off_t)lfs_sb_getsboff(sblock, 1));
}
} else {
if (lfs_sb_getotstamp(&u.lfss) < lfs_sb_getotstamp(sblock)) {
memcpy(sblock, u.tbuf, sizeof(u.tbuf));
- sboff = lfs_fsbtob(sblock, (off_t)sblock->lfs_sboffs[1]);
+ sboff = lfs_fsbtob(sblock, (off_t)lfs_sb_getsboff(sblock, 1));
}
}
}
@@ -148,23 +148,23 @@ fs_parametrize(void)
ufsi.ufs_dsize = LFS_FSBTODB(sblock, lfs_sb_getsize(sblock));
if (sblock->lfs_version == 1)
- ufsi.ufs_dsize = lfs_sb_getsize(sblock) >> sblock->lfs_blktodb;
+ ufsi.ufs_dsize = lfs_sb_getsize(sblock) >> lfs_sb_getblktodb(sblock);
ufsi.ufs_bsize = lfs_sb_getbsize(sblock);
- ufsi.ufs_bshift = sblock->lfs_bshift;
+ ufsi.ufs_bshift = lfs_sb_getbshift(sblock);
ufsi.ufs_fsize = lfs_sb_getfsize(sblock);
ufsi.ufs_frag = lfs_sb_getfrag(sblock);
- ufsi.ufs_fsatoda = sblock->lfs_fsbtodb;
+ ufsi.ufs_fsatoda = lfs_sb_getfsbtodb(sblock);
if (sblock->lfs_version == 1)
ufsi.ufs_fsatoda = 0;
- ufsi.ufs_nindir = sblock->lfs_nindir;
- ufsi.ufs_inopb = sblock->lfs_inopb;
- ufsi.ufs_maxsymlinklen = sblock->lfs_maxsymlinklen;
- ufsi.ufs_bmask = ~(sblock->lfs_bmask);
- ufsi.ufs_qbmask = sblock->lfs_bmask;
- ufsi.ufs_fmask = ~(sblock->lfs_ffmask);
- ufsi.ufs_qfmask = sblock->lfs_ffmask;
+ ufsi.ufs_nindir = lfs_sb_getnindir(sblock);
+ ufsi.ufs_inopb = lfs_sb_getinopb(sblock);
+ ufsi.ufs_maxsymlinklen = lfs_sb_getmaxsymlinklen(sblock);
+ ufsi.ufs_bmask = ~(lfs_sb_getbmask(sblock));
+ ufsi.ufs_qbmask = lfs_sb_getbmask(sblock);
+ ufsi.ufs_fmask = ~(lfs_sb_getffmask(sblock));
+ ufsi.ufs_qfmask = lfs_sb_getffmask(sblock);
- dev_bsize = lfs_sb_getbsize(sblock) >> sblock->lfs_blktodb;
+ dev_bsize = lfs_sb_getbsize(sblock) >> lfs_sb_getblktodb(sblock);
return &ufsi;
}
Index: src/sbin/fsck_lfs/inode.c
diff -u src/sbin/fsck_lfs/inode.c:1.55 src/sbin/fsck_lfs/inode.c:1.56
--- src/sbin/fsck_lfs/inode.c:1.55 Fri Jul 24 06:56:41 2015
+++ src/sbin/fsck_lfs/inode.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: inode.c,v 1.55 2015/07/24 06:56:41 dholland Exp $ */
+/* $NetBSD: inode.c,v 1.56 2015/07/24 06:59:32 dholland Exp $ */
/*-
* Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
@@ -137,8 +137,8 @@ ckinode(struct ulfs1_dinode *dp, struct
idesc->id_filesize = dp->di_size;
mode = dp->di_mode & LFS_IFMT;
if (mode == LFS_IFBLK || mode == LFS_IFCHR ||
- (mode == LFS_IFLNK && (dp->di_size < fs->lfs_maxsymlinklen ||
- (fs->lfs_maxsymlinklen == 0 &&
+ (mode == LFS_IFLNK && (dp->di_size < lfs_sb_getmaxsymlinklen(fs) ||
+ (lfs_sb_getmaxsymlinklen(fs) == 0 &&
dp->di_blocks == 0))))
return (KEEPON);
dino = *dp;
Index: src/sbin/fsck_lfs/lfs.c
diff -u src/sbin/fsck_lfs/lfs.c:1.46 src/sbin/fsck_lfs/lfs.c:1.47
--- src/sbin/fsck_lfs/lfs.c:1.46 Fri Jul 24 06:56:41 2015
+++ src/sbin/fsck_lfs/lfs.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs.c,v 1.46 2015/07/24 06:56:41 dholland Exp $ */
+/* $NetBSD: lfs.c,v 1.47 2015/07/24 06:59:32 dholland Exp $ */
/*-
* Copyright (c) 2003 The NetBSD Foundation, Inc.
* All rights reserved.
@@ -249,7 +249,7 @@ ulfs_getlbns(struct lfs * fs, struct uvn
bn = -bn;
lognindir = -1;
- for (indir = fs->lfs_nindir; indir; indir >>= 1)
+ for (indir = lfs_sb_getnindir(fs); indir; indir >>= 1)
++lognindir;
/* Determine the number of levels of indirection. After this loop is
@@ -287,7 +287,7 @@ ulfs_getlbns(struct lfs * fs, struct uvn
lbc -= lognindir;
blockcnt = (int64_t) 1 << lbc;
- off = (bn >> lbc) & (fs->lfs_nindir - 1);
+ off = (bn >> lbc) & (lfs_sb_getnindir(fs) - 1);
++numlevels;
ap->in_lbn = metalbn;
@@ -366,7 +366,7 @@ lfs_raw_vget(struct lfs * fs, ino_t ino,
/* Load inode block and find inode */
if (daddr > 0) {
- bread(fs->lfs_devvp, LFS_FSBTODB(fs, daddr), fs->lfs_ibsize,
+ bread(fs->lfs_devvp, LFS_FSBTODB(fs, daddr), lfs_sb_getibsize(fs),
0, &bp);
bp->b_flags |= B_AGE;
dip = lfs_ifind(fs, ino, bp);
@@ -416,7 +416,7 @@ lfs_vget(void *vfs, ino_t ino)
LFS_IENTRY(ifp, fs, ino, bp);
daddr = ifp->if_daddr;
brelse(bp, 0);
- if (daddr <= 0 || lfs_dtosn(fs, daddr) >= fs->lfs_nseg)
+ if (daddr <= 0 || lfs_dtosn(fs, daddr) >= lfs_sb_getnseg(fs))
return NULL;
return lfs_raw_vget(fs, ino, fs->lfs_ivnode->v_fd, daddr);
}
@@ -435,9 +435,9 @@ check_sb(struct lfs *fs)
}
/* checksum */
checksum = lfs_sb_cksum(&(fs->lfs_dlfs));
- if (fs->lfs_cksum != checksum) {
+ if (lfs_sb_getcksum(fs) != checksum) {
printf("Superblock checksum (%lx) does not match computed checksum (%lx)\n",
- (unsigned long) fs->lfs_cksum, (unsigned long) checksum);
+ (unsigned long) lfs_sb_getcksum(fs), (unsigned long) checksum);
return 1;
}
return 0;
@@ -486,10 +486,10 @@ lfs_init(int devfd, daddr_t sblkno, dadd
bp->b_flags |= B_INVAL;
brelse(bp, 0);
- dev_bsize = lfs_sb_getfsize(fs) >> fs->lfs_fsbtodb;
+ dev_bsize = lfs_sb_getfsize(fs) >> lfs_sb_getfsbtodb(fs);
if (tryalt) {
- (void)bread(devvp, LFS_FSBTODB(fs, fs->lfs_sboffs[1]),
+ (void)bread(devvp, LFS_FSBTODB(fs, lfs_sb_getsboff(fs, 1)),
LFS_SBPAD, 0, &bp);
altfs = ecalloc(1, sizeof(*altfs));
altfs->lfs_dlfs = *((struct dlfs *) bp->b_data);
@@ -526,17 +526,17 @@ lfs_init(int devfd, daddr_t sblkno, dadd
/* Compatibility */
if (fs->lfs_version < 2) {
- fs->lfs_sumsize = LFS_V1_SUMMARY_SIZE;
- fs->lfs_ibsize = lfs_sb_getbsize(fs);
- fs->lfs_s0addr = fs->lfs_sboffs[0];
+ lfs_sb_setsumsize(fs, LFS_V1_SUMMARY_SIZE);
+ lfs_sb_setibsize(fs, lfs_sb_getbsize(fs));
+ lfs_sb_sets0addr(fs, lfs_sb_getsboff(fs, 0));
lfs_sb_settstamp(fs, lfs_sb_getotstamp(fs));
- fs->lfs_fsbtodb = 0;
+ lfs_sb_setfsbtodb(fs, 0);
}
if (!dummy_read) {
fs->lfs_suflags = emalloc(2 * sizeof(u_int32_t *));
- fs->lfs_suflags[0] = emalloc(fs->lfs_nseg * sizeof(u_int32_t));
- fs->lfs_suflags[1] = emalloc(fs->lfs_nseg * sizeof(u_int32_t));
+ fs->lfs_suflags[0] = emalloc(lfs_sb_getnseg(fs) * sizeof(u_int32_t));
+ fs->lfs_suflags[1] = emalloc(lfs_sb_getnseg(fs) * sizeof(u_int32_t));
}
if (idaddr == 0)
@@ -586,18 +586,18 @@ try_verify(struct lfs *osb, struct uvnod
* Don't mistakenly read a superblock, if there is one here.
*/
if (lfs_sntod(osb, lfs_dtosn(osb, daddr)) == daddr) {
- if (daddr == osb->lfs_s0addr)
+ if (daddr == lfs_sb_gets0addr(osb))
daddr += lfs_btofsb(osb, LFS_LABELPAD);
for (i = 0; i < LFS_MAXNUMSB; i++) {
- if (osb->lfs_sboffs[i] < daddr)
+ if (lfs_sb_getsboff(osb, i) < daddr)
break;
- if (osb->lfs_sboffs[i] == daddr)
+ if (lfs_sb_getsboff(osb, i) == daddr)
daddr += lfs_btofsb(osb, LFS_SBPAD);
}
}
/* Read in summary block */
- bread(devvp, LFS_FSBTODB(osb, daddr), osb->lfs_sumsize,
+ bread(devvp, LFS_FSBTODB(osb, daddr), lfs_sb_getsumsize(osb),
0, &bp);
sp = (SEGSUM *)bp->b_data;
@@ -605,30 +605,31 @@ try_verify(struct lfs *osb, struct uvnod
* Check for a valid segment summary belonging to our fs.
*/
if (sp->ss_magic != SS_MAGIC ||
- sp->ss_ident != osb->lfs_ident ||
+ sp->ss_ident != lfs_sb_getident(osb) ||
sp->ss_serial < serial || /* XXX strengthen this */
- sp->ss_sumsum != cksum(&sp->ss_datasum, osb->lfs_sumsize -
+ sp->ss_sumsum != cksum(&sp->ss_datasum, lfs_sb_getsumsize(osb) -
sizeof(sp->ss_sumsum))) {
brelse(bp, 0);
if (debug) {
if (sp->ss_magic != SS_MAGIC)
- pwarn("pseg at 0x%x: "
+ pwarn("pseg at 0x%jx: "
"wrong magic number\n",
- (int)daddr);
- else if (sp->ss_ident != osb->lfs_ident)
- pwarn("pseg at 0x%x: "
- "expected ident %llx, got %llx\n",
- (int)daddr,
- (long long)sp->ss_ident,
- (long long)osb->lfs_ident);
+ (uintmax_t)daddr);
+ else if (sp->ss_ident != lfs_sb_getident(osb))
+ pwarn("pseg at 0x%jx: "
+ "expected ident %jx, got %jx\n",
+ (uintmax_t)daddr,
+ (uintmax_t)sp->ss_ident,
+ (uintmax_t)lfs_sb_getident(osb));
else if (sp->ss_serial >= serial)
- pwarn("pseg at 0x%x: "
- "serial %d < %d\n", (int)daddr,
+ pwarn("pseg at 0x%jx: "
+ "serial %d < %d\n",
+ (uintmax_t)daddr,
(int)sp->ss_serial, (int)serial);
else
- pwarn("pseg at 0x%x: "
+ pwarn("pseg at 0x%jx: "
"summary checksum wrong\n",
- (int)daddr);
+ (uintmax_t)daddr);
}
break;
}
@@ -646,10 +647,10 @@ try_verify(struct lfs *osb, struct uvnod
(int)sp->ss_serial);
assert (bc > 0);
odaddr = daddr;
- daddr += lfs_btofsb(osb, osb->lfs_sumsize + bc);
+ daddr += lfs_btofsb(osb, lfs_sb_getsumsize(osb) + bc);
if (lfs_dtosn(osb, odaddr) != lfs_dtosn(osb, daddr) ||
lfs_dtosn(osb, daddr) != lfs_dtosn(osb, daddr +
- lfs_btofsb(osb, osb->lfs_sumsize + lfs_sb_getbsize(osb)) - 1)) {
+ lfs_btofsb(osb, lfs_sb_getsumsize(osb) + lfs_sb_getbsize(osb)) - 1)) {
daddr = sp->ss_next;
}
@@ -754,28 +755,28 @@ check_summary(struct lfs *fs, SEGSUM *sp
/* Count the blocks. */
nblocks = howmany(sp->ss_ninos, LFS_INOPB(fs));
- bc = nblocks << (fs->lfs_version > 1 ? fs->lfs_ffshift : fs->lfs_bshift);
+ bc = nblocks << (fs->lfs_version > 1 ? lfs_sb_getffshift(fs) : lfs_sb_getbshift(fs));
assert(bc >= 0);
fp = (FINFO *) (sp + 1);
for (i = 0; i < sp->ss_nfinfo; i++) {
nblocks += fp->fi_nblocks;
bc += fp->fi_lastlength + ((fp->fi_nblocks - 1)
- << fs->lfs_bshift);
+ << lfs_sb_getbshift(fs));
assert(bc >= 0);
fp = (FINFO *) (fp->fi_blocks + fp->fi_nblocks);
- if (((char *)fp) - (char *)sp > fs->lfs_sumsize)
+ if (((char *)fp) - (char *)sp > lfs_sb_getsumsize(fs))
return 0;
}
datap = emalloc(nblocks * sizeof(*datap));
datac = 0;
dp = (ulfs_daddr_t *) sp;
- dp += fs->lfs_sumsize / sizeof(ulfs_daddr_t);
+ dp += lfs_sb_getsumsize(fs) / sizeof(ulfs_daddr_t);
dp--;
idp = dp;
- daddr = pseg_addr + lfs_btofsb(fs, fs->lfs_sumsize);
+ daddr = pseg_addr + lfs_btofsb(fs, lfs_sb_getsumsize(fs));
fp = (FINFO *) (sp + 1);
for (i = 0, j = 0;
i < sp->ss_nfinfo || j < howmany(sp->ss_ninos, LFS_INOPB(fs)); i++) {
@@ -789,13 +790,13 @@ check_summary(struct lfs *fs, SEGSUM *sp
break;
}
while (j < howmany(sp->ss_ninos, LFS_INOPB(fs)) && *idp == daddr) {
- bread(devvp, LFS_FSBTODB(fs, daddr), fs->lfs_ibsize,
+ bread(devvp, LFS_FSBTODB(fs, daddr), lfs_sb_getibsize(fs),
0, &bp);
datap[datac++] = ((u_int32_t *) (bp->b_data))[0];
brelse(bp, 0);
++j;
- daddr += lfs_btofsb(fs, fs->lfs_ibsize);
+ daddr += lfs_btofsb(fs, lfs_sb_getibsize(fs));
--idp;
}
if (i < sp->ss_nfinfo) {
@@ -946,7 +947,7 @@ extend_ifile(struct lfs *fs)
LFS_BWRITE_LOG(bp);
#ifdef IN_FSCK_LFS
- reset_maxino(((ip->i_ffs1_size >> fs->lfs_bshift)
+ reset_maxino(((ip->i_ffs1_size >> lfs_sb_getbshift(fs))
- lfs_sb_getsegtabsz(fs)
- lfs_sb_getcleansz(fs)) * lfs_sb_getifpb(fs));
#endif
Index: src/sbin/fsck_lfs/main.c
diff -u src/sbin/fsck_lfs/main.c:1.50 src/sbin/fsck_lfs/main.c:1.51
--- src/sbin/fsck_lfs/main.c:1.50 Fri Jul 24 06:56:41 2015
+++ src/sbin/fsck_lfs/main.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: main.c,v 1.50 2015/07/24 06:56:41 dholland Exp $ */
+/* $NetBSD: main.c,v 1.51 2015/07/24 06:59:32 dholland Exp $ */
/*
* Copyright (c) 1980, 1986, 1993
@@ -224,7 +224,7 @@ checkfilesys(const char *filesys, char *
* else.
*/
if (preen == 0) {
- printf("** Last Mounted on %s\n", fs->lfs_fsmnt);
+ printf("** Last Mounted on %s\n", lfs_sb_getfsmnt(fs));
if (hotroot())
printf("** Root file system\n");
/*
Index: src/sbin/fsck_lfs/pass1.c
diff -u src/sbin/fsck_lfs/pass1.c:1.38 src/sbin/fsck_lfs/pass1.c:1.39
--- src/sbin/fsck_lfs/pass1.c:1.38 Fri Jul 24 06:56:41 2015
+++ src/sbin/fsck_lfs/pass1.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: pass1.c,v 1.38 2015/07/24 06:56:41 dholland Exp $ */
+/* $NetBSD: pass1.c,v 1.39 2015/07/24 06:59:32 dholland Exp $ */
/*
* Copyright (c) 1980, 1986, 1993
@@ -227,8 +227,8 @@ checkinode(ino_t inumber, struct inodesc
* Fake ndb value so direct/indirect block checks below
* will detect any garbage after symlink string.
*/
- if (dp->di_size < fs->lfs_maxsymlinklen ||
- (fs->lfs_maxsymlinklen == 0 && dp->di_blocks == 0)) {
+ if (dp->di_size < lfs_sb_getmaxsymlinklen(fs) ||
+ (lfs_sb_getmaxsymlinklen(fs) == 0 && dp->di_blocks == 0)) {
ndb = howmany(dp->di_size, sizeof(ulfs_daddr_t));
if (ndb > ULFS_NDADDR) {
j = ndb - ULFS_NDADDR;
Index: src/sbin/fsck_lfs/utilities.c
diff -u src/sbin/fsck_lfs/utilities.c:1.38 src/sbin/fsck_lfs/utilities.c:1.39
--- src/sbin/fsck_lfs/utilities.c:1.38 Fri Jul 24 06:56:41 2015
+++ src/sbin/fsck_lfs/utilities.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: utilities.c,v 1.38 2015/07/24 06:56:41 dholland Exp $ */
+/* $NetBSD: utilities.c,v 1.39 2015/07/24 06:59:32 dholland Exp $ */
/*
* Copyright (c) 1980, 1986, 1993
@@ -120,8 +120,8 @@ write_superblocks(void)
if (debug)
pwarn("writing superblocks with lfs_idaddr = 0x%jx\n",
(uintmax_t)lfs_sb_getidaddr(fs));
- lfs_writesuper(fs, fs->lfs_sboffs[0]);
- lfs_writesuper(fs, fs->lfs_sboffs[1]);
+ lfs_writesuper(fs, lfs_sb_getsboff(fs, 0));
+ lfs_writesuper(fs, lfs_sb_getsboff(fs, 1));
fsmodified = 1;
}
@@ -138,8 +138,8 @@ ckfini(int markclean)
}
}
- if (!nflag && (fs->lfs_pflags & LFS_PF_CLEAN) == 0) {
- fs->lfs_pflags |= LFS_PF_CLEAN;
+ if (!nflag && (lfs_sb_getpflags(fs) & LFS_PF_CLEAN) == 0) {
+ lfs_sb_setpflags(fs, lfs_sb_getpflags(fs) | LFS_PF_CLEAN);
fsmodified = 1;
}
@@ -156,7 +156,7 @@ ckfini(int markclean)
else if (!reply("MARK FILE SYSTEM CLEAN"))
markclean = 0;
if (markclean) {
- fs->lfs_pflags |= LFS_PF_CLEAN;
+ lfs_sb_setpflags(fs, lfs_sb_getpflags(fs) | LFS_PF_CLEAN);
sbdirty();
write_superblocks();
if (!preen)
Index: src/sbin/fsck_lfs/pass5.c
diff -u src/sbin/fsck_lfs/pass5.c:1.30 src/sbin/fsck_lfs/pass5.c:1.31
--- src/sbin/fsck_lfs/pass5.c:1.30 Fri Jul 24 06:56:41 2015
+++ src/sbin/fsck_lfs/pass5.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: pass5.c,v 1.30 2015/07/24 06:56:41 dholland Exp $ */
+/* $NetBSD: pass5.c,v 1.31 2015/07/24 06:59:32 dholland Exp $ */
/*-
* Copyright (c) 2000, 2003 The NetBSD Foundation, Inc.
@@ -77,7 +77,7 @@ pass5(void)
avail = 0;
bb = ubb = 0;
dmeta = 0;
- for (i = 0; i < fs->lfs_nseg; i++) {
+ for (i = 0; i < lfs_sb_getnseg(fs); i++) {
diddirty = 0;
LFS_SEGENTRY(su, fs, i, bp);
if (!preen && !(su->su_flags & SEGUSE_DIRTY) &&
@@ -106,23 +106,23 @@ pass5(void)
}
if (su->su_flags & SEGUSE_DIRTY) {
bb += lfs_btofsb(fs, su->su_nbytes +
- su->su_nsums * fs->lfs_sumsize);
+ su->su_nsums * lfs_sb_getsumsize(fs));
ubb += lfs_btofsb(fs, su->su_nbytes +
- su->su_nsums * fs->lfs_sumsize +
- su->su_ninos * fs->lfs_ibsize);
+ su->su_nsums * lfs_sb_getsumsize(fs) +
+ su->su_ninos * lfs_sb_getibsize(fs));
dmeta += lfs_btofsb(fs,
- fs->lfs_sumsize * su->su_nsums);
+ lfs_sb_getsumsize(fs) * su->su_nsums);
dmeta += lfs_btofsb(fs,
- fs->lfs_ibsize * su->su_ninos);
+ lfs_sb_getibsize(fs) * su->su_ninos);
} else {
nclean++;
avail += lfs_segtod(fs, 1);
if (su->su_flags & SEGUSE_SUPERBLOCK)
avail -= lfs_btofsb(fs, LFS_SBPAD);
if (i == 0 && fs->lfs_version > 1 &&
- fs->lfs_s0addr < lfs_btofsb(fs, LFS_LABELPAD))
+ lfs_sb_gets0addr(fs) < lfs_btofsb(fs, LFS_LABELPAD))
avail -= lfs_btofsb(fs, LFS_LABELPAD) -
- fs->lfs_s0addr;
+ lfs_sb_gets0addr(fs);
}
if (diddirty)
VOP_BWRITE(bp);
@@ -134,19 +134,19 @@ pass5(void)
i = lfs_dtosn(fs, lfs_sb_getoffset(fs));
avail += lfs_sntod(fs, i + 1) - lfs_sb_getoffset(fs);
/* But do not count minfreesegs */
- avail -= lfs_segtod(fs, (fs->lfs_minfreeseg -
- (fs->lfs_minfreeseg / 2)));
+ avail -= lfs_segtod(fs, (lfs_sb_getminfreeseg(fs) -
+ (lfs_sb_getminfreeseg(fs) / 2)));
/* Note we may have bytes to write yet */
avail -= lfs_btofsb(fs, locked_queue_bytes);
if (idaddr)
pwarn("NOTE: when using -i, expect discrepancies in dmeta,"
" avail, nclean, bfree\n");
- if (dmeta != fs->lfs_dmeta) {
- pwarn("DMETA GIVEN AS %d, SHOULD BE %ld\n", fs->lfs_dmeta,
- dmeta);
+ if (dmeta != lfs_sb_getdmeta(fs)) {
+ pwarn("DMETA GIVEN AS %d, SHOULD BE %ld\n",
+ lfs_sb_getdmeta(fs), dmeta);
if (preen || reply("FIX")) {
- fs->lfs_dmeta = dmeta;
+ lfs_sb_setdmeta(fs, dmeta);
sbdirty();
}
}
@@ -158,18 +158,18 @@ pass5(void)
sbdirty();
}
}
- if (nclean != fs->lfs_nclean) {
- pwarn("NCLEAN GIVEN AS %d, SHOULD BE %d\n", fs->lfs_nclean,
+ if (nclean != lfs_sb_getnclean(fs)) {
+ pwarn("NCLEAN GIVEN AS %d, SHOULD BE %d\n", lfs_sb_getnclean(fs),
nclean);
if (preen || reply("FIX")) {
- fs->lfs_nclean = nclean;
+ lfs_sb_setnclean(fs, nclean);
sbdirty();
}
}
labelskew = 0;
if (fs->lfs_version > 1 &&
- fs->lfs_s0addr < lfs_btofsb(fs, LFS_LABELPAD))
+ lfs_sb_gets0addr(fs) < lfs_btofsb(fs, LFS_LABELPAD))
labelskew = lfs_btofsb(fs, LFS_LABELPAD);
if (lfs_sb_getbfree(fs) > lfs_sb_getdsize(fs) - bb - labelskew ||
lfs_sb_getbfree(fs) < lfs_sb_getdsize(fs) - ubb - labelskew) {
Index: src/sbin/fsck_lfs/pass6.c
diff -u src/sbin/fsck_lfs/pass6.c:1.35 src/sbin/fsck_lfs/pass6.c:1.36
--- src/sbin/fsck_lfs/pass6.c:1.35 Fri Jul 24 06:56:41 2015
+++ src/sbin/fsck_lfs/pass6.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: pass6.c,v 1.35 2015/07/24 06:56:41 dholland Exp $ */
+/* $NetBSD: pass6.c,v 1.36 2015/07/24 06:59:32 dholland Exp $ */
/*-
* Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -152,15 +152,15 @@ rfw_update_single(struct uvnode *vp, dad
}
/* If block is beyond EOF, update size */
- if (lbn >= 0 && ip->i_ffs1_size <= (lbn << fs->lfs_bshift)) {
- ip->i_ffs1_size = (lbn << fs->lfs_bshift) + 1;
+ if (lbn >= 0 && ip->i_ffs1_size <= (lbn << lfs_sb_getbshift(fs))) {
+ ip->i_ffs1_size = (lbn << lfs_sb_getbshift(fs)) + 1;
}
/* If block frag size is too large for old EOF, update size */
if (lbn < ULFS_NDADDR) {
off_t minsize;
- minsize = (lbn << fs->lfs_bshift);
+ minsize = (lbn << lfs_sb_getbshift(fs));
minsize += (size - lfs_sb_getfsize(fs)) + 1;
if (ip->i_ffs1_size < minsize)
ip->i_ffs1_size = minsize;
@@ -292,7 +292,7 @@ pass6check(struct inodesc * idesc)
anyout = anynew = 0;
for (i = 0; i < idesc->id_numfrags; i++) {
sn = lfs_dtosn(fs, idesc->id_blkno + i);
- if (sn < 0 || sn >= fs->lfs_nseg ||
+ if (sn < 0 || sn >= lfs_sb_getnseg(fs) ||
(seg_table[sn].su_flags & SEGUSE_DIRTY) == 0) {
anyout = 1;
break;
@@ -583,7 +583,7 @@ pass6(void)
* changes to any other inode.
*/
- ibbuf = emalloc(fs->lfs_ibsize);
+ ibbuf = emalloc(lfs_sb_getibsize(fs));
nnewfiles = ndelfiles = nmvfiles = nnewblocks = 0;
daddr = lfs_sb_getoffset(fs);
hassuper = 0;
@@ -596,22 +596,22 @@ pass6(void)
/* Could be a superblock */
if (lfs_sntod(fs, lfs_dtosn(fs, daddr)) == daddr) {
- if (daddr == fs->lfs_s0addr) {
+ if (daddr == lfs_sb_gets0addr(fs)) {
++hassuper;
daddr += lfs_btofsb(fs, LFS_LABELPAD);
}
for (i = 0; i < LFS_MAXNUMSB; i++) {
- if (daddr == fs->lfs_sboffs[i]) {
+ if (daddr == lfs_sb_getsboff(fs, i)) {
++hassuper;
daddr += lfs_btofsb(fs, LFS_SBPAD);
}
- if (daddr < fs->lfs_sboffs[i])
+ if (daddr < lfs_sb_getsboff(fs, i))
break;
}
}
/* Read in summary block */
- bread(devvp, LFS_FSBTODB(fs, daddr), fs->lfs_sumsize, 0, &bp);
+ bread(devvp, LFS_FSBTODB(fs, daddr), lfs_sb_getsumsize(fs), 0, &bp);
sp = (SEGSUM *)bp->b_data;
if (debug)
pwarn("sum at 0x%x: ninos=%d nfinfo=%d\n",
@@ -622,13 +622,13 @@ pass6(void)
LFS_SEGENTRY(sup, fs, lfs_dtosn(fs, daddr), sbp);
++sup->su_nsums;
VOP_BWRITE(sbp);
- lfs_sb_subbfree(fs, lfs_btofsb(fs, fs->lfs_sumsize));
- lfs_sb_adddmeta(fs, lfs_btofsb(fs, fs->lfs_sumsize));
+ lfs_sb_subbfree(fs, lfs_btofsb(fs, lfs_sb_getsumsize(fs)));
+ lfs_sb_adddmeta(fs, lfs_btofsb(fs, lfs_sb_getsumsize(fs)));
sbdirty();
if (lfs_sntod(fs, lfs_dtosn(fs, daddr)) == daddr +
hassuper * lfs_btofsb(fs, LFS_SBPAD) &&
lfs_dtosn(fs, daddr) != lfs_dtosn(fs, lfs_sb_getoffset(fs))) {
- --fs->lfs_nclean;
+ lfs_sb_subnclean(fs, 1);
sbdirty();
}
@@ -637,21 +637,21 @@ pass6(void)
LFS_SEGENTRY(sup, fs, lfs_dtosn(fs, daddr), sbp);
sup->su_ninos += howmany(sp->ss_ninos, LFS_INOPB(fs));
VOP_BWRITE(sbp);
- fs->lfs_dmeta += lfs_btofsb(fs, howmany(sp->ss_ninos,
+ lfs_sb_adddmeta(fs, lfs_btofsb(fs, howmany(sp->ss_ninos,
LFS_INOPB(fs)) *
- fs->lfs_ibsize);
+ lfs_sb_getibsize(fs)));
}
- idaddrp = ((ulfs_daddr_t *)((char *)bp->b_data + fs->lfs_sumsize));
+ idaddrp = ((ulfs_daddr_t *)((char *)bp->b_data + lfs_sb_getsumsize(fs)));
for (i = 0; i < howmany(sp->ss_ninos, LFS_INOPB(fs)); i++) {
ino_t *inums;
inums = ecalloc(LFS_INOPB(fs) + 1, sizeof(*inums));
ibdaddr = *--idaddrp;
- lfs_sb_subbfree(fs, lfs_btofsb(fs, fs->lfs_ibsize));
+ lfs_sb_subbfree(fs, lfs_btofsb(fs, lfs_sb_getibsize(fs)));
sbdirty();
- bread(devvp, LFS_FSBTODB(fs, ibdaddr), fs->lfs_ibsize,
- 0, &ibp);
- memcpy(ibbuf, ibp->b_data, fs->lfs_ibsize);
+ bread(devvp, LFS_FSBTODB(fs, ibdaddr),
+ lfs_sb_getibsize(fs), 0, &ibp);
+ memcpy(ibbuf, ibp->b_data, lfs_sb_getibsize(fs));
brelse(ibp, 0);
j = 0;
@@ -777,10 +777,10 @@ pass6(void)
lastserial = sp->ss_serial;
}
odaddr = daddr;
- daddr += lfs_btofsb(fs, fs->lfs_sumsize + bc);
+ daddr += lfs_btofsb(fs, lfs_sb_getsumsize(fs) + bc);
if (lfs_dtosn(fs, odaddr) != lfs_dtosn(fs, daddr) ||
lfs_dtosn(fs, daddr) != lfs_dtosn(fs, daddr +
- lfs_btofsb(fs, fs->lfs_sumsize + lfs_sb_getbsize(fs)) - 1)) {
+ lfs_btofsb(fs, lfs_sb_getsumsize(fs) + lfs_sb_getbsize(fs)) - 1)) {
daddr = ((SEGSUM *)bp->b_data)->ss_next;
}
brelse(bp, 0);
@@ -825,19 +825,19 @@ pass6(void)
/* Could be a superblock */
if (lfs_sntod(fs, lfs_dtosn(fs, daddr)) == daddr) {
- if (daddr == fs->lfs_s0addr)
+ if (daddr == lfs_sb_gets0addr(fs))
daddr += lfs_btofsb(fs, LFS_LABELPAD);
for (i = 0; i < LFS_MAXNUMSB; i++) {
- if (daddr == fs->lfs_sboffs[i]) {
+ if (daddr == lfs_sb_getsboff(fs, i)) {
daddr += lfs_btofsb(fs, LFS_SBPAD);
}
- if (daddr < fs->lfs_sboffs[i])
+ if (daddr < lfs_sb_getsboff(fs, i))
break;
}
}
/* Read in summary block */
- bread(devvp, LFS_FSBTODB(fs, daddr), fs->lfs_sumsize, 0, &bp);
+ bread(devvp, LFS_FSBTODB(fs, daddr), lfs_sb_getsumsize(fs), 0, &bp);
sp = (SEGSUM *)bp->b_data;
bc = check_summary(fs, sp, daddr, debug, devvp, pass6harvest);
if (bc == 0) {
@@ -847,7 +847,7 @@ pass6(void)
break;
}
odaddr = daddr;
- daddr += lfs_btofsb(fs, fs->lfs_sumsize + bc);
+ daddr += lfs_btofsb(fs, lfs_sb_getsumsize(fs) + bc);
lfs_sb_subavail(fs, lfs_btofsb(fs, lfs_sb_getsumsize(fs) + bc));
if (lfs_dtosn(fs, odaddr) != lfs_dtosn(fs, daddr) ||
lfs_dtosn(fs, daddr) != lfs_dtosn(fs, daddr +
@@ -863,12 +863,12 @@ pass6(void)
/* Final address could also be a superblock */
if (lfs_sntod(fs, lfs_dtosn(fs, lastgood)) == lastgood) {
- if (lastgood == fs->lfs_s0addr)
+ if (lastgood == lfs_sb_gets0addr(fs))
lastgood += lfs_btofsb(fs, LFS_LABELPAD);
for (i = 0; i < LFS_MAXNUMSB; i++) {
- if (lastgood == fs->lfs_sboffs[i])
+ if (lastgood == lfs_sb_getsboff(fs, i))
lastgood += lfs_btofsb(fs, LFS_SBPAD);
- if (lastgood < fs->lfs_sboffs[i])
+ if (lastgood < lfs_sb_getsboff(fs, i))
break;
}
}
@@ -877,7 +877,7 @@ pass6(void)
lfs_sb_setoffset(fs, lastgood);
lfs_sb_setcurseg(fs, lfs_sntod(fs, lfs_dtosn(fs, lastgood)));
for (sn = curseg = lfs_dtosn(fs, lfs_sb_getcurseg(fs));;) {
- sn = (sn + 1) % fs->lfs_nseg;
+ sn = (sn + 1) % lfs_sb_getnseg(fs);
if (sn == curseg)
errx(1, "no clean segments");
LFS_SEGENTRY(sup, fs, sn, bp);
Index: src/sbin/fsck_lfs/segwrite.c
diff -u src/sbin/fsck_lfs/segwrite.c:1.32 src/sbin/fsck_lfs/segwrite.c:1.33
--- src/sbin/fsck_lfs/segwrite.c:1.32 Fri Jul 24 06:56:41 2015
+++ src/sbin/fsck_lfs/segwrite.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: segwrite.c,v 1.32 2015/07/24 06:56:41 dholland Exp $ */
+/* $NetBSD: segwrite.c,v 1.33 2015/07/24 06:59:32 dholland Exp $ */
/*-
* Copyright (c) 2003 The NetBSD Foundation, Inc.
* All rights reserved.
@@ -252,7 +252,7 @@ lfs_writeinode(struct lfs * fs, struct s
if ((ip->i_number != LFS_IFILE_INUM || sp->idp == NULL) &&
sp->ibp == NULL) {
/* Allocate a new segment if necessary. */
- if (sp->seg_bytes_left < fs->lfs_ibsize ||
+ if (sp->seg_bytes_left < lfs_sb_getibsize(fs) ||
sp->sum_bytes_left < sizeof(ulfs_daddr_t))
(void) lfs_writeseg(fs, sp);
@@ -261,7 +261,7 @@ lfs_writeinode(struct lfs * fs, struct s
lfs_sb_addoffset(fs, lfs_btofsb(fs, lfs_sb_getibsize(fs)));
sp->ibp = *sp->cbpp++ =
getblk(fs->lfs_devvp, LFS_FSBTODB(fs, daddr),
- fs->lfs_ibsize);
+ lfs_sb_getibsize(fs));
sp->ibp->b_flags |= B_GATHERED;
gotblk++;
@@ -557,7 +557,7 @@ lfs_updatemeta(struct segment * sp)
* that you cannot have fragments.
*/
sp->fip->fi_lastlength = ((sp->start_bpp[nblocks - 1]->b_bcount - 1) &
- fs->lfs_bmask) + 1;
+ lfs_sb_getbmask(fs)) + 1;
/*
* Assign disk addresses, and update references to the logical
@@ -576,7 +576,7 @@ lfs_updatemeta(struct segment * sp)
* that the indirect block that actually ends the list
* is of a smaller size!)
*/
- if ((sbp->b_bcount & fs->lfs_bmask) && i != 0)
+ if ((sbp->b_bcount & lfs_sb_getbmask(fs)) && i != 0)
errx(EXIT_FAILURE, "%s: fragment is not last block", __func__);
/*
@@ -635,9 +635,9 @@ lfs_initseg(struct lfs * fs)
brelse(bp, 0);
/* Segment zero could also contain the labelpad */
if (fs->lfs_version > 1 && sp->seg_number == 0 &&
- fs->lfs_s0addr < lfs_btofsb(fs, LFS_LABELPAD)) {
- lfs_sb_addoffset(fs, lfs_btofsb(fs, LFS_LABELPAD) - fs->lfs_s0addr);
- sp->seg_bytes_left -= LFS_LABELPAD - lfs_fsbtob(fs, fs->lfs_s0addr);
+ lfs_sb_gets0addr(fs) < lfs_btofsb(fs, LFS_LABELPAD)) {
+ lfs_sb_addoffset(fs, lfs_btofsb(fs, LFS_LABELPAD) - lfs_sb_gets0addr(fs));
+ sp->seg_bytes_left -= LFS_LABELPAD - lfs_fsbtob(fs, lfs_sb_gets0addr(fs));
}
} else {
sp->seg_number = lfs_dtosn(fs, lfs_sb_getcurseg(fs));
@@ -702,13 +702,13 @@ lfs_newseg(struct lfs * fs)
LFS_CLEANERINFO(cip, fs, bp);
--cip->clean;
++cip->dirty;
- fs->lfs_nclean = cip->clean;
+ lfs_sb_setnclean(fs, cip->clean);
LFS_SYNC_CLEANERINFO(cip, fs, bp, 1);
lfs_sb_setlastseg(fs, lfs_sb_getcurseg(fs));
lfs_sb_setcurseg(fs, lfs_sb_getnextseg(fs));
for (sn = curseg = lfs_dtosn(fs, lfs_sb_getcurseg(fs)) + lfs_sb_getinterleave(fs);;) {
- sn = (sn + 1) % fs->lfs_nseg;
+ sn = (sn + 1) % lfs_sb_getnseg(fs);
if (sn == curseg)
errx(EXIT_FAILURE, "%s: no clean segments", __func__);
LFS_SEGENTRY(sup, fs, sn, bp);
@@ -776,8 +776,8 @@ lfs_writeseg(struct lfs * fs, struct seg
sup->su_lastmod = write_time;
sup->su_ninos += ninos;
++sup->su_nsums;
- fs->lfs_dmeta += (lfs_btofsb(fs, lfs_sb_getsumsize(fs)) + lfs_btofsb(fs, ninos *
- fs->lfs_ibsize));
+ lfs_sb_adddmeta(fs, (lfs_btofsb(fs, lfs_sb_getsumsize(fs)) + lfs_btofsb(fs, ninos *
+ lfs_sb_getibsize(fs))));
lfs_sb_subavail(fs, lfs_btofsb(fs, lfs_sb_getsumsize(fs)));
do_again = !(bp->b_flags & B_GATHERED);
@@ -810,7 +810,7 @@ lfs_writeseg(struct lfs * fs, struct seg
ssp->ss_create = write_time;
lfs_sb_addserial(fs, 1);
ssp->ss_serial = lfs_sb_getserial(fs);
- ssp->ss_ident = fs->lfs_ident;
+ ssp->ss_ident = lfs_sb_getident(fs);
}
/* Set the summary block busy too */
bremfree(*(sp->bpp));
@@ -950,8 +950,8 @@ lfs_segunlock(struct lfs * fs)
fs->lfs_nactive = 0;
/* Since we *know* everything's on disk, write both sbs */
- lfs_writesuper(fs, fs->lfs_sboffs[0]);
- lfs_writesuper(fs, fs->lfs_sboffs[1]);
+ lfs_writesuper(fs, lfs_sb_getsboff(fs, 0));
+ lfs_writesuper(fs, lfs_sb_getsboff(fs, 1));
--fs->lfs_seglock;
fs->lfs_lockpid = 0;
@@ -1003,7 +1003,7 @@ lfs_writesuper(struct lfs *fs, ulfs_dadd
lfs_sb_settstamp(fs, write_time);
/* Checksum the superblock and copy it into a buffer. */
- fs->lfs_cksum = lfs_sb_cksum(&(fs->lfs_dlfs));
+ lfs_sb_setcksum(fs, lfs_sb_cksum(&(fs->lfs_dlfs)));
assert(daddr > 0);
bp = getblk(fs->lfs_devvp, LFS_FSBTODB(fs, daddr), LFS_SBPAD);
memset(bp->b_data + sizeof(struct dlfs), 0,
Index: src/sbin/fsck_lfs/setup.c
diff -u src/sbin/fsck_lfs/setup.c:1.47 src/sbin/fsck_lfs/setup.c:1.48
--- src/sbin/fsck_lfs/setup.c:1.47 Fri Jul 24 06:56:41 2015
+++ src/sbin/fsck_lfs/setup.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: setup.c,v 1.47 2015/07/24 06:56:41 dholland Exp $ */
+/* $NetBSD: setup.c,v 1.48 2015/07/24 06:59:32 dholland Exp $ */
/*-
* Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -218,7 +218,7 @@ setup(const char *dev)
/* Resize buffer cache now that we have a superblock to guess from. */
bufrehash((lfs_sb_getsegtabsz(fs) + maxino / lfs_sb_getifpb(fs)) << 4);
- if (fs->lfs_pflags & LFS_PF_CLEAN) {
+ if (lfs_sb_getpflags(fs) & LFS_PF_CLEAN) {
if (doskipclean) {
if (!quiet)
pwarn("%sile system is clean; not checking\n",
@@ -240,12 +240,12 @@ setup(const char *dev)
(unsigned long)idaddr);
tdaddr = lfs_sntod(fs, lfs_dtosn(fs, idaddr));
if (lfs_sntod(fs, lfs_dtosn(fs, tdaddr)) == tdaddr) {
- if (tdaddr == fs->lfs_s0addr)
+ if (tdaddr == lfs_sb_gets0addr(fs))
tdaddr += lfs_btofsb(fs, LFS_LABELPAD);
for (i = 0; i < LFS_MAXNUMSB; i++) {
- if (fs->lfs_sboffs[i] == tdaddr)
+ if (lfs_sb_getsboff(fs, i) == tdaddr)
tdaddr += lfs_btofsb(fs, LFS_SBPAD);
- if (fs->lfs_sboffs[i] > tdaddr)
+ if (lfs_sb_getsboff(fs, i) > tdaddr)
break;
}
}
@@ -256,11 +256,11 @@ setup(const char *dev)
(intmax_t)lfs_sb_getserial(fs));
while (tdaddr < idaddr) {
bread(fs->lfs_devvp, LFS_FSBTODB(fs, tdaddr),
- fs->lfs_sumsize,
+ lfs_sb_getsumsize(fs),
0, &bp);
sp = (SEGSUM *)bp->b_data;
if (sp->ss_sumsum != cksum(&sp->ss_datasum,
- fs->lfs_sumsize -
+ lfs_sb_getsumsize(fs) -
sizeof(sp->ss_sumsum))) {
brelse(bp, 0);
if (debug)
@@ -270,11 +270,11 @@ setup(const char *dev)
}
fp = (FINFO *)(sp + 1);
bc = howmany(sp->ss_ninos, LFS_INOPB(fs)) <<
- (fs->lfs_version > 1 ? fs->lfs_ffshift :
- fs->lfs_bshift);
+ (fs->lfs_version > 1 ? lfs_sb_getffshift(fs) :
+ lfs_sb_getbshift(fs));
for (i = 0; i < sp->ss_nfinfo; i++) {
bc += fp->fi_lastlength + ((fp->fi_nblocks - 1)
- << fs->lfs_bshift);
+ << lfs_sb_getbshift(fs));
fp = (FINFO *)(fp->fi_blocks + fp->fi_nblocks);
}
@@ -290,8 +290,8 @@ setup(const char *dev)
*/
curseg = lfs_dtosn(fs, lfs_sb_getoffset(fs));
lfs_sb_setcurseg(fs, lfs_sntod(fs, curseg));
- for (sn = curseg + fs->lfs_interleave;;) {
- sn = (sn + 1) % fs->lfs_nseg;
+ for (sn = curseg + lfs_sb_getinterleave(fs);;) {
+ sn = (sn + 1) % lfs_sb_getnseg(fs);
if (sn == curseg)
errx(1, "init: no clean segments");
LFS_SEGENTRY(sup, fs, sn, bp);
@@ -304,7 +304,7 @@ setup(const char *dev)
/* Skip superblock if necessary */
for (i = 0; i < LFS_MAXNUMSB; i++)
- if (lfs_sb_getoffset(fs) == fs->lfs_sboffs[i])
+ if (lfs_sb_getoffset(fs) == lfs_sb_getsboff(fs, i))
lfs_sb_addoffset(fs, lfs_btofsb(fs, LFS_SBPAD));
++fs->lfs_nactive;
@@ -330,13 +330,13 @@ setup(const char *dev)
pwarn("lfs_bsize = %lu\n", (unsigned long) lfs_sb_getbsize(fs));
pwarn("lfs_fsize = %lu\n", (unsigned long) lfs_sb_getfsize(fs));
pwarn("lfs_frag = %lu\n", (unsigned long) lfs_sb_getfrag(fs));
- pwarn("lfs_inopb = %lu\n", (unsigned long) fs->lfs_inopb);
+ pwarn("lfs_inopb = %lu\n", (unsigned long) lfs_sb_getinopb(fs));
}
if (fs->lfs_version == 1)
maxfsblock = lfs_sb_getsize(fs) * (lfs_sb_getbsize(fs) / dev_bsize);
else
maxfsblock = lfs_sb_getsize(fs);
- maxfilesize = calcmaxfilesize(fs->lfs_bshift);
+ maxfilesize = calcmaxfilesize(lfs_sb_getbshift(fs));
if (/* lfs_sb_getminfree(fs) < 0 || */ lfs_sb_getminfree(fs) > 99) {
pfatal("IMPOSSIBLE MINFREE=%u IN SUPERBLOCK",
lfs_sb_getminfree(fs));
@@ -345,53 +345,55 @@ setup(const char *dev)
sbdirty();
}
}
- if (fs->lfs_bmask != lfs_sb_getbsize(fs) - 1) {
- pwarn("INCORRECT BMASK=0x%x IN SUPERBLOCK (SHOULD BE 0x%x)",
- (unsigned int) fs->lfs_bmask,
- (unsigned int) lfs_sb_getbsize(fs) - 1);
- fs->lfs_bmask = lfs_sb_getbsize(fs) - 1;
+ if (lfs_sb_getbmask(fs) != lfs_sb_getbsize(fs) - 1) {
+ pwarn("INCORRECT BMASK=0x%jx IN SUPERBLOCK (SHOULD BE 0x%x)",
+ (uintmax_t)lfs_sb_getbmask(fs),
+ lfs_sb_getbsize(fs) - 1);
+ lfs_sb_setbmask(fs, lfs_sb_getbsize(fs) - 1);
if (preen)
printf(" (FIXED)\n");
if (preen || reply("FIX") == 1) {
sbdirty();
}
}
- if (fs->lfs_ffmask != lfs_sb_getfsize(fs) - 1) {
- pwarn("INCORRECT FFMASK=%" PRId64 " IN SUPERBLOCK",
- fs->lfs_ffmask);
- fs->lfs_ffmask = lfs_sb_getfsize(fs) - 1;
+ if (lfs_sb_getffmask(fs) != lfs_sb_getfsize(fs) - 1) {
+ pwarn("INCORRECT FFMASK=0x%jx IN SUPERBLOCK (SHOULD BE 0x%x)",
+ (uintmax_t)lfs_sb_getffmask(fs),
+ lfs_sb_getfsize(fs) - 1);
+ lfs_sb_setffmask(fs, lfs_sb_getfsize(fs) - 1);
if (preen)
printf(" (FIXED)\n");
if (preen || reply("FIX") == 1) {
sbdirty();
}
}
- if (fs->lfs_fbmask != (1 << fs->lfs_fbshift) - 1) {
- pwarn("INCORRECT FBMASK=%" PRId64 " IN SUPERBLOCK",
- fs->lfs_fbmask);
- fs->lfs_fbmask = (1 << fs->lfs_fbshift) - 1;
+ if (lfs_sb_getfbmask(fs) != (1U << lfs_sb_getfbshift(fs)) - 1) {
+ pwarn("INCORRECT FBMASK=0x%jx IN SUPERBLOCK (SHOULD BE 0x%x)",
+ (uintmax_t)lfs_sb_getfbmask(fs),
+ (1U << lfs_sb_getfbshift(fs)) - 1);
+ lfs_sb_setfbmask(fs, (1U << lfs_sb_getfbshift(fs)) - 1);
if (preen)
printf(" (FIXED)\n");
if (preen || reply("FIX") == 1) {
sbdirty();
}
}
- if (fs->lfs_maxfilesize != maxfilesize) {
+ if (lfs_sb_getmaxfilesize(fs) != maxfilesize) {
pwarn(
- "INCORRECT MAXFILESIZE=%llu IN SUPERBLOCK (SHOULD BE %llu WITH BSHIFT %d)",
- (unsigned long long) fs->lfs_maxfilesize,
- (unsigned long long) maxfilesize, (int)fs->lfs_bshift);
+ "INCORRECT MAXFILESIZE=%llu IN SUPERBLOCK (SHOULD BE %llu WITH BSHIFT %u)",
+ (unsigned long long) lfs_sb_getmaxfilesize(fs),
+ (unsigned long long) maxfilesize, lfs_sb_getbshift(fs));
if (preen)
printf(" (FIXED)\n");
if (preen || reply("FIX") == 1) {
- fs->lfs_maxfilesize = maxfilesize;
+ lfs_sb_setmaxfilesize(fs, maxfilesize);
sbdirty();
}
}
- if (fs->lfs_maxsymlinklen != ULFS1_MAXSYMLINKLEN) {
- pwarn("INCORRECT MAXSYMLINKLEN=%d IN SUPERBLOCK",
- fs->lfs_maxsymlinklen);
- fs->lfs_maxsymlinklen = ULFS1_MAXSYMLINKLEN;
+ if (lfs_sb_getmaxsymlinklen(fs) != ULFS1_MAXSYMLINKLEN) {
+ pwarn("INCORRECT MAXSYMLINKLEN=%d IN SUPERBLOCK (SHOULD BE %zu)",
+ lfs_sb_getmaxsymlinklen(fs), ULFS1_MAXSYMLINKLEN);
+ lfs_sb_setmaxsymlinklen(fs, ULFS1_MAXSYMLINKLEN);
if (preen)
printf(" (FIXED)\n");
if (preen || reply("FIX") == 1) {
@@ -412,7 +414,7 @@ setup(const char *dev)
if (debug)
pwarn("maxino = %llu\n", (unsigned long long)maxino);
for (i = 0; i < VTOI(ivp)->i_ffs1_size; i += lfs_sb_getbsize(fs)) {
- bread(ivp, i >> fs->lfs_bshift, lfs_sb_getbsize(fs), 0, &bp);
+ bread(ivp, i >> lfs_sb_getbshift(fs), lfs_sb_getbsize(fs), 0, &bp);
/* XXX check B_ERROR */
brelse(bp, 0);
}
@@ -421,9 +423,9 @@ setup(const char *dev)
* allocate and initialize the necessary maps
*/
din_table = ecalloc(maxino, sizeof(*din_table));
- seg_table = ecalloc(fs->lfs_nseg, sizeof(SEGUSE));
+ seg_table = ecalloc(lfs_sb_getnseg(fs), sizeof(SEGUSE));
/* Get segment flags */
- for (i = 0; i < fs->lfs_nseg; i++) {
+ for (i = 0; i < lfs_sb_getnseg(fs); i++) {
LFS_SEGENTRY(sup, fs, i, bp);
seg_table[i].su_flags = sup->su_flags & ~SEGUSE_ACTIVE;
if (preen)
Index: src/sbin/newfs_lfs/make_lfs.c
diff -u src/sbin/newfs_lfs/make_lfs.c:1.32 src/sbin/newfs_lfs/make_lfs.c:1.33
--- src/sbin/newfs_lfs/make_lfs.c:1.32 Fri Jul 24 06:56:41 2015
+++ src/sbin/newfs_lfs/make_lfs.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: make_lfs.c,v 1.32 2015/07/24 06:56:41 dholland Exp $ */
+/* $NetBSD: make_lfs.c,v 1.33 2015/07/24 06:59:32 dholland Exp $ */
/*-
* Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -62,7 +62,7 @@
#if 0
static char sccsid[] = "@(#)lfs.c 8.5 (Berkeley) 5/24/95";
#else
-__RCSID("$NetBSD: make_lfs.c,v 1.32 2015/07/24 06:56:41 dholland Exp $");
+__RCSID("$NetBSD: make_lfs.c,v 1.33 2015/07/24 06:59:32 dholland Exp $");
#endif
#endif /* not lint */
@@ -231,7 +231,7 @@ make_dinode(ino_t ino, struct ulfs1_dino
dip->di_nlink = 1;
dip->di_blocks = nfrags;
- dip->di_size = (nfrags << fs->lfs_ffshift);
+ dip->di_size = (nfrags << lfs_sb_getffshift(fs));
dip->di_atime = dip->di_mtime = dip->di_ctime = lfs_sb_gettstamp(fs);
dip->di_atimensec = dip->di_mtimensec = dip->di_ctimensec = 0;
dip->di_inumber = ino;
@@ -400,34 +400,34 @@ make_lfs(int devfd, uint secsize, struct
tryagain:
/* Modify parts of superblock overridden by command line arguments */
if (bsize != DFL_LFSBLOCK || fsize != DFL_LFSFRAG) {
- fs->lfs_bshift = lfs_log2(bsize);
- if (1 << fs->lfs_bshift != bsize)
+ lfs_sb_setbshift(fs, lfs_log2(bsize));
+ if (1 << lfs_sb_getbshift(fs) != bsize)
fatal("%d: block size not a power of 2", bsize);
lfs_sb_setbsize(fs, bsize);
lfs_sb_setfsize(fs, fsize);
- fs->lfs_bmask = bsize - 1;
- fs->lfs_ffmask = fsize - 1;
- fs->lfs_ffshift = lfs_log2(fsize);
- if (1 << fs->lfs_ffshift != fsize)
+ lfs_sb_setbmask(fs, bsize - 1);
+ lfs_sb_setffmask(fs, fsize - 1);
+ lfs_sb_setffshift(fs, lfs_log2(fsize));
+ if (1 << lfs_sb_getffshift(fs) != fsize)
fatal("%d: frag size not a power of 2", fsize);
lfs_sb_setfrag(fs, lfs_numfrags(fs, bsize));
- fs->lfs_fbmask = lfs_sb_getfrag(fs) - 1;
- fs->lfs_fbshift = lfs_log2(lfs_sb_getfrag(fs));
+ lfs_sb_setfbmask(fs, lfs_sb_getfrag(fs) - 1);
+ lfs_sb_setfbshift(fs, lfs_log2(lfs_sb_getfrag(fs)));
lfs_sb_setifpb(fs, bsize / sizeof(IFILE));
/* XXX ondisk32 */
- fs->lfs_nindir = bsize / sizeof(int32_t);
+ lfs_sb_setnindir(fs, bsize / sizeof(int32_t));
}
if (fs->lfs_version == 1) {
- fs->lfs_sumsize = LFS_V1_SUMMARY_SIZE;
- fs->lfs_segshift = lfs_log2(ssize);
- if (1 << fs->lfs_segshift != ssize)
+ lfs_sb_setsumsize(fs, LFS_V1_SUMMARY_SIZE);
+ lfs_sb_setsegshift(fs, lfs_log2(ssize));
+ if (1 << lfs_sb_getsegshift(fs) != ssize)
fatal("%d: segment size not power of 2", ssize);
- fs->lfs_segmask = ssize - 1;
+ lfs_sb_setsegmask(fs, ssize - 1);
lfs_sb_setifpb(fs, lfs_sb_getbsize(fs) / sizeof(IFILE_V1));
lfs_sb_setibsize(fs, lfs_sb_getbsize(fs));
lfs_sb_setsepb(fs, bsize / sizeof(SEGUSE_V1));
- lfs_sb_setssize(fs, ssize >> fs->lfs_bshift);
+ lfs_sb_setssize(fs, ssize >> lfs_sb_getbshift(fs));
} else {
if (ssize % fsize) {
fprintf(stderr,
@@ -437,22 +437,22 @@ make_lfs(int devfd, uint secsize, struct
fprintf(stderr, "trying size %d.\n", ssize);
goto tryagain;
}
- fs->lfs_sumsize = fsize;
- fs->lfs_segshift = 0;
- fs->lfs_segmask = 0;
+ lfs_sb_setsumsize(fs, fsize);
+ lfs_sb_setsegshift(fs, 0);
+ lfs_sb_setsegmask(fs, 0);
lfs_sb_setsepb(fs, bsize / sizeof(SEGUSE));
lfs_sb_setssize(fs, ssize);
lfs_sb_setibsize(fs, ibsize);
}
- fs->lfs_inopb = fs->lfs_ibsize / sizeof(struct ulfs1_dinode);
+ lfs_sb_setinopb(fs, lfs_sb_getibsize(fs) / sizeof(struct ulfs1_dinode));
lfs_sb_setminfree(fs, minfree);
if (version > 1) {
lfs_sb_setinopf(fs, secsize/LFS_DINODE1_SIZE);
- fs->lfs_interleave = interleave;
+ lfs_sb_setinterleave(fs, interleave);
if (roll_id == 0)
roll_id = arc4random();
- fs->lfs_ident = roll_id;
+ lfs_sb_setident(fs, roll_id);
}
/*
@@ -460,43 +460,43 @@ make_lfs(int devfd, uint secsize, struct
* size, disk geometry and current time.
*
* XXX: this seems to set dlfs_size wrong for version 1... as in,
- * sets it and then overwrites it.
+ * sets it and then overwrites it a few lines later.
*/
db_per_blk = bsize/secsize;
- fs->lfs_blktodb = lfs_log2(db_per_blk);
- fs->lfs_fsbtodb = lfs_log2(fsize / secsize);
+ lfs_sb_setblktodb(fs, lfs_log2(db_per_blk));
+ lfs_sb_setfsbtodb(fs, lfs_log2(fsize / secsize));
if (version == 1) {
- fs->lfs_sushift = lfs_log2(lfs_sb_getsepb(fs));
- fs->lfs_fsbtodb = 0;
- lfs_sb_setsize(fs, dkw->dkw_size >> fs->lfs_blktodb);
+ lfs_sb_setsushift(fs, lfs_log2(lfs_sb_getsepb(fs)));
+ lfs_sb_setfsbtodb(fs, 0);
+ lfs_sb_setsize(fs, dkw->dkw_size >> lfs_sb_getblktodb(fs));
}
label_fsb = lfs_btofsb(fs, roundup(LFS_LABELPAD, fsize));
sb_fsb = lfs_btofsb(fs, roundup(LFS_SBPAD, fsize));
- fs->lfs_fsbpseg = LFS_DBTOFSB(fs, ssize / secsize);
- lfs_sb_setsize(fs, dkw->dkw_size >> fs->lfs_fsbtodb);
+ lfs_sb_setfsbpseg(fs, LFS_DBTOFSB(fs, ssize / secsize));
+ lfs_sb_setsize(fs, dkw->dkw_size >> lfs_sb_getfsbtodb(fs));
lfs_sb_setdsize(fs, LFS_DBTOFSB(fs, dkw->dkw_size) -
MAX(label_fsb, LFS_DBTOFSB(fs, start)));
- fs->lfs_nseg = lfs_sb_getdsize(fs) / lfs_segtod(fs, 1);
+ lfs_sb_setnseg(fs, lfs_sb_getdsize(fs) / lfs_segtod(fs, 1));
- fs->lfs_nclean = fs->lfs_nseg - 1;
- fs->lfs_maxfilesize = maxfilesize(fs->lfs_bshift);
+ lfs_sb_setnclean(fs, lfs_sb_getnseg(fs) - 1);
+ lfs_sb_setmaxfilesize(fs, maxfilesize(lfs_sb_getbshift(fs)));
if (minfreeseg == 0)
- fs->lfs_minfreeseg = fs->lfs_nseg / DFL_MIN_FREE_SEGS;
+ lfs_sb_setminfreeseg(fs, lfs_sb_getnseg(fs) / DFL_MIN_FREE_SEGS);
else
- fs->lfs_minfreeseg = minfreeseg;
- if (fs->lfs_minfreeseg < MIN_FREE_SEGS)
- fs->lfs_minfreeseg = MIN_FREE_SEGS;
+ lfs_sb_setminfreeseg(fs, minfreeseg);
+ if (lfs_sb_getminfreeseg(fs) < MIN_FREE_SEGS)
+ lfs_sb_setminfreeseg(fs, MIN_FREE_SEGS);
if (resvseg == 0)
- fs->lfs_resvseg = fs->lfs_minfreeseg / 2 + 1;
+ lfs_sb_setresvseg(fs, lfs_sb_getminfreeseg(fs) / 2 + 1);
else
- fs->lfs_resvseg = resvseg;
- if (fs->lfs_resvseg < MIN_RESV_SEGS)
- fs->lfs_resvseg = MIN_RESV_SEGS;
+ lfs_sb_setresvseg(fs, resvseg);
+ if (lfs_sb_getresvseg(fs) < MIN_RESV_SEGS)
+ lfs_sb_setresvseg(fs, MIN_RESV_SEGS);
- if(fs->lfs_nseg < (4 * fs->lfs_minfreeseg)
- || fs->lfs_nseg < LFS_MIN_SBINTERVAL + 1)
+ if(lfs_sb_getnseg(fs) < (4 * lfs_sb_getminfreeseg(fs))
+ || lfs_sb_getnseg(fs) < LFS_MIN_SBINTERVAL + 1)
{
if(seg_size == 0 && ssize > (bsize<<1)) {
if(!warned_segtoobig) {
@@ -526,13 +526,13 @@ make_lfs(int devfd, uint secsize, struct
*/
printf("Creating a version %d LFS", fs->lfs_version);
if (fs->lfs_version > 1)
- printf(" with roll-forward ident 0x%x", fs->lfs_ident);
+ printf(" with roll-forward ident 0x%x", lfs_sb_getident(fs));
printf("\n");
- fssize = (double)fs->lfs_nseg;
+ fssize = (double)lfs_sb_getnseg(fs);
fssize *= (double)ssize;
fssize /= 1048576.0;
printf("%.1fMB in %d segments of size %d\n", fssize,
- fs->lfs_nseg, ssize);
+ lfs_sb_getnseg(fs), ssize);
/*
* The number of free blocks is set from the number of segments
@@ -542,7 +542,7 @@ make_lfs(int devfd, uint secsize, struct
* and segment usage table, and half a block per segment that can't
* be written due to fragmentation.
*/
- lfs_sb_setdsize(fs, (fs->lfs_nseg - fs->lfs_minfreeseg) *
+ lfs_sb_setdsize(fs, (lfs_sb_getnseg(fs) - lfs_sb_getminfreeseg(fs)) *
lfs_segtod(fs, 1));
lfs_sb_setbfree(fs, lfs_sb_getdsize(fs));
lfs_sb_subbfree(fs, LFS_DBTOFSB(fs, ((lfs_sb_getnseg(fs) / 2) <<
@@ -556,7 +556,7 @@ make_lfs(int devfd, uint secsize, struct
if (version == 1)
lfs_sb_setotstamp(fs, stamp);
- if ((sb_interval = fs->lfs_nseg / LFS_MAXNUMSB) < LFS_MIN_SBINTERVAL)
+ if ((sb_interval = lfs_sb_getnseg(fs) / LFS_MAXNUMSB) < LFS_MIN_SBINTERVAL)
sb_interval = LFS_MIN_SBINTERVAL;
/*
@@ -576,27 +576,27 @@ make_lfs(int devfd, uint secsize, struct
start, btodb(LFS_LABELPAD),
btodb(LFS_LABELPAD + LFS_SBPAD));
}
- fs->lfs_sboffs[0] = label_fsb;
+ lfs_sb_setsboff(fs, 0, label_fsb);
if (version == 1)
- fs->lfs_s0addr = fs->lfs_sboffs[0];
+ lfs_sb_sets0addr(fs, lfs_sb_getsboff(fs, 0));
else
- fs->lfs_s0addr = LFS_DBTOFSB(fs, start);
+ lfs_sb_sets0addr(fs, LFS_DBTOFSB(fs, start));
lfs_sb_setdsize(fs, lfs_sb_getdsize(fs) - sb_fsb);
for (i = 1; i < LFS_MAXNUMSB; i++) {
sb_addr = ((i * sb_interval) * lfs_segtod(fs, 1))
- + fs->lfs_sboffs[0];
+ + lfs_sb_getsboff(fs, 0);
/* Segment 0 eats the label, except for version 1 */
- if (fs->lfs_version > 1 && fs->lfs_s0addr < label_fsb)
+ if (fs->lfs_version > 1 && lfs_sb_gets0addr(fs) < label_fsb)
sb_addr -= label_fsb - start;
if (sb_addr + sizeof(struct dlfs)
>= LFS_DBTOFSB(fs, dkw->dkw_size))
break;
- fs->lfs_sboffs[i] = sb_addr;
+ lfs_sb_setsboff(fs, i, sb_addr);
lfs_sb_setdsize(fs, lfs_sb_getdsize(fs) - sb_fsb);
}
/* We need >= 2 superblocks */
- if(fs->lfs_sboffs[1] == 0x0) {
+ if (lfs_sb_getsboff(fs, 1) == 0x0) {
fatal("Could not assign a disk address for the second "
"superblock.\nPlease decrease the segment size.\n");
}
@@ -619,8 +619,8 @@ make_lfs(int devfd, uint secsize, struct
dip->di_flags = SF_IMMUTABLE;
make_dinode(LFS_IFILE_INUM, dip,
lfs_blkstofrags(fs, lfs_sb_getcleansz(fs) + lfs_sb_getsegtabsz(fs) + 1), fs);
- dip->di_size = (lfs_sb_getcleansz(fs) + lfs_sb_getsegtabsz(fs) + 1) << fs->lfs_bshift;
- for (i = 0; i < ULFS_NDADDR && i < (dip->di_size >> fs->lfs_bshift); i++)
+ dip->di_size = (lfs_sb_getcleansz(fs) + lfs_sb_getsegtabsz(fs) + 1) << lfs_sb_getbshift(fs);
+ for (i = 0; i < ULFS_NDADDR && i < (dip->di_size >> lfs_sb_getbshift(fs)); i++)
VTOI(fs->lfs_ivnode)->i_lfs_fragsize[i] = lfs_sb_getbsize(fs);
/*
@@ -629,10 +629,10 @@ make_lfs(int devfd, uint secsize, struct
fs->lfs_suflags = (u_int32_t **) malloc(2 * sizeof(u_int32_t *));
if (fs->lfs_suflags == NULL)
err(1, NULL);
- fs->lfs_suflags[0] = (u_int32_t *) malloc(fs->lfs_nseg * sizeof(u_int32_t));
+ fs->lfs_suflags[0] = (u_int32_t *) malloc(lfs_sb_getnseg(fs) * sizeof(u_int32_t));
if (fs->lfs_suflags[0] == NULL)
err(1, NULL);
- fs->lfs_suflags[1] = (u_int32_t *) malloc(fs->lfs_nseg * sizeof(u_int32_t));
+ fs->lfs_suflags[1] = (u_int32_t *) malloc(lfs_sb_getnseg(fs) * sizeof(u_int32_t));
if (fs->lfs_suflags[1] == NULL)
err(1, NULL);
@@ -640,7 +640,7 @@ make_lfs(int devfd, uint secsize, struct
* Initialize the cleanerinfo block
*/
LFS_CLEANERINFO(cip, fs, bp);
- cip->clean = fs->lfs_nseg;
+ cip->clean = lfs_sb_getnseg(fs);
cip->dirty = 0;
if (version > 1) {
cip->free_head = HIGHEST_USED_INO + 1;
@@ -651,11 +651,11 @@ make_lfs(int devfd, uint secsize, struct
/*
* Run through segment table and initialize that
*/
- for (i = j = 0; i < fs->lfs_nseg; i++) {
+ for (i = j = 0; i < lfs_sb_getnseg(fs); i++) {
LFS_SEGENTRY(segp, fs, i, bp);
if (i == 0 &&
- fs->lfs_s0addr < lfs_btofsb(fs, LFS_LABELPAD + LFS_SBPAD)) {
+ lfs_sb_gets0addr(fs) < lfs_btofsb(fs, LFS_LABELPAD + LFS_SBPAD)) {
segp->su_flags = SEGUSE_SUPERBLOCK;
lfs_sb_subbfree(fs, sb_fsb);
++j;
@@ -770,26 +770,26 @@ make_lfs(int devfd, uint secsize, struct
*/
lfs_sb_setavail(fs, 0);
bb = ubb = dmeta = 0;
- for (i = 0; i < fs->lfs_nseg; i++) {
+ for (i = 0; i < lfs_sb_getnseg(fs); i++) {
LFS_SEGENTRY(segp, fs, i, bp);
if (segp->su_flags & SEGUSE_DIRTY) {
bb += lfs_btofsb(fs, segp->su_nbytes +
- segp->su_nsums * fs->lfs_sumsize);
+ segp->su_nsums * lfs_sb_getsumsize(fs));
ubb += lfs_btofsb(fs, segp->su_nbytes +
- segp->su_nsums * fs->lfs_sumsize +
- segp->su_ninos * fs->lfs_ibsize);
+ segp->su_nsums * lfs_sb_getsumsize(fs) +
+ segp->su_ninos * lfs_sb_getibsize(fs));
dmeta += lfs_btofsb(fs,
- fs->lfs_sumsize * segp->su_nsums);
+ lfs_sb_getsumsize(fs) * segp->su_nsums);
dmeta += lfs_btofsb(fs,
- fs->lfs_ibsize * segp->su_ninos);
+ lfs_sb_getibsize(fs) * segp->su_ninos);
} else {
lfs_sb_addavail(fs, lfs_segtod(fs, 1));
if (segp->su_flags & SEGUSE_SUPERBLOCK)
lfs_sb_subavail(fs, lfs_btofsb(fs, LFS_SBPAD));
if (i == 0 && fs->lfs_version > 1 &&
- fs->lfs_s0addr < lfs_btofsb(fs, LFS_LABELPAD))
+ lfs_sb_gets0addr(fs) < lfs_btofsb(fs, LFS_LABELPAD))
lfs_sb_subavail(fs, lfs_btofsb(fs, LFS_LABELPAD) -
- fs->lfs_s0addr);
+ lfs_sb_gets0addr(fs));
}
brelse(bp, 0);
}
@@ -797,10 +797,10 @@ make_lfs(int devfd, uint secsize, struct
i = lfs_dtosn(fs, lfs_sb_getoffset(fs));
lfs_sb_addavail(fs, lfs_sntod(fs, i + 1) - lfs_sb_getoffset(fs));
/* But do not count minfreesegs */
- lfs_sb_subavail(fs, lfs_segtod(fs, (fs->lfs_minfreeseg - (fs->lfs_minfreeseg / 2))));
+ lfs_sb_subavail(fs, lfs_segtod(fs, (lfs_sb_getminfreeseg(fs) - (lfs_sb_getminfreeseg(fs) / 2))));
labelskew = 0;
- if (fs->lfs_version > 1 && fs->lfs_s0addr < lfs_btofsb(fs, LFS_LABELPAD))
+ if (fs->lfs_version > 1 && lfs_sb_gets0addr(fs) < lfs_btofsb(fs, LFS_LABELPAD))
labelskew = lfs_btofsb(fs, LFS_LABELPAD);
lfs_sb_setbfree(fs, lfs_sb_getdsize(fs) - labelskew - (ubb + bb) / 2);
@@ -818,7 +818,7 @@ make_lfs(int devfd, uint secsize, struct
printf("super-block backups (for fsck -b #) at:\n");
curw = 0;
for (i = 0; i < LFS_MAXNUMSB; i++) {
- seg_addr = fs->lfs_sboffs[i];
+ seg_addr = lfs_sb_getsboff(fs, i);
if (seg_addr == 0)
break;
@@ -837,7 +837,7 @@ make_lfs(int devfd, uint secsize, struct
/* Leave the time stamp on the alt sb, zero the rest */
if (i == 2) {
lfs_sb_settstamp(fs, 0);
- fs->lfs_cksum = lfs_sb_cksum(&(fs->lfs_dlfs));
+ lfs_sb_setcksum(fs, lfs_sb_cksum(&(fs->lfs_dlfs)));
}
if (!Nflag)
lfs_writesuper(fs, seg_addr);
Index: src/sbin/resize_lfs/resize_lfs.c
diff -u src/sbin/resize_lfs/resize_lfs.c:1.10 src/sbin/resize_lfs/resize_lfs.c:1.11
--- src/sbin/resize_lfs/resize_lfs.c:1.10 Fri Jul 24 06:56:41 2015
+++ src/sbin/resize_lfs/resize_lfs.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: resize_lfs.c,v 1.10 2015/07/24 06:56:41 dholland Exp $ */
+/* $NetBSD: resize_lfs.c,v 1.11 2015/07/24 06:59:32 dholland Exp $ */
/*-
* Copyright (c) 2005 The NetBSD Foundation, Inc.
* All rights reserved.
@@ -127,7 +127,7 @@ main(int argc, char **argv)
pread(devfd, buf, sboff, LFS_SBPAD);
memcpy(&fs->lfs_dlfs, buf, sizeof(struct dlfs));
if (sboff == LFS_LABELPAD && lfs_fsbtob(fs, 1) > LFS_LABELPAD)
- sboff = lfs_fsbtob(fs, (off_t)fs->lfs_sboffs[0]);
+ sboff = lfs_fsbtob(fs, (off_t)lfs_sb_getsboff(fs, 0));
else
break;
}
@@ -135,7 +135,7 @@ main(int argc, char **argv)
/* Calculate new number of segments. */
newnsegs = (newsize * secsize) / lfs_sb_getssize(fs);
- if (newnsegs == fs->lfs_nseg) {
+ if (newnsegs == lfs_sb_getnseg(fs)) {
errx(0, "the filesystem is unchanged.");
}
@@ -145,7 +145,7 @@ main(int argc, char **argv)
* Make the cleaner do this for us.
* (XXX make the kernel able to do this instead?)
*/
- for (i = fs->lfs_nseg - 1; i >= newnsegs; --i) {
+ for (i = lfs_sb_getnseg(fs) - 1; i >= newnsegs; --i) {
char cmd[128];
/* If it's already empty, don't call the cleaner */
@@ -164,7 +164,7 @@ main(int argc, char **argv)
}
if (verbose)
- printf("Successfully resized %s from %d to %lld segments\n",
- fsname, fs->lfs_nseg, (long long)newnsegs);
+ printf("Successfully resized %s from %u to %lld segments\n",
+ fsname, lfs_sb_getnseg(fs), (long long)newnsegs);
return 0;
}
Index: src/sbin/scan_ffs/scan_ffs.c
diff -u src/sbin/scan_ffs/scan_ffs.c:1.26 src/sbin/scan_ffs/scan_ffs.c:1.27
--- src/sbin/scan_ffs/scan_ffs.c:1.26 Fri Jul 24 06:56:42 2015
+++ src/sbin/scan_ffs/scan_ffs.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: scan_ffs.c,v 1.26 2015/07/24 06:56:42 dholland Exp $ */
+/* $NetBSD: scan_ffs.c,v 1.27 2015/07/24 06:59:32 dholland Exp $ */
/*
* Copyright (c) 2005-2007 Juan Romero Pardines
@@ -33,7 +33,7 @@
#include <sys/cdefs.h>
#ifndef lint
-__RCSID("$NetBSD: scan_ffs.c,v 1.26 2015/07/24 06:56:42 dholland Exp $");
+__RCSID("$NetBSD: scan_ffs.c,v 1.27 2015/07/24 06:59:32 dholland Exp $");
#endif /* not lint */
#include <sys/types.h>
@@ -251,7 +251,7 @@ lfs_printpart(struct sblockinfo *sbi, in
(void)printf("offset: %" PRIu64 " size %" PRIu32
" fsid %" PRIx32 "\n", sbi->lfs_off,
lfs_sb_getsize(sbi->lfs),
- sbi->lfs->lfs_ident);
+ lfs_sb_getident(sbi->lfs));
switch (flag) {
case LABELS:
(void)printf("X: %9" PRIu64,
@@ -266,7 +266,7 @@ lfs_printpart(struct sblockinfo *sbi, in
case BLOCKS:
(void)printf("LFSv%d", sbi->lfs->lfs_version);
(void)printf(" sb at %" PRIu64, sbi->lfs_off + btodb(LFS_LABELPAD));
- (void)printf(" fsid %" PRIx32, sbi->lfs->lfs_ident);
+ (void)printf(" fsid %" PRIx32, lfs_sb_getident(sbi->lfs));
(void)printf(" size %" PRIu64 ", last mounted on %s\n",
(uint64_t)(lfs_sb_getsize(sbi->lfs) *
lfs_sb_getfsize(sbi->lfs) / 512), sbi->lfs_path);
@@ -284,8 +284,10 @@ lfs_printpart(struct sblockinfo *sbi, in
static void
lfs_scan(struct sblockinfo *sbi, int n)
{
+ size_t namesize;
+
/* Check to see if the sb checksums correctly */
- if (lfs_sb_cksum(&(sbi->lfs->lfs_dlfs)) != sbi->lfs->lfs_cksum) {
+ if (lfs_sb_cksum(&(sbi->lfs->lfs_dlfs)) != lfs_sb_getcksum(sbi->lfs)) {
if (flags & VERBOSE)
printf("LFS bad superblock at %" PRIu64 "\n",
BLK_CNT);
@@ -315,7 +317,11 @@ lfs_scan(struct sblockinfo *sbi, int n)
break;
case SECOND_SBLOCK_ADDRESS:
/* copy the path of last mount */
- (void)memcpy(sbi->lfs_path, sbi->lfs->lfs_fsmnt, MAXMNTLEN);
+ namesize = MIN(sizeof(sbi->lfs_path),
+ sizeof(sbi->lfs->lfs_dlfs.dlfs_fsmnt));
+ (void)memcpy(sbi->lfs_path, sbi->lfs->lfs_dlfs.dlfs_fsmnt,
+ namesize);
+ sbi->lfs_path[namesize - 1] = '\0';
/* print now that we have the info */
if (flags & LABELS)
lfs_printpart(sbi, LABELS, n);
Index: src/sys/ufs/lfs/lfs.h
diff -u src/sys/ufs/lfs/lfs.h:1.164 src/sys/ufs/lfs/lfs.h:1.165
--- src/sys/ufs/lfs/lfs.h:1.164 Fri Jul 24 06:56:42 2015
+++ src/sys/ufs/lfs/lfs.h Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs.h,v 1.164 2015/07/24 06:56:42 dholland Exp $ */
+/* $NetBSD: lfs.h,v 1.165 2015/07/24 06:59:32 dholland Exp $ */
/* from NetBSD: dinode.h,v 1.22 2013/01/22 09:39:18 dholland Exp */
/* from NetBSD: dir.h,v 1.21 2009/07/22 04:49:19 dholland Exp */
@@ -650,7 +650,7 @@ typedef struct _cleanerinfo {
} CLEANERINFO;
#define CLEANSIZE_SU(fs) \
- ((sizeof(CLEANERINFO) + lfs_sb_getbsize(fs) - 1) >> (fs)->lfs_bshift)
+ ((sizeof(CLEANERINFO) + lfs_sb_getbsize(fs) - 1) >> lfs_sb_getbshift(fs))
/* Read in the block with the cleaner info from the ifile. */
#define LFS_CLEANERINFO(CP, F, BP) do { \
@@ -842,7 +842,7 @@ struct dlfs {
u_int32_t dlfs_sumsize; /* 332: size of summary blocks */
u_int64_t dlfs_serial; /* 336: serial number */
u_int32_t dlfs_ibsize; /* 344: size of inode blocks */
- int32_t dlfs_start; /* 348: start of segment 0 */
+ int32_t dlfs_s0addr; /* 348: start of segment 0 */
u_int64_t dlfs_tstamp; /* 352: time stamp */
#define LFS_44INODEFMT 0
#define LFS_MAXINODEFMT 0
@@ -1026,73 +1026,41 @@ LFS_DEF_SB_ACCESSOR(int32_t, offset);
LFS_DEF_SB_ACCESSOR(int32_t, lastpseg);
LFS_DEF_SB_ACCESSOR(u_int32_t, inopf);
LFS_DEF_SB_ACCESSOR(u_int32_t, minfree);
-#define lfs_maxfilesize lfs_dlfs.dlfs_maxfilesize
LFS_DEF_SB_ACCESSOR(uint64_t, maxfilesize);
-#define lfs_fsbpseg lfs_dlfs.dlfs_fsbpseg
LFS_DEF_SB_ACCESSOR(u_int32_t, fsbpseg);
-#define lfs_inopb lfs_dlfs.dlfs_inopb
LFS_DEF_SB_ACCESSOR(u_int32_t, inopb);
LFS_DEF_SB_ACCESSOR(u_int32_t, ifpb);
LFS_DEF_SB_ACCESSOR(u_int32_t, sepb);
-#define lfs_nindir lfs_dlfs.dlfs_nindir
LFS_DEF_SB_ACCESSOR(u_int32_t, nindir);
-#define lfs_nseg lfs_dlfs.dlfs_nseg
LFS_DEF_SB_ACCESSOR(u_int32_t, nseg);
-#define lfs_nspf lfs_dlfs.dlfs_nspf
LFS_DEF_SB_ACCESSOR(u_int32_t, nspf);
LFS_DEF_SB_ACCESSOR(u_int32_t, cleansz);
LFS_DEF_SB_ACCESSOR(u_int32_t, segtabsz);
-#define lfs_segmask lfs_dlfs.dlfs_segmask
LFS_DEF_SB_ACCESSOR(u_int32_t, segmask);
-#define lfs_segshift lfs_dlfs.dlfs_segshift
LFS_DEF_SB_ACCESSOR(u_int32_t, segshift);
-#define lfs_bmask lfs_dlfs.dlfs_bmask
LFS_DEF_SB_ACCESSOR(u_int64_t, bmask);
-#define lfs_bshift lfs_dlfs.dlfs_bshift
LFS_DEF_SB_ACCESSOR(u_int32_t, bshift);
-#define lfs_ffmask lfs_dlfs.dlfs_ffmask
LFS_DEF_SB_ACCESSOR(u_int64_t, ffmask);
-#define lfs_ffshift lfs_dlfs.dlfs_ffshift
LFS_DEF_SB_ACCESSOR(u_int32_t, ffshift);
-#define lfs_fbmask lfs_dlfs.dlfs_fbmask
LFS_DEF_SB_ACCESSOR(u_int64_t, fbmask);
-#define lfs_fbshift lfs_dlfs.dlfs_fbshift
LFS_DEF_SB_ACCESSOR(u_int32_t, fbshift);
-#define lfs_blktodb lfs_dlfs.dlfs_blktodb
LFS_DEF_SB_ACCESSOR(u_int32_t, blktodb);
-#define lfs_fsbtodb lfs_dlfs.dlfs_fsbtodb
LFS_DEF_SB_ACCESSOR(u_int32_t, fsbtodb);
-#define lfs_sushift lfs_dlfs.dlfs_sushift
LFS_DEF_SB_ACCESSOR(u_int32_t, sushift);
-#define lfs_maxsymlinklen lfs_dlfs.dlfs_maxsymlinklen
LFS_DEF_SB_ACCESSOR(int32_t, maxsymlinklen);
-#define lfs_sboffs lfs_dlfs.dlfs_sboffs
-#define lfs_cksum lfs_dlfs.dlfs_cksum
LFS_DEF_SB_ACCESSOR(u_int32_t, cksum);
-#define lfs_pflags lfs_dlfs.dlfs_pflags
LFS_DEF_SB_ACCESSOR(u_int16_t, pflags);
-#define lfs_fsmnt lfs_dlfs.dlfs_fsmnt
-#define lfs_nclean lfs_dlfs.dlfs_nclean
LFS_DEF_SB_ACCESSOR(u_int32_t, nclean);
-#define lfs_dmeta lfs_dlfs.dlfs_dmeta
LFS_DEF_SB_ACCESSOR(int32_t, dmeta);
-#define lfs_minfreeseg lfs_dlfs.dlfs_minfreeseg
LFS_DEF_SB_ACCESSOR(u_int32_t, minfreeseg);
-#define lfs_sumsize lfs_dlfs.dlfs_sumsize
LFS_DEF_SB_ACCESSOR(u_int32_t, sumsize);
LFS_DEF_SB_ACCESSOR(u_int64_t, serial);
-#define lfs_ibsize lfs_dlfs.dlfs_ibsize
LFS_DEF_SB_ACCESSOR(u_int32_t, ibsize);
-#define lfs_s0addr lfs_dlfs.dlfs_start
-LFS_DEF_SB_ACCESSOR(int32_t, start);
+LFS_DEF_SB_ACCESSOR(int32_t, s0addr);
LFS_DEF_SB_ACCESSOR(u_int64_t, tstamp);
-#define lfs_inodefmt lfs_dlfs.dlfs_inodefmt
LFS_DEF_SB_ACCESSOR(u_int32_t, inodefmt);
-#define lfs_interleave lfs_dlfs.dlfs_interleave
LFS_DEF_SB_ACCESSOR(u_int32_t, interleave);
-#define lfs_ident lfs_dlfs.dlfs_ident
LFS_DEF_SB_ACCESSOR(u_int32_t, ident);
-#define lfs_resvseg lfs_dlfs.dlfs_resvseg
LFS_DEF_SB_ACCESSOR(u_int32_t, resvseg);
/* special-case accessors */
@@ -1103,53 +1071,81 @@ LFS_DEF_SB_ACCESSOR(u_int32_t, resvseg);
#define lfs_sb_getotstamp(fs) lfs_sb_getinopf(fs)
#define lfs_sb_setotstamp(fs, val) lfs_sb_setinopf(fs, val)
+/*
+ * lfs_sboffs is an array
+ */
+static __unused inline int32_t
+lfs_sb_getsboff(struct lfs *fs, unsigned n)
+{
+#ifdef KASSERT /* ugh */
+ KASSERT(n < LFS_MAXNUMSB);
+#endif
+ return fs->lfs_dlfs.dlfs_sboffs[n];
+}
+static __unused inline void
+lfs_sb_setsboff(struct lfs *fs, unsigned n, int32_t val)
+{
+#ifdef KASSERT /* ugh */
+ KASSERT(n < LFS_MAXNUMSB);
+#endif
+ fs->lfs_dlfs.dlfs_sboffs[n] = val;
+}
+
+/*
+ * lfs_fsmnt is a string
+ */
+static __unused inline const char *
+lfs_sb_getfsmnt(struct lfs *fs)
+{
+ return fs->lfs_dlfs.dlfs_fsmnt;
+}
/* LFS_NINDIR is the number of indirects in a file system block. */
-#define LFS_NINDIR(fs) ((fs)->lfs_nindir)
+#define LFS_NINDIR(fs) (lfs_sb_getnindir(fs))
/* LFS_INOPB is the number of inodes in a secondary storage block. */
-#define LFS_INOPB(fs) ((fs)->lfs_inopb)
+#define LFS_INOPB(fs) (lfs_sb_getinopb(fs))
/* LFS_INOPF is the number of inodes in a fragment. */
-#define LFS_INOPF(fs) ((fs)->lfs_inopf)
+#define LFS_INOPF(fs) (lfs_sb_getinopf(fs))
#define lfs_blksize(fs, ip, lbn) \
- (((lbn) >= ULFS_NDADDR || (ip)->i_ffs1_size >= ((lbn) + 1) << (fs)->lfs_bshift) \
+ (((lbn) >= ULFS_NDADDR || (ip)->i_ffs1_size >= ((lbn) + 1) << lfs_sb_getbshift(fs)) \
? lfs_sb_getbsize(fs) \
: (lfs_fragroundup(fs, lfs_blkoff(fs, (ip)->i_ffs1_size))))
-#define lfs_blkoff(fs, loc) ((int)((loc) & (fs)->lfs_bmask))
+#define lfs_blkoff(fs, loc) ((int)((loc) & lfs_sb_getbmask(fs)))
#define lfs_fragoff(fs, loc) /* calculates (loc % fs->lfs_fsize) */ \
- ((int)((loc) & (fs)->lfs_ffmask))
+ ((int)((loc) & lfs_sb_getffmask(fs)))
#if defined(_KERNEL)
-#define LFS_FSBTODB(fs, b) ((b) << ((fs)->lfs_ffshift - DEV_BSHIFT))
-#define LFS_DBTOFSB(fs, b) ((b) >> ((fs)->lfs_ffshift - DEV_BSHIFT))
+#define LFS_FSBTODB(fs, b) ((b) << (lfs_sb_getffshift(fs) - DEV_BSHIFT))
+#define LFS_DBTOFSB(fs, b) ((b) >> (lfs_sb_getffshift(fs) - DEV_BSHIFT))
#else
-#define LFS_FSBTODB(fs, b) ((b) << (fs)->lfs_fsbtodb)
-#define LFS_DBTOFSB(fs, b) ((b) >> (fs)->lfs_fsbtodb)
+#define LFS_FSBTODB(fs, b) ((b) << lfs_sb_getfsbtodb(fs))
+#define LFS_DBTOFSB(fs, b) ((b) >> lfs_sb_getfsbtodb(fs))
#endif
-#define lfs_lblkno(fs, loc) ((loc) >> (fs)->lfs_bshift)
-#define lfs_lblktosize(fs, blk) ((blk) << (fs)->lfs_bshift)
+#define lfs_lblkno(fs, loc) ((loc) >> lfs_sb_getbshift(fs))
+#define lfs_lblktosize(fs, blk) ((blk) << lfs_sb_getbshift(fs))
-#define lfs_fsbtob(fs, b) ((b) << (fs)->lfs_ffshift)
-#define lfs_btofsb(fs, b) ((b) >> (fs)->lfs_ffshift)
+#define lfs_fsbtob(fs, b) ((b) << lfs_sb_getffshift(fs))
+#define lfs_btofsb(fs, b) ((b) >> lfs_sb_getffshift(fs))
#define lfs_numfrags(fs, loc) /* calculates (loc / fs->lfs_fsize) */ \
- ((loc) >> (fs)->lfs_ffshift)
+ ((loc) >> lfs_sb_getffshift(fs))
#define lfs_blkroundup(fs, size)/* calculates roundup(size, lfs_sb_getbsize(fs)) */ \
- ((off_t)(((size) + (fs)->lfs_bmask) & (~(fs)->lfs_bmask)))
+ ((off_t)(((size) + lfs_sb_getbmask(fs)) & (~lfs_sb_getbmask(fs))))
#define lfs_fragroundup(fs, size)/* calculates roundup(size, fs->lfs_fsize) */ \
- ((off_t)(((size) + (fs)->lfs_ffmask) & (~(fs)->lfs_ffmask)))
+ ((off_t)(((size) + lfs_sb_getffmask(fs)) & (~lfs_sb_getffmask(fs))))
#define lfs_fragstoblks(fs, frags)/* calculates (frags / fs->fs_frag) */ \
- ((frags) >> (fs)->lfs_fbshift)
+ ((frags) >> lfs_sb_getfbshift(fs))
#define lfs_blkstofrags(fs, blks)/* calculates (blks * fs->fs_frag) */ \
- ((blks) << (fs)->lfs_fbshift)
+ ((blks) << lfs_sb_getfbshift(fs))
#define lfs_fragnum(fs, fsb) /* calculates (fsb % fs->lfs_frag) */ \
((fsb) & ((fs)->lfs_frag - 1))
#define lfs_blknum(fs, fsb) /* calculates rounddown(fsb, fs->lfs_frag) */ \
((fsb) &~ ((fs)->lfs_frag - 1))
#define lfs_dblksize(fs, dp, lbn) \
- (((lbn) >= ULFS_NDADDR || (dp)->di_size >= ((lbn) + 1) << (fs)->lfs_bshift)\
+ (((lbn) >= ULFS_NDADDR || (dp)->di_size >= ((lbn) + 1) << lfs_sb_getbshift(fs)) \
? lfs_sb_getbsize(fs) \
: (lfs_fragroundup(fs, lfs_blkoff(fs, (dp)->di_size))))
@@ -1157,12 +1153,12 @@ LFS_DEF_SB_ACCESSOR(u_int32_t, resvseg);
lfs_lblktosize((fs), lfs_sb_getssize(fs)) : \
lfs_sb_getssize(fs))
#define lfs_segtod(fs, seg) (((fs)->lfs_version == 1 ? \
- lfs_sb_getssize(fs) << (fs)->lfs_blktodb : \
+ lfs_sb_getssize(fs) << lfs_sb_getblktodb(fs) : \
lfs_btofsb((fs), lfs_sb_getssize(fs))) * (seg))
#define lfs_dtosn(fs, daddr) /* block address to segment number */ \
- ((uint32_t)(((daddr) - (fs)->lfs_s0addr) / lfs_segtod((fs), 1)))
+ ((uint32_t)(((daddr) - lfs_sb_gets0addr(fs)) / lfs_segtod((fs), 1)))
#define lfs_sntod(fs, sn) /* segment number to disk address */ \
- ((daddr_t)(lfs_segtod((fs), (sn)) + (fs)->lfs_s0addr))
+ ((daddr_t)(lfs_segtod((fs), (sn)) + lfs_sb_gets0addr(fs)))
/*
* Structures used by lfs_bmapv and lfs_markv to communicate information
Index: src/sys/ufs/lfs/lfs_alloc.c
diff -u src/sys/ufs/lfs/lfs_alloc.c:1.122 src/sys/ufs/lfs/lfs_alloc.c:1.123
--- src/sys/ufs/lfs/lfs_alloc.c:1.122 Fri Jul 24 06:56:42 2015
+++ src/sys/ufs/lfs/lfs_alloc.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs_alloc.c,v 1.122 2015/07/24 06:56:42 dholland Exp $ */
+/* $NetBSD: lfs_alloc.c,v 1.123 2015/07/24 06:59:32 dholland Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001, 2002, 2003, 2007 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_alloc.c,v 1.122 2015/07/24 06:56:42 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_alloc.c,v 1.123 2015/07/24 06:59:32 dholland Exp $");
#if defined(_KERNEL_OPT)
#include "opt_quota.h"
@@ -136,7 +136,7 @@ lfs_extend_ifile(struct lfs *fs, kauth_c
ip->i_ffs1_size = ip->i_size;
uvm_vnp_setsize(vp, ip->i_size);
- maxino = ((ip->i_size >> fs->lfs_bshift) - lfs_sb_getcleansz(fs) -
+ maxino = ((ip->i_size >> lfs_sb_getbshift(fs)) - lfs_sb_getcleansz(fs) -
lfs_sb_getsegtabsz(fs)) * lfs_sb_getifpb(fs);
fs->lfs_ino_bitmap = (lfs_bm_t *)
realloc(fs->lfs_ino_bitmap, ((maxino + BMMASK) >> BMSHIFT) *
@@ -268,7 +268,7 @@ lfs_valloc_fixed(struct lfs *fs, ino_t i
/* If the Ifile is too short to contain this inum, extend it */
while (VTOI(fs->lfs_ivnode)->i_size <= (ino /
lfs_sb_getifpb(fs) + lfs_sb_getcleansz(fs) + lfs_sb_getsegtabsz(fs))
- << fs->lfs_bshift) {
+ << lfs_sb_getbshift(fs)) {
lfs_extend_ifile(fs, NOCRED);
}
@@ -311,7 +311,7 @@ lfs_last_alloc_ino(struct lfs *fs)
{
ino_t ino, maxino;
- maxino = ((fs->lfs_ivnode->v_size >> fs->lfs_bshift) -
+ maxino = ((fs->lfs_ivnode->v_size >> lfs_sb_getbshift(fs)) -
lfs_sb_getcleansz(fs) - lfs_sb_getsegtabsz(fs)) * fs->lfs_ifpb;
for (ino = maxino - 1; ino > LFS_UNUSED_INUM; --ino) {
if (ISSET_BITMAP_FREE(fs, ino) == 0)
@@ -553,7 +553,7 @@ lfs_order_freelist(struct lfs *fs)
ASSERT_NO_SEGLOCK(fs);
lfs_seglock(fs, SEGM_PROT);
- maxino = ((fs->lfs_ivnode->v_size >> fs->lfs_bshift) -
+ maxino = ((fs->lfs_ivnode->v_size >> lfs_sb_getbshift(fs)) -
lfs_sb_getcleansz(fs) - lfs_sb_getsegtabsz(fs)) * lfs_sb_getifpb(fs);
fs->lfs_ino_bitmap =
malloc(((maxino + BMMASK) >> BMSHIFT) * sizeof(lfs_bm_t),
Index: src/sys/ufs/lfs/lfs_balloc.c
diff -u src/sys/ufs/lfs/lfs_balloc.c:1.82 src/sys/ufs/lfs/lfs_balloc.c:1.83
--- src/sys/ufs/lfs/lfs_balloc.c:1.82 Fri Jul 24 06:56:42 2015
+++ src/sys/ufs/lfs/lfs_balloc.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs_balloc.c,v 1.82 2015/07/24 06:56:42 dholland Exp $ */
+/* $NetBSD: lfs_balloc.c,v 1.83 2015/07/24 06:59:32 dholland Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_balloc.c,v 1.82 2015/07/24 06:56:42 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_balloc.c,v 1.83 2015/07/24 06:59:32 dholland Exp $");
#if defined(_KERNEL_OPT)
#include "opt_quota.h"
@@ -501,7 +501,7 @@ lfs_register_block(struct vnode *vp, dad
ASSERT_NO_SEGLOCK(fs);
/* If no space, wait for the cleaner */
- lfs_availwait(fs, lfs_btofsb(fs, 1 << fs->lfs_bshift));
+ lfs_availwait(fs, lfs_btofsb(fs, 1 << lfs_sb_getbshift(fs)));
lbp = (struct lbnentry *)pool_get(&lfs_lbnentry_pool, PR_WAITOK);
lbp->lbn = lbn;
@@ -514,7 +514,7 @@ lfs_register_block(struct vnode *vp, dad
}
++ip->i_lfs_nbtree;
- fs->lfs_favail += lfs_btofsb(fs, (1 << fs->lfs_bshift));
+ fs->lfs_favail += lfs_btofsb(fs, (1 << lfs_sb_getbshift(fs)));
fs->lfs_pages += lfs_sb_getbsize(fs) >> PAGE_SHIFT;
++locked_fakequeue_count;
lfs_subsys_pages += lfs_sb_getbsize(fs) >> PAGE_SHIFT;
@@ -529,8 +529,8 @@ lfs_do_deregister(struct lfs *fs, struct
mutex_enter(&lfs_lock);
--ip->i_lfs_nbtree;
SPLAY_REMOVE(lfs_splay, &ip->i_lfs_lbtree, lbp);
- if (fs->lfs_favail > lfs_btofsb(fs, (1 << fs->lfs_bshift)))
- fs->lfs_favail -= lfs_btofsb(fs, (1 << fs->lfs_bshift));
+ if (fs->lfs_favail > lfs_btofsb(fs, (1 << lfs_sb_getbshift(fs))))
+ fs->lfs_favail -= lfs_btofsb(fs, (1 << lfs_sb_getbshift(fs)));
fs->lfs_pages -= lfs_sb_getbsize(fs) >> PAGE_SHIFT;
if (locked_fakequeue_count > 0)
--locked_fakequeue_count;
Index: src/sys/ufs/lfs/lfs_subr.c
diff -u src/sys/ufs/lfs/lfs_subr.c:1.82 src/sys/ufs/lfs/lfs_subr.c:1.83
--- src/sys/ufs/lfs/lfs_subr.c:1.82 Fri Jul 24 06:56:42 2015
+++ src/sys/ufs/lfs/lfs_subr.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs_subr.c,v 1.82 2015/07/24 06:56:42 dholland Exp $ */
+/* $NetBSD: lfs_subr.c,v 1.83 2015/07/24 06:59:32 dholland Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_subr.c,v 1.82 2015/07/24 06:56:42 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_subr.c,v 1.83 2015/07/24 06:59:32 dholland Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -120,7 +120,7 @@ lfs_setup_resblks(struct lfs *fs)
* so we can't use the pool subsystem for them.
*/
for (i = 0, j = 0; j < LFS_N_SUMMARIES; j++, i++)
- fs->lfs_resblk[i].size = fs->lfs_sumsize;
+ fs->lfs_resblk[i].size = lfs_sb_getsumsize(fs);
for (j = 0; j < LFS_N_SBLOCKS; j++, i++)
fs->lfs_resblk[i].size = LFS_SBPAD;
for (j = 0; j < LFS_N_IBLOCKS; j++, i++)
@@ -144,7 +144,7 @@ lfs_setup_resblks(struct lfs *fs)
"lfsclpl", &pool_allocator_nointr, IPL_NONE);
pool_init(&fs->lfs_segpool, sizeof(struct segment), 0, 0, 0,
"lfssegpool", &pool_allocator_nointr, IPL_NONE);
- maxbpp = ((fs->lfs_sumsize - SEGSUM_SIZE(fs)) / sizeof(int32_t) + 2);
+ maxbpp = ((lfs_sb_getsumsize(fs) - SEGSUM_SIZE(fs)) / sizeof(int32_t) + 2);
maxbpp = MIN(maxbpp, lfs_segsize(fs) / lfs_sb_getfsize(fs) + 2);
pool_init(&fs->lfs_bpppool, maxbpp * sizeof(struct buf *), 0, 0, 0,
"lfsbpppl", &pool_allocator_nointr, IPL_NONE);
@@ -396,7 +396,7 @@ lfs_auto_segclean(struct lfs *fs)
* XXX - do we really need to do them all at once?
*/
waited = 0;
- for (i = 0; i < fs->lfs_nseg; i++) {
+ for (i = 0; i < lfs_sb_getnseg(fs); i++) {
if ((fs->lfs_suflags[0][i] &
(SEGUSE_ACTIVE | SEGUSE_DIRTY | SEGUSE_EMPTY)) ==
(SEGUSE_DIRTY | SEGUSE_EMPTY) &&
@@ -522,8 +522,8 @@ lfs_segunlock(struct lfs *fs)
/* If we *know* everything's on disk, write both sbs */
/* XXX should wait for this one */
if (sync)
- lfs_writesuper(fs, fs->lfs_sboffs[fs->lfs_activesb]);
- lfs_writesuper(fs, fs->lfs_sboffs[1 - fs->lfs_activesb]);
+ lfs_writesuper(fs, lfs_sb_getsboff(fs, fs->lfs_activesb));
+ lfs_writesuper(fs, lfs_sb_getsboff(fs, 1 - fs->lfs_activesb));
if (!(fs->lfs_ivnode->v_mount->mnt_iflag & IMNT_UNMOUNT)) {
lfs_auto_segclean(fs);
/* If sync, we can clean the remainder too */
Index: src/sys/ufs/lfs/lfs_bio.c
diff -u src/sys/ufs/lfs/lfs_bio.c:1.129 src/sys/ufs/lfs/lfs_bio.c:1.130
--- src/sys/ufs/lfs/lfs_bio.c:1.129 Fri Jul 24 06:56:42 2015
+++ src/sys/ufs/lfs/lfs_bio.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs_bio.c,v 1.129 2015/07/24 06:56:42 dholland Exp $ */
+/* $NetBSD: lfs_bio.c,v 1.130 2015/07/24 06:59:32 dholland Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001, 2002, 2003, 2008 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_bio.c,v 1.129 2015/07/24 06:56:42 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_bio.c,v 1.130 2015/07/24 06:59:32 dholland Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -361,7 +361,7 @@ lfs_fits(struct lfs *fs, int fsb)
needed = fsb + lfs_btofsb(fs, lfs_sb_getsumsize(fs)) +
((howmany(lfs_sb_getuinodes(fs) + 1, LFS_INOPB(fs)) +
lfs_sb_getsegtabsz(fs) +
- 1) << (fs->lfs_bshift - fs->lfs_ffshift));
+ 1) << (lfs_sb_getbshift(fs) - lfs_sb_getffshift(fs)));
if (needed >= lfs_sb_getavail(fs)) {
#ifdef DEBUG
@@ -443,7 +443,7 @@ lfs_bwrite_ext(struct buf *bp, int flags
*
* In particular the cleaner can't write blocks either.
*/
- if (fs->lfs_ronly || (fs->lfs_pflags & LFS_PF_CLEAN)) {
+ if (fs->lfs_ronly || (lfs_sb_getpflags(fs) & LFS_PF_CLEAN)) {
bp->b_oflags &= ~BO_DELWRI;
bp->b_flags |= B_READ; /* XXX is this right? --ks */
bp->b_error = 0;
Index: src/sys/ufs/lfs/lfs_inode.c
diff -u src/sys/ufs/lfs/lfs_inode.c:1.138 src/sys/ufs/lfs/lfs_inode.c:1.139
--- src/sys/ufs/lfs/lfs_inode.c:1.138 Fri Jul 24 06:56:42 2015
+++ src/sys/ufs/lfs/lfs_inode.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs_inode.c,v 1.138 2015/07/24 06:56:42 dholland Exp $ */
+/* $NetBSD: lfs_inode.c,v 1.139 2015/07/24 06:59:32 dholland Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_inode.c,v 1.138 2015/07/24 06:56:42 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_inode.c,v 1.139 2015/07/24 06:59:32 dholland Exp $");
#if defined(_KERNEL_OPT)
#include "opt_quota.h"
@@ -285,7 +285,7 @@ lfs_truncate(struct vnode *ovp, off_t le
if (ioflag & IO_SYNC) {
mutex_enter(ovp->v_interlock);
VOP_PUTPAGES(ovp,
- trunc_page(osize & fs->lfs_bmask),
+ trunc_page(osize & lfs_sb_getbmask(fs)),
round_page(eob),
PGO_CLEANIT | PGO_SYNCIO);
}
@@ -305,13 +305,13 @@ lfs_truncate(struct vnode *ovp, off_t le
return (lfs_update(ovp, NULL, NULL, 0));
} else {
error = lfs_reserve(fs, ovp, NULL,
- lfs_btofsb(fs, (ULFS_NIADDR + 2) << fs->lfs_bshift));
+ lfs_btofsb(fs, (ULFS_NIADDR + 2) << lfs_sb_getbshift(fs)));
if (error)
return (error);
error = lfs_balloc(ovp, length - 1, 1, cred,
aflags, &bp);
lfs_reserve(fs, ovp, NULL,
- -lfs_btofsb(fs, (ULFS_NIADDR + 2) << fs->lfs_bshift));
+ -lfs_btofsb(fs, (ULFS_NIADDR + 2) << lfs_sb_getbshift(fs)));
if (error)
return (error);
oip->i_ffs1_size = oip->i_size = length;
@@ -324,7 +324,7 @@ lfs_truncate(struct vnode *ovp, off_t le
}
if ((error = lfs_reserve(fs, ovp, NULL,
- lfs_btofsb(fs, (2 * ULFS_NIADDR + 3) << fs->lfs_bshift))) != 0)
+ lfs_btofsb(fs, (2 * ULFS_NIADDR + 3) << lfs_sb_getbshift(fs)))) != 0)
return (error);
/*
@@ -351,7 +351,7 @@ lfs_truncate(struct vnode *ovp, off_t le
error = lfs_balloc(ovp, length - 1, 1, cred, aflags, &bp);
if (error) {
lfs_reserve(fs, ovp, NULL,
- -lfs_btofsb(fs, (2 * ULFS_NIADDR + 3) << fs->lfs_bshift));
+ -lfs_btofsb(fs, (2 * ULFS_NIADDR + 3) << lfs_sb_getbshift(fs)));
goto errout;
}
obufsize = bp->b_bufsize;
@@ -391,7 +391,7 @@ lfs_truncate(struct vnode *ovp, off_t le
error = ulfs_balloc_range(ovp, length - 1, 1, cred, aflags);
if (error) {
lfs_reserve(fs, ovp, NULL,
- -lfs_btofsb(fs, (2 * ULFS_NIADDR + 3) << fs->lfs_bshift));
+ -lfs_btofsb(fs, (2 * ULFS_NIADDR + 3) << lfs_sb_getbshift(fs)));
goto errout;
}
xlbn = lfs_lblkno(fs, length);
@@ -407,7 +407,7 @@ lfs_truncate(struct vnode *ovp, off_t le
((ioflag & IO_SYNC) ? PGO_SYNCIO : 0));
if (error) {
lfs_reserve(fs, ovp, NULL,
- -lfs_btofsb(fs, (2 * ULFS_NIADDR + 3) << fs->lfs_bshift));
+ -lfs_btofsb(fs, (2 * ULFS_NIADDR + 3) << lfs_sb_getbshift(fs)));
goto errout;
}
}
@@ -593,7 +593,7 @@ done:
(void) lfs_chkdq(oip, -blocksreleased, NOCRED, 0);
#endif
lfs_reserve(fs, ovp, NULL,
- -lfs_btofsb(fs, (2 * ULFS_NIADDR + 3) << fs->lfs_bshift));
+ -lfs_btofsb(fs, (2 * ULFS_NIADDR + 3) << lfs_sb_getbshift(fs)));
genfs_node_unlock(ovp);
errout:
oip->i_lfs_hiblk = lfs_lblkno(fs, oip->i_size + lfs_sb_getbsize(fs) - 1) - 1;
Index: src/sys/ufs/lfs/lfs_pages.c
diff -u src/sys/ufs/lfs/lfs_pages.c:1.2 src/sys/ufs/lfs/lfs_pages.c:1.3
--- src/sys/ufs/lfs/lfs_pages.c:1.2 Fri Jul 24 06:56:42 2015
+++ src/sys/ufs/lfs/lfs_pages.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs_pages.c,v 1.2 2015/07/24 06:56:42 dholland Exp $ */
+/* $NetBSD: lfs_pages.c,v 1.3 2015/07/24 06:59:32 dholland Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_pages.c,v 1.2 2015/07/24 06:56:42 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_pages.c,v 1.3 2015/07/24 06:59:32 dholland Exp $");
#ifdef _KERNEL_OPT
#include "opt_compat_netbsd.h"
@@ -278,7 +278,7 @@ check_dirty(struct lfs *fs, struct vnode
|| (curpg->flags & PG_MARKER) == 0);
if (pages_per_block > 1) {
while (curpg &&
- ((curpg->offset & fs->lfs_bmask) ||
+ ((curpg->offset & lfs_sb_getbmask(fs)) ||
curpg->offset >= vp->v_size ||
curpg->offset >= endoffset)) {
curpg = TAILQ_NEXT(curpg, listq.queue);
@@ -550,9 +550,9 @@ lfs_putpages(void *v)
*/
origoffset = ap->a_offlo;
origendoffset = ap->a_offhi;
- startoffset = origoffset & ~(fs->lfs_bmask);
- max_endoffset = (trunc_page(LLONG_MAX) >> fs->lfs_bshift)
- << fs->lfs_bshift;
+ startoffset = origoffset & ~(lfs_sb_getbmask(fs));
+ max_endoffset = (trunc_page(LLONG_MAX) >> lfs_sb_getbshift(fs))
+ << lfs_sb_getbshift(fs);
if (origendoffset == 0 || ap->a_flags & PGO_ALLPAGES) {
endoffset = max_endoffset;
Index: src/sys/ufs/lfs/lfs_rfw.c
diff -u src/sys/ufs/lfs/lfs_rfw.c:1.22 src/sys/ufs/lfs/lfs_rfw.c:1.23
--- src/sys/ufs/lfs/lfs_rfw.c:1.22 Fri Jul 24 06:56:42 2015
+++ src/sys/ufs/lfs/lfs_rfw.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs_rfw.c,v 1.22 2015/07/24 06:56:42 dholland Exp $ */
+/* $NetBSD: lfs_rfw.c,v 1.23 2015/07/24 06:59:32 dholland Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_rfw.c,v 1.22 2015/07/24 06:56:42 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_rfw.c,v 1.23 2015/07/24 06:59:32 dholland Exp $");
#if defined(_KERNEL_OPT)
#include "opt_quota.h"
@@ -184,7 +184,7 @@ update_meta(struct lfs *fs, ino_t ino, i
return error;
}
- if ((error = lfs_balloc(vp, (lbn << fs->lfs_bshift), size,
+ if ((error = lfs_balloc(vp, (lbn << lfs_sb_getbshift(fs)), size,
NOCRED, 0, &bp)) != 0) {
vput(vp);
return (error);
@@ -204,14 +204,14 @@ update_meta(struct lfs *fs, ino_t ino, i
* XXX appear later to give the correct size.
*/
ip = VTOI(vp);
- if (ip->i_size <= (lbn << fs->lfs_bshift)) {
+ if (ip->i_size <= (lbn << lfs_sb_getbshift(fs))) {
u_int64_t newsize;
if (lbn < ULFS_NDADDR)
- newsize = ip->i_ffs1_size = (lbn << fs->lfs_bshift) +
+ newsize = ip->i_ffs1_size = (lbn << lfs_sb_getbshift(fs)) +
(size - lfs_sb_getfsize(fs)) + 1;
else
- newsize = ip->i_ffs1_size = (lbn << fs->lfs_bshift) + 1;
+ newsize = ip->i_ffs1_size = (lbn << lfs_sb_getbshift(fs)) + 1;
if (ip->i_size < newsize) {
ip->i_size = newsize;
@@ -268,7 +268,7 @@ update_inoblk(struct lfs *fs, daddr_t of
* Get the inode, update times and perms.
* DO NOT update disk blocks, we do that separately.
*/
- error = bread(devvp, LFS_FSBTODB(fs, offset), fs->lfs_ibsize,
+ error = bread(devvp, LFS_FSBTODB(fs, offset), lfs_sb_getibsize(fs),
0, &dbp);
if (error) {
DLOG((DLOG_RF, "update_inoblk: bread returned %d\n", error));
@@ -368,7 +368,7 @@ check_segsum(struct lfs *fs, daddr_t off
}
/* Read in the segment summary */
- error = bread(devvp, LFS_FSBTODB(fs, offset), fs->lfs_sumsize,
+ error = bread(devvp, LFS_FSBTODB(fs, offset), lfs_sb_getsumsize(fs),
0, &bp);
if (error)
return -1;
@@ -377,7 +377,7 @@ check_segsum(struct lfs *fs, daddr_t off
ssp = (SEGSUM *)bp->b_data;
if (flags & CHECK_CKSUM) {
if (ssp->ss_sumsum != cksum(&ssp->ss_datasum,
- fs->lfs_sumsize -
+ lfs_sb_getsumsize(fs) -
sizeof(ssp->ss_sumsum))) {
DLOG((DLOG_RF, "Sumsum error at 0x%" PRIx64 "\n", offset));
offset = -1;
@@ -401,9 +401,9 @@ check_segsum(struct lfs *fs, daddr_t off
offset = -1;
goto err1;
}
- if (ssp->ss_ident != fs->lfs_ident) {
+ if (ssp->ss_ident != lfs_sb_getident(fs)) {
DLOG((DLOG_RF, "Incorrect fsid (0x%x vs 0x%x) at 0x%"
- PRIx64 "\n", ssp->ss_ident, fs->lfs_ident, offset));
+ PRIx64 "\n", ssp->ss_ident, lfs_sb_getident(fs), offset));
offset = -1;
goto err1;
}
@@ -411,11 +411,11 @@ check_segsum(struct lfs *fs, daddr_t off
if (pseg_flags)
*pseg_flags = ssp->ss_flags;
oldoffset = offset;
- offset += lfs_btofsb(fs, fs->lfs_sumsize);
+ offset += lfs_btofsb(fs, lfs_sb_getsumsize(fs));
ninos = howmany(ssp->ss_ninos, LFS_INOPB(fs));
/* XXX ondisk32 */
- iaddr = (int32_t *)((char*)bp->b_data + fs->lfs_sumsize - sizeof(int32_t));
+ iaddr = (int32_t *)((char*)bp->b_data + lfs_sb_getsumsize(fs) - sizeof(int32_t));
if (flags & CHECK_CKSUM) {
/* Count blocks */
nblocks = 0;
@@ -457,7 +457,7 @@ check_segsum(struct lfs *fs, daddr_t off
goto err2;
}
}
- offset += lfs_btofsb(fs, fs->lfs_ibsize);
+ offset += lfs_btofsb(fs, lfs_sb_getibsize(fs));
--iaddr;
--ninos;
--i; /* compensate */
@@ -503,7 +503,7 @@ check_segsum(struct lfs *fs, daddr_t off
}
/* If we're at the end of the segment, move to the next */
- if (lfs_dtosn(fs, offset + lfs_btofsb(fs, fs->lfs_sumsize + lfs_sb_getbsize(fs))) !=
+ if (lfs_dtosn(fs, offset + lfs_btofsb(fs, lfs_sb_getsumsize(fs) + lfs_sb_getbsize(fs))) !=
lfs_dtosn(fs, offset)) {
if (lfs_dtosn(fs, offset) == lfs_dtosn(fs, ssp->ss_next)) {
offset = -1;
@@ -561,7 +561,7 @@ lfs_roll_forward(struct lfs *fs, struct
* v2 filesystems don't have this problem because they use a
* monotonically increasing serial number instead of a timestamp.
*/
- do_rollforward = (!(fs->lfs_pflags & LFS_PF_CLEAN) &&
+ do_rollforward = (!(lfs_sb_getpflags(fs) & LFS_PF_CLEAN) &&
lfs_do_rfw && fs->lfs_version > 1 && p != NULL);
if (do_rollforward) {
u_int64_t nextserial;
@@ -577,7 +577,7 @@ lfs_roll_forward(struct lfs *fs, struct
PRIx64 "\n", offset));
LFS_SEGENTRY(sup, fs, lfs_dtosn(fs, offset), bp);
if (!(sup->su_flags & SEGUSE_DIRTY))
- --fs->lfs_nclean;
+ lfs_sb_subnclean(fs, 1);
sup->su_flags |= SEGUSE_DIRTY;
LFS_WRITESEGENTRY(sup, fs, lfs_dtosn(fs, offset), bp);
nextserial = lfs_sb_getserial(fs) + 1;
@@ -588,7 +588,7 @@ lfs_roll_forward(struct lfs *fs, struct
LFS_SEGENTRY(sup, fs, lfs_dtosn(fs, oldoffset),
bp);
if (!(sup->su_flags & SEGUSE_DIRTY))
- --fs->lfs_nclean;
+ lfs_sb_subnclean(fs, 1);
sup->su_flags |= SEGUSE_DIRTY;
LFS_WRITESEGENTRY(sup, fs, lfs_dtosn(fs, oldoffset),
bp);
@@ -621,7 +621,7 @@ lfs_roll_forward(struct lfs *fs, struct
lfs_sb_setoffset(fs, lastgoodpseg);
lfs_sb_setcurseg(fs, lfs_sntod(fs, lfs_dtosn(fs, lfs_sb_getoffset(fs))));
for (sn = curseg = lfs_dtosn(fs, lfs_sb_getcurseg(fs));;) {
- sn = (sn + 1) % fs->lfs_nseg;
+ sn = (sn + 1) % lfs_sb_getnseg(fs);
if (sn == curseg)
panic("lfs_mountfs: no clean segments");
LFS_SEGENTRY(sup, fs, sn, bp);
Index: src/sys/ufs/lfs/lfs_segment.c
diff -u src/sys/ufs/lfs/lfs_segment.c:1.242 src/sys/ufs/lfs/lfs_segment.c:1.243
--- src/sys/ufs/lfs/lfs_segment.c:1.242 Fri Jul 24 06:56:42 2015
+++ src/sys/ufs/lfs/lfs_segment.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs_segment.c,v 1.242 2015/07/24 06:56:42 dholland Exp $ */
+/* $NetBSD: lfs_segment.c,v 1.243 2015/07/24 06:59:32 dholland Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_segment.c,v 1.242 2015/07/24 06:56:42 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_segment.c,v 1.243 2015/07/24 06:59:32 dholland Exp $");
#define _VFS_VNODE_PRIVATE /* XXX: check for VI_MARKER, this has to go */
@@ -133,7 +133,7 @@ static void lfs_cluster_callback(struct
((flags & SEGM_CLEAN) == 0 && \
((fs->lfs_nactive > LFS_MAX_ACTIVE || \
(flags & SEGM_CKP) || \
- fs->lfs_nclean < LFS_MAX_ACTIVE)))
+ lfs_sb_getnclean(fs) < LFS_MAX_ACTIVE)))
int lfs_match_fake(struct lfs *, struct buf *);
void lfs_newseg(struct lfs *);
@@ -692,7 +692,7 @@ lfs_segwrite(struct mount *mp, int flags
* last checkpoint as no longer ACTIVE.
*/
if (do_ckp || fs->lfs_doifile) {
- segleft = fs->lfs_nseg;
+ segleft = lfs_sb_getnseg(fs);
curseg = 0;
for (n = 0; n < lfs_sb_getsegtabsz(fs); n++) {
dirty = 0;
@@ -964,7 +964,7 @@ lfs_update_iaddr(struct lfs *fs, struct
*/
if (ip->i_number == LFS_IFILE_INUM) {
sn = lfs_dtosn(fs, lfs_sb_getoffset(fs));
- if (lfs_sntod(fs, sn) + lfs_btofsb(fs, fs->lfs_sumsize) ==
+ if (lfs_sntod(fs, sn) + lfs_btofsb(fs, lfs_sb_getsumsize(fs)) ==
lfs_sb_getoffset(fs)) {
LFS_SEGENTRY(sup, fs, sn, bp);
KASSERT(bp->b_oflags & BO_DELWRI);
@@ -1070,7 +1070,7 @@ lfs_writeinode(struct lfs *fs, struct se
int redo = 0;
if (sp->idp == NULL && sp->ibp == NULL &&
- (sp->seg_bytes_left < fs->lfs_ibsize ||
+ (sp->seg_bytes_left < lfs_sb_getibsize(fs) ||
sp->sum_bytes_left < sizeof(int32_t))) {
(void) lfs_writeseg(fs, sp);
continue;
@@ -1103,7 +1103,7 @@ lfs_writeinode(struct lfs *fs, struct se
if ((ip->i_number != LFS_IFILE_INUM || sp->idp == NULL) &&
sp->ibp == NULL) {
/* Allocate a new segment if necessary. */
- if (sp->seg_bytes_left < fs->lfs_ibsize ||
+ if (sp->seg_bytes_left < lfs_sb_getibsize(fs) ||
sp->sum_bytes_left < sizeof(int32_t))
(void) lfs_writeseg(fs, sp);
@@ -1112,7 +1112,7 @@ lfs_writeinode(struct lfs *fs, struct se
lfs_sb_addoffset(fs, lfs_btofsb(fs, lfs_sb_getibsize(fs)));
sp->ibp = *sp->cbpp++ =
getblk(VTOI(fs->lfs_ivnode)->i_devvp,
- LFS_FSBTODB(fs, daddr), fs->lfs_ibsize, 0, 0);
+ LFS_FSBTODB(fs, daddr), lfs_sb_getibsize(fs), 0, 0);
gotblk++;
/* Zero out inode numbers */
@@ -1123,9 +1123,9 @@ lfs_writeinode(struct lfs *fs, struct se
++sp->start_bpp;
lfs_sb_subavail(fs, lfs_btofsb(fs, lfs_sb_getibsize(fs)));
/* Set remaining space counters. */
- sp->seg_bytes_left -= fs->lfs_ibsize;
+ sp->seg_bytes_left -= lfs_sb_getibsize(fs);
sp->sum_bytes_left -= sizeof(int32_t);
- ndx = fs->lfs_sumsize / sizeof(int32_t) -
+ ndx = lfs_sb_getsumsize(fs) / sizeof(int32_t) -
sp->ninodes / LFS_INOPB(fs) - 1;
((int32_t *)(sp->segsum))[ndx] = daddr;
}
@@ -1207,8 +1207,8 @@ lfs_writeinode(struct lfs *fs, struct se
/* Check file size based on highest allocated block */
if (((ip->i_ffs1_mode & LFS_IFMT) == LFS_IFREG ||
(ip->i_ffs1_mode & LFS_IFMT) == LFS_IFDIR) &&
- ip->i_size > ((ip->i_lfs_hiblk + 1) << fs->lfs_bshift)) {
- cdp->di_size = (ip->i_lfs_hiblk + 1) << fs->lfs_bshift;
+ ip->i_size > ((ip->i_lfs_hiblk + 1) << lfs_sb_getbshift(fs))) {
+ cdp->di_size = (ip->i_lfs_hiblk + 1) << lfs_sb_getbshift(fs);
DLOG((DLOG_SEG, "lfs_writeinode: ino %d size %" PRId64 " -> %"
PRId64 "\n", (int)ip->i_number, ip->i_size, cdp->di_size));
}
@@ -1230,7 +1230,7 @@ lfs_writeinode(struct lfs *fs, struct se
* Check dinode held blocks against dinode size.
* This should be identical to the check in lfs_vget().
*/
- for (i = (cdp->di_size + lfs_sb_getbsize(fs) - 1) >> fs->lfs_bshift;
+ for (i = (cdp->di_size + lfs_sb_getbsize(fs) - 1) >> lfs_sb_getbshift(fs);
i < ULFS_NDADDR; i++) {
KASSERT(i >= 0);
if ((cdp->di_mode & LFS_IFMT) == LFS_IFLNK)
@@ -1541,7 +1541,7 @@ lfs_update_single(struct lfs *fs, struct
ndupino = 0;
}
#endif
- KASSERT(oldsn < fs->lfs_nseg);
+ KASSERT(oldsn < lfs_sb_getnseg(fs));
if (lbn >= 0 && lbn < ULFS_NDADDR)
osize = ip->i_lfs_fragsize[lbn];
else
@@ -1651,7 +1651,7 @@ lfs_updatemeta(struct segment *sp)
* XXX fake blocks (including fake inodes and fake indirect blocks).
*/
sp->fip->fi_lastlength = ((sp->start_bpp[nblocks - 1]->b_bcount - 1) &
- fs->lfs_bmask) + 1;
+ lfs_sb_getbmask(fs)) + 1;
/*
* Assign disk addresses, and update references to the logical
@@ -1671,7 +1671,7 @@ lfs_updatemeta(struct segment *sp)
* that the indirect block that actually ends the list
* is of a smaller size!)
*/
- if ((sbp->b_bcount & fs->lfs_bmask) && i != 0)
+ if ((sbp->b_bcount & lfs_sb_getbmask(fs)) && i != 0)
panic("lfs_updatemeta: fragment is not last block");
/*
@@ -1713,10 +1713,10 @@ lfs_rewind(struct lfs *fs, int newsn)
return 0;
/* lfs_avail eats the remaining space in this segment */
- lfs_sb_subavail(fs, fs->lfs_fsbpseg - (lfs_sb_getoffset(fs) - lfs_sb_getcurseg(fs)));
+ lfs_sb_subavail(fs, lfs_sb_getfsbpseg(fs) - (lfs_sb_getoffset(fs) - lfs_sb_getcurseg(fs)));
/* Find a low-numbered segment */
- for (sn = 0; sn < fs->lfs_nseg; ++sn) {
+ for (sn = 0; sn < lfs_sb_getnseg(fs); ++sn) {
LFS_SEGENTRY(sup, fs, sn, bp);
isdirty = sup->su_flags & SEGUSE_DIRTY;
brelse(bp, 0);
@@ -1724,7 +1724,7 @@ lfs_rewind(struct lfs *fs, int newsn)
if (!isdirty)
break;
}
- if (sn == fs->lfs_nseg)
+ if (sn == lfs_sb_getnseg(fs))
panic("lfs_rewind: no clean segments");
if (newsn >= 0 && sn >= newsn)
return ENOENT;
@@ -1756,7 +1756,7 @@ lfs_initseg(struct lfs *fs)
struct buf *bp;
/* lfs_avail eats the remaining space */
- lfs_sb_subavail(fs, fs->lfs_fsbpseg - (lfs_sb_getoffset(fs) -
+ lfs_sb_subavail(fs, lfs_sb_getfsbpseg(fs) - (lfs_sb_getoffset(fs) -
lfs_sb_getcurseg(fs)));
/* Wake up any cleaning procs waiting on this file system. */
lfs_wakeup_cleaner(fs);
@@ -1765,7 +1765,7 @@ lfs_initseg(struct lfs *fs)
lfs_sb_setoffset(fs, lfs_sb_getcurseg(fs));
sp->seg_number = lfs_dtosn(fs, lfs_sb_getcurseg(fs));
- sp->seg_bytes_left = lfs_fsbtob(fs, fs->lfs_fsbpseg);
+ sp->seg_bytes_left = lfs_fsbtob(fs, lfs_sb_getfsbpseg(fs));
/*
* If the segment contains a superblock, update the offset
@@ -1779,15 +1779,15 @@ lfs_initseg(struct lfs *fs)
brelse(bp, 0);
/* Segment zero could also contain the labelpad */
if (fs->lfs_version > 1 && sp->seg_number == 0 &&
- fs->lfs_s0addr < lfs_btofsb(fs, LFS_LABELPAD)) {
+ lfs_sb_gets0addr(fs) < lfs_btofsb(fs, LFS_LABELPAD)) {
lfs_sb_addoffset(fs,
- lfs_btofsb(fs, LFS_LABELPAD) - fs->lfs_s0addr);
+ lfs_btofsb(fs, LFS_LABELPAD) - lfs_sb_gets0addr(fs));
sp->seg_bytes_left -=
- LFS_LABELPAD - lfs_fsbtob(fs, fs->lfs_s0addr);
+ LFS_LABELPAD - lfs_fsbtob(fs, lfs_sb_gets0addr(fs));
}
} else {
sp->seg_number = lfs_dtosn(fs, lfs_sb_getcurseg(fs));
- sp->seg_bytes_left = lfs_fsbtob(fs, fs->lfs_fsbpseg -
+ sp->seg_bytes_left = lfs_fsbtob(fs, lfs_sb_getfsbpseg(fs) -
(lfs_sb_getoffset(fs) - lfs_sb_getcurseg(fs)));
}
lfs_sb_setlastpseg(fs, lfs_sb_getoffset(fs));
@@ -1817,7 +1817,7 @@ lfs_initseg(struct lfs *fs)
/* Get a new buffer for SEGSUM */
sbp = lfs_newbuf(fs, VTOI(fs->lfs_ivnode)->i_devvp,
- LFS_FSBTODB(fs, lfs_sb_getoffset(fs)), fs->lfs_sumsize, LFS_NB_SUMMARY);
+ LFS_FSBTODB(fs, lfs_sb_getoffset(fs)), lfs_sb_getsumsize(fs), LFS_NB_SUMMARY);
/* ... and enter it into the buffer list. */
*sp->cbpp = sbp;
@@ -1828,7 +1828,7 @@ lfs_initseg(struct lfs *fs)
/* Set point to SEGSUM, initialize it. */
ssp = sp->segsum = sbp->b_data;
- memset(ssp, 0, fs->lfs_sumsize);
+ memset(ssp, 0, lfs_sb_getsumsize(fs));
ssp->ss_next = lfs_sb_getnextseg(fs);
ssp->ss_nfinfo = ssp->ss_ninos = 0;
ssp->ss_magic = SS_MAGIC;
@@ -1839,8 +1839,8 @@ lfs_initseg(struct lfs *fs)
sp->start_lbp = &sp->fip->fi_blocks[0];
sp->fip->fi_lastlength = 0;
- sp->seg_bytes_left -= fs->lfs_sumsize;
- sp->sum_bytes_left = fs->lfs_sumsize - SEGSUM_SIZE(fs);
+ sp->seg_bytes_left -= lfs_sb_getsumsize(fs);
+ sp->sum_bytes_left = lfs_sb_getsumsize(fs) - SEGSUM_SIZE(fs);
return (repeat);
}
@@ -1855,7 +1855,7 @@ lfs_unset_inval_all(struct lfs *fs)
struct buf *bp;
int i;
- for (i = 0; i < fs->lfs_nseg; i++) {
+ for (i = 0; i < lfs_sb_getnseg(fs); i++) {
LFS_SEGENTRY(sup, fs, i, bp);
if (sup->su_flags & SEGUSE_INVAL) {
sup->su_flags &= ~SEGUSE_INVAL;
@@ -1883,13 +1883,13 @@ lfs_newseg(struct lfs *fs)
while (lfs_sb_getnextseg(fs) < lfs_sb_getcurseg(fs) && fs->lfs_nowrap) {
if (fs->lfs_wrappass) {
log(LOG_NOTICE, "%s: wrappass=%d\n",
- fs->lfs_fsmnt, fs->lfs_wrappass);
+ lfs_sb_getfsmnt(fs), fs->lfs_wrappass);
fs->lfs_wrappass = 0;
break;
}
fs->lfs_wrapstatus = LFS_WRAP_WAITING;
wakeup(&fs->lfs_nowrap);
- log(LOG_NOTICE, "%s: waiting at log wrap\n", fs->lfs_fsmnt);
+ log(LOG_NOTICE, "%s: waiting at log wrap\n", lfs_sb_getfsmnt(fs));
mtsleep(&fs->lfs_wrappass, PVFS, "newseg", 10 * hz,
&lfs_lock);
}
@@ -1908,14 +1908,14 @@ lfs_newseg(struct lfs *fs)
LFS_CLEANERINFO(cip, fs, bp);
--cip->clean;
++cip->dirty;
- fs->lfs_nclean = cip->clean;
+ lfs_sb_setnclean(fs, cip->clean);
LFS_SYNC_CLEANERINFO(cip, fs, bp, 1);
lfs_sb_setlastseg(fs, lfs_sb_getcurseg(fs));
lfs_sb_setcurseg(fs, lfs_sb_getnextseg(fs));
skip_inval = 1;
- for (sn = curseg = lfs_dtosn(fs, lfs_sb_getcurseg(fs)) + fs->lfs_interleave;;) {
- sn = (sn + 1) % fs->lfs_nseg;
+ for (sn = curseg = lfs_dtosn(fs, lfs_sb_getcurseg(fs)) + lfs_sb_getinterleave(fs);;) {
+ sn = (sn + 1) % lfs_sb_getnseg(fs);
if (sn == curseg) {
if (skip_inval)
@@ -2058,7 +2058,7 @@ lfs_writeseg(struct lfs *fs, struct segm
sp->seg_number, ssp->ss_ninos * sizeof (struct ulfs1_dinode),
ssp->ss_ninos));
sup->su_nbytes += ssp->ss_ninos * sizeof (struct ulfs1_dinode);
- /* sup->su_nbytes += fs->lfs_sumsize; */
+ /* sup->su_nbytes += lfs_sb_getsumsize(fs); */
if (fs->lfs_version == 1)
sup->su_olastmod = time_second;
else
@@ -2207,17 +2207,17 @@ lfs_writeseg(struct lfs *fs, struct segm
ssp->ss_create = time_second;
lfs_sb_addserial(fs, 1);
ssp->ss_serial = lfs_sb_getserial(fs);
- ssp->ss_ident = fs->lfs_ident;
+ ssp->ss_ident = lfs_sb_getident(fs);
}
ssp->ss_datasum = lfs_cksum_fold(sum);
ssp->ss_sumsum = cksum(&ssp->ss_datasum,
- fs->lfs_sumsize - sizeof(ssp->ss_sumsum));
+ lfs_sb_getsumsize(fs) - sizeof(ssp->ss_sumsum));
mutex_enter(&lfs_lock);
- lfs_sb_subbfree(fs, (lfs_btofsb(fs, ninos * fs->lfs_ibsize) +
- lfs_btofsb(fs, fs->lfs_sumsize)));
- lfs_sb_adddmeta(fs, (lfs_btofsb(fs, ninos * fs->lfs_ibsize) +
- lfs_btofsb(fs, fs->lfs_sumsize)));
+ lfs_sb_subbfree(fs, (lfs_btofsb(fs, ninos * lfs_sb_getibsize(fs)) +
+ lfs_btofsb(fs, lfs_sb_getsumsize(fs))));
+ lfs_sb_adddmeta(fs, (lfs_btofsb(fs, ninos * lfs_sb_getibsize(fs)) +
+ lfs_btofsb(fs, lfs_sb_getsumsize(fs))));
mutex_exit(&lfs_lock);
/*
@@ -2243,7 +2243,7 @@ lfs_writeseg(struct lfs *fs, struct segm
cbp->b_bcount = 0;
#if defined(DEBUG) && defined(DIAGNOSTIC)
- if (bpp - sp->bpp > (fs->lfs_sumsize - SEGSUM_SIZE(fs))
+ if (bpp - sp->bpp > (lfs_sb_getsumsize(fs) - SEGSUM_SIZE(fs))
/ sizeof(int32_t)) {
panic("lfs_writeseg: real bpp overwrite");
}
@@ -2387,7 +2387,7 @@ lfs_writesuper(struct lfs *fs, daddr_t d
lfs_sb_settstamp(fs, time_second);
/* Checksum the superblock and copy it into a buffer. */
- fs->lfs_cksum = lfs_sb_cksum(&(fs->lfs_dlfs));
+ lfs_sb_setcksum(fs, lfs_sb_cksum(&(fs->lfs_dlfs)));
bp = lfs_newbuf(fs, devvp,
LFS_FSBTODB(fs, daddr), LFS_SBPAD, LFS_NB_SBLOCK);
memset((char *)bp->b_data + sizeof(struct dlfs), 0,
Index: src/sys/ufs/lfs/lfs_syscalls.c
diff -u src/sys/ufs/lfs/lfs_syscalls.c:1.161 src/sys/ufs/lfs/lfs_syscalls.c:1.162
--- src/sys/ufs/lfs/lfs_syscalls.c:1.161 Fri Jul 24 06:56:42 2015
+++ src/sys/ufs/lfs/lfs_syscalls.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs_syscalls.c,v 1.161 2015/07/24 06:56:42 dholland Exp $ */
+/* $NetBSD: lfs_syscalls.c,v 1.162 2015/07/24 06:59:32 dholland Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001, 2002, 2003, 2007, 2007, 2008
@@ -61,7 +61,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_syscalls.c,v 1.161 2015/07/24 06:56:42 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_syscalls.c,v 1.162 2015/07/24 06:59:32 dholland Exp $");
#ifndef LFS
# define LFS /* for prototypes in syscallargs.h */
@@ -872,12 +872,12 @@ lfs_do_segclean(struct lfs *fs, unsigned
if (sup->su_flags & SEGUSE_SUPERBLOCK)
lfs_sb_subavail(fs, lfs_btofsb(fs, LFS_SBPAD));
if (fs->lfs_version > 1 && segnum == 0 &&
- fs->lfs_s0addr < lfs_btofsb(fs, LFS_LABELPAD))
- lfs_sb_subavail(fs, lfs_btofsb(fs, LFS_LABELPAD) - fs->lfs_s0addr);
+ lfs_sb_gets0addr(fs) < lfs_btofsb(fs, LFS_LABELPAD))
+ lfs_sb_subavail(fs, lfs_btofsb(fs, LFS_LABELPAD) - lfs_sb_gets0addr(fs));
mutex_enter(&lfs_lock);
- lfs_sb_addbfree(fs, sup->su_nsums * lfs_btofsb(fs, fs->lfs_sumsize) +
+ lfs_sb_addbfree(fs, sup->su_nsums * lfs_btofsb(fs, lfs_sb_getsumsize(fs)) +
lfs_btofsb(fs, sup->su_ninos * lfs_sb_getibsize(fs)));
- lfs_sb_subdmeta(fs, sup->su_nsums * lfs_btofsb(fs, fs->lfs_sumsize) +
+ lfs_sb_subdmeta(fs, sup->su_nsums * lfs_btofsb(fs, lfs_sb_getsumsize(fs)) +
lfs_btofsb(fs, sup->su_ninos * lfs_sb_getibsize(fs)));
if (lfs_sb_getdmeta(fs) < 0)
lfs_sb_setdmeta(fs, 0);
@@ -888,7 +888,7 @@ lfs_do_segclean(struct lfs *fs, unsigned
LFS_CLEANERINFO(cip, fs, bp);
++cip->clean;
--cip->dirty;
- fs->lfs_nclean = cip->clean;
+ lfs_sb_setnclean(fs, cip->clean);
mutex_enter(&lfs_lock);
cip->bfree = lfs_sb_getbfree(fs);
cip->avail = lfs_sb_getavail(fs) - fs->lfs_ravail - fs->lfs_favail;
Index: src/sys/ufs/lfs/lfs_vfsops.c
diff -u src/sys/ufs/lfs/lfs_vfsops.c:1.327 src/sys/ufs/lfs/lfs_vfsops.c:1.328
--- src/sys/ufs/lfs/lfs_vfsops.c:1.327 Fri Jul 24 06:56:42 2015
+++ src/sys/ufs/lfs/lfs_vfsops.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs_vfsops.c,v 1.327 2015/07/24 06:56:42 dholland Exp $ */
+/* $NetBSD: lfs_vfsops.c,v 1.328 2015/07/24 06:59:32 dholland Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001, 2002, 2003, 2007, 2007
@@ -61,7 +61,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_vfsops.c,v 1.327 2015/07/24 06:56:42 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_vfsops.c,v 1.328 2015/07/24 06:59:32 dholland Exp $");
#if defined(_KERNEL_OPT)
#include "opt_lfs.h"
@@ -605,8 +605,8 @@ lfs_mountroot(void)
mountlist_append(mp);
ump = VFSTOULFS(mp);
fs = ump->um_lfs;
- memset(fs->lfs_fsmnt, 0, sizeof(fs->lfs_fsmnt));
- (void)copystr(mp->mnt_stat.f_mntonname, fs->lfs_fsmnt, MNAMELEN - 1, 0);
+ memset(fs->lfs_dlfs.dlfs_fsmnt, 0, sizeof(fs->lfs_dlfs.dlfs_fsmnt));
+ (void)copystr(mp->mnt_stat.f_mntonname, fs->lfs_dlfs.dlfs_fsmnt, sizeof(fs->lfs_dlfs.dlfs_fsmnt), 0);
(void)lfs_statvfs(mp, &mp->mnt_stat);
vfs_unbusy(mp, false, NULL);
setrootfstime((time_t)lfs_sb_gettstamp(VFSTOULFS(mp)->um_lfs));
@@ -795,10 +795,10 @@ lfs_mount(struct mount *mp, const char *
}
fs->lfs_ronly = 0;
- if (fs->lfs_pflags & LFS_PF_CLEAN) {
- fs->lfs_pflags &= ~LFS_PF_CLEAN;
- lfs_writesuper(fs, fs->lfs_sboffs[0]);
- lfs_writesuper(fs, fs->lfs_sboffs[1]);
+ if (lfs_sb_getpflags(fs) & LFS_PF_CLEAN) {
+ lfs_sb_setpflags(fs, lfs_sb_getpflags(fs) & ~LFS_PF_CLEAN);
+ lfs_writesuper(fs, lfs_sb_getsboff(fs, 0));
+ lfs_writesuper(fs, lfs_sb_getsboff(fs, 1));
}
}
if (args->fspec == NULL)
@@ -808,8 +808,9 @@ lfs_mount(struct mount *mp, const char *
error = set_statvfs_info(path, UIO_USERSPACE, args->fspec,
UIO_USERSPACE, mp->mnt_op->vfs_name, mp, l);
if (error == 0)
- (void)strncpy(fs->lfs_fsmnt, mp->mnt_stat.f_mntonname,
- sizeof(fs->lfs_fsmnt));
+ (void)strncpy(fs->lfs_dlfs.dlfs_fsmnt,
+ mp->mnt_stat.f_mntonname,
+ sizeof(fs->lfs_dlfs.dlfs_fsmnt));
return error;
fail:
@@ -952,15 +953,15 @@ lfs_mountfs(struct vnode *devvp, struct
/* Compatibility */
if (fs->lfs_version < 2) {
- fs->lfs_sumsize = LFS_V1_SUMMARY_SIZE;
+ lfs_sb_setsumsize(fs, LFS_V1_SUMMARY_SIZE);
lfs_sb_setibsize(fs, lfs_sb_getbsize(fs));
- fs->lfs_s0addr = fs->lfs_sboffs[0];
+ lfs_sb_sets0addr(fs, lfs_sb_getsboff(fs, 0));
lfs_sb_settstamp(fs, lfs_sb_getotstamp(fs));
lfs_sb_setfsbtodb(fs, 0);
}
- if (fs->lfs_resvseg == 0)
- fs->lfs_resvseg = MIN(fs->lfs_minfreeseg - 1, \
- MAX(MIN_RESV_SEGS, fs->lfs_minfreeseg / 2 + 1));
+ if (lfs_sb_getresvseg(fs) == 0)
+ lfs_sb_setresvseg(fs, MIN(lfs_sb_getminfreeseg(fs) - 1, \
+ MAX(MIN_RESV_SEGS, lfs_sb_getminfreeseg(fs) / 2 + 1)));
/*
* If we aren't going to be able to write meaningfully to this
@@ -1028,13 +1029,13 @@ lfs_mountfs(struct vnode *devvp, struct
/* ulfs-level information */
fs->um_flags = 0;
- fs->um_bptrtodb = fs->lfs_ffshift - DEV_BSHIFT;
+ fs->um_bptrtodb = lfs_sb_getffshift(fs) - DEV_BSHIFT;
fs->um_seqinc = lfs_sb_getfrag(fs);
- fs->um_nindir = fs->lfs_nindir;
- fs->um_lognindir = ffs(fs->lfs_nindir) - 1;
- fs->um_maxsymlinklen = fs->lfs_maxsymlinklen;
+ fs->um_nindir = lfs_sb_getnindir(fs);
+ fs->um_lognindir = ffs(lfs_sb_getnindir(fs)) - 1;
+ fs->um_maxsymlinklen = lfs_sb_getmaxsymlinklen(fs);
fs->um_dirblksiz = LFS_DIRBLKSIZ;
- fs->um_maxfilesize = fs->lfs_maxfilesize;
+ fs->um_maxfilesize = lfs_sb_getmaxfilesize(fs);
/* quota stuff */
/* XXX: these need to come from the on-disk superblock to be used */
@@ -1053,7 +1054,7 @@ lfs_mountfs(struct vnode *devvp, struct
mp->mnt_stat.f_namemax = LFS_MAXNAMLEN;
mp->mnt_stat.f_iosize = lfs_sb_getbsize(fs);
mp->mnt_flag |= MNT_LOCAL;
- mp->mnt_fs_bshift = fs->lfs_bshift;
+ mp->mnt_fs_bshift = lfs_sb_getbshift(fs);
if (fs->um_maxsymlinklen > 0)
mp->mnt_iflag |= IMNT_DTYPE;
@@ -1093,12 +1094,12 @@ lfs_mountfs(struct vnode *devvp, struct
fs->lfs_nactive = 0;
fs->lfs_suflags = malloc(2 * sizeof(u_int32_t *),
M_SEGMENT, M_WAITOK);
- fs->lfs_suflags[0] = malloc(fs->lfs_nseg * sizeof(u_int32_t),
+ fs->lfs_suflags[0] = malloc(lfs_sb_getnseg(fs) * sizeof(u_int32_t),
M_SEGMENT, M_WAITOK);
- fs->lfs_suflags[1] = malloc(fs->lfs_nseg * sizeof(u_int32_t),
+ fs->lfs_suflags[1] = malloc(lfs_sb_getnseg(fs) * sizeof(u_int32_t),
M_SEGMENT, M_WAITOK);
- memset(fs->lfs_suflags[1], 0, fs->lfs_nseg * sizeof(u_int32_t));
- for (i = 0; i < fs->lfs_nseg; i++) {
+ memset(fs->lfs_suflags[1], 0, lfs_sb_getnseg(fs) * sizeof(u_int32_t));
+ for (i = 0; i < lfs_sb_getnseg(fs); i++) {
int changed;
LFS_SEGENTRY(sup, fs, i, bp);
@@ -1183,9 +1184,9 @@ lfs_mountfs(struct vnode *devvp, struct
/* If writing, sb is not clean; record in case of immediate crash */
if (!fs->lfs_ronly) {
- fs->lfs_pflags &= ~LFS_PF_CLEAN;
- lfs_writesuper(fs, fs->lfs_sboffs[0]);
- lfs_writesuper(fs, fs->lfs_sboffs[1]);
+ lfs_sb_setpflags(fs, lfs_sb_getpflags(fs) & ~LFS_PF_CLEAN);
+ lfs_writesuper(fs, lfs_sb_getsboff(fs, 0));
+ lfs_writesuper(fs, lfs_sb_getsboff(fs, 1));
}
/* Allow vget now that roll-forward is complete */
@@ -1303,9 +1304,9 @@ lfs_unmount(struct mount *mp, int mntfla
mutex_exit(vp->v_interlock);
/* Explicitly write the superblock, to update serial and pflags */
- fs->lfs_pflags |= LFS_PF_CLEAN;
- lfs_writesuper(fs, fs->lfs_sboffs[0]);
- lfs_writesuper(fs, fs->lfs_sboffs[1]);
+ lfs_sb_setpflags(fs, lfs_sb_getpflags(fs) | LFS_PF_CLEAN);
+ lfs_writesuper(fs, lfs_sb_getsboff(fs, 0));
+ lfs_writesuper(fs, lfs_sb_getsboff(fs, 1));
mutex_enter(&lfs_lock);
while (fs->lfs_iocount)
mtsleep(&fs->lfs_iocount, PRIBIO + 1, "lfs_umount", 0,
@@ -1581,7 +1582,7 @@ lfs_loadvnode(struct mount *mp, struct v
retries = 0;
again:
error = bread(ump->um_devvp, LFS_FSBTODB(fs, daddr),
- (fs->lfs_version == 1 ? lfs_sb_getbsize(fs) : fs->lfs_ibsize),
+ (fs->lfs_version == 1 ? lfs_sb_getbsize(fs) : lfs_sb_getibsize(fs)),
0, &bp);
if (error) {
lfs_deinit_vnode(ump, vp);
@@ -1767,11 +1768,11 @@ lfs_fhtovp(struct mount *mp, struct fid
return ESTALE;
fs = VFSTOULFS(mp)->um_lfs;
- if (lfh.lfid_ident != fs->lfs_ident)
+ if (lfh.lfid_ident != lfs_sb_getident(fs))
return ESTALE;
if (lfh.lfid_ino >
- ((VTOI(fs->lfs_ivnode)->i_ffs1_size >> fs->lfs_bshift) -
+ ((VTOI(fs->lfs_ivnode)->i_ffs1_size >> lfs_sb_getbshift(fs)) -
lfs_sb_getcleansz(fs) - lfs_sb_getsegtabsz(fs)) * lfs_sb_getifpb(fs))
return ESTALE;
@@ -1798,7 +1799,7 @@ lfs_vptofh(struct vnode *vp, struct fid
lfh.lfid_len = sizeof(struct lfid);
lfh.lfid_ino = ip->i_number;
lfh.lfid_gen = ip->i_gen;
- lfh.lfid_ident = ip->i_lfs->lfs_ident;
+ lfh.lfid_ident = lfs_sb_getident(ip->i_lfs);
memcpy(fhp, &lfh, sizeof(lfh));
return (0);
}
@@ -1919,7 +1920,7 @@ lfs_gop_write(struct vnode *vp, struct v
failreason = "Inode with no_gop_write";
goto tryagain;
}
- if ((pgs[0]->offset & fs->lfs_bmask) != 0) {
+ if ((pgs[0]->offset & lfs_sb_getbmask(fs)) != 0) {
failreason = "Bad page offset";
goto tryagain;
}
@@ -1968,12 +1969,12 @@ lfs_gop_write(struct vnode *vp, struct v
* We'll check later to make sure we always write entire
* blocks (or fragments).
*/
- if (startoffset & fs->lfs_bmask)
- printf("%" PRId64 " & %" PRId64 " = %" PRId64 "\n",
- startoffset, fs->lfs_bmask,
- startoffset & fs->lfs_bmask);
- KASSERT((startoffset & fs->lfs_bmask) == 0);
- if (bytes & fs->lfs_ffmask) {
+ if (startoffset & lfs_sb_getbmask(fs))
+ printf("%" PRId64 " & %" PRIu64 " = %" PRId64 "\n",
+ startoffset, lfs_sb_getbmask(fs),
+ startoffset & lfs_sb_getbmask(fs));
+ KASSERT((startoffset & lfs_sb_getbmask(fs)) == 0);
+ if (bytes & lfs_sb_getffmask(fs)) {
printf("lfs_gop_write: asked to write %ld bytes\n", (long)bytes);
panic("lfs_gop_write: non-integer blocks");
}
@@ -2043,7 +2044,7 @@ lfs_gop_write(struct vnode *vp, struct v
*/
/* If no room in the current segment, finish it up */
if (sp->sum_bytes_left < sizeof(int32_t) ||
- sp->seg_bytes_left < (1 << fs->lfs_bshift)) {
+ sp->seg_bytes_left < (1 << lfs_sb_getbshift(fs))) {
int vers;
lfs_updatemeta(sp);
@@ -2202,7 +2203,7 @@ lfs_vinit(struct mount *mp, struct vnode
memset(ip->i_lfs_fragsize, 0, ULFS_NDADDR * sizeof(*ip->i_lfs_fragsize));
if (vp->v_type != VLNK || ip->i_size >= ip->i_lfs->um_maxsymlinklen) {
#ifdef DEBUG
- for (i = (ip->i_size + lfs_sb_getbsize(fs) - 1) >> fs->lfs_bshift;
+ for (i = (ip->i_size + lfs_sb_getbsize(fs) - 1) >> lfs_sb_getbshift(fs);
i < ULFS_NDADDR; i++) {
if ((vp->v_type == VBLK || vp->v_type == VCHR) &&
i == 0)
@@ -2273,12 +2274,13 @@ lfs_resize_fs(struct lfs *fs, int newnse
return EOPNOTSUPP;
/* If we're doing nothing, do it fast */
- oldnsegs = fs->lfs_nseg;
+ oldnsegs = lfs_sb_getnseg(fs);
if (newnsegs == oldnsegs)
return 0;
/* We always have to have two superblocks */
- if (newnsegs <= lfs_dtosn(fs, fs->lfs_sboffs[1]))
+ if (newnsegs <= lfs_dtosn(fs, lfs_sb_getsboff(fs, 1)))
+ /* XXX this error code is rather nonsense */
return EFBIG;
ivp = fs->lfs_ivnode;
@@ -2316,7 +2318,7 @@ lfs_resize_fs(struct lfs *fs, int newnse
/* Note old and new segment table endpoints, and old ifile size */
olast = lfs_sb_getcleansz(fs) + lfs_sb_getsegtabsz(fs);
nlast = howmany(newnsegs, lfs_sb_getsepb(fs)) + lfs_sb_getcleansz(fs);
- ilast = ivp->v_size >> fs->lfs_bshift;
+ ilast = ivp->v_size >> lfs_sb_getbshift(fs);
noff = nlast - olast;
/*
@@ -2388,8 +2390,8 @@ lfs_resize_fs(struct lfs *fs, int newnse
/* Zero out unused superblock offsets */
for (i = 2; i < LFS_MAXNUMSB; i++)
- if (lfs_dtosn(fs, fs->lfs_sboffs[i]) >= newnsegs)
- fs->lfs_sboffs[i] = 0x0;
+ if (lfs_dtosn(fs, lfs_sb_getsboff(fs, i)) >= newnsegs)
+ lfs_sb_setsboff(fs, i, 0x0);
/*
* Correct superblock entries that depend on fs size.
@@ -2405,39 +2407,39 @@ lfs_resize_fs(struct lfs *fs, int newnse
* XXX - we should probably adjust minfreeseg as well.
*/
gain = (newnsegs - oldnsegs);
- fs->lfs_nseg = newnsegs;
+ lfs_sb_setnseg(fs, newnsegs);
lfs_sb_setsegtabsz(fs, nlast - lfs_sb_getcleansz(fs));
lfs_sb_addsize(fs, gain * lfs_btofsb(fs, lfs_sb_getssize(fs)));
lfs_sb_adddsize(fs, gain * lfs_btofsb(fs, lfs_sb_getssize(fs)) - lfs_btofsb(fs, sbbytes));
lfs_sb_addbfree(fs, gain * lfs_btofsb(fs, lfs_sb_getssize(fs)) - lfs_btofsb(fs, sbbytes)
- gain * lfs_btofsb(fs, lfs_sb_getbsize(fs) / 2));
if (gain > 0) {
- fs->lfs_nclean += gain;
+ lfs_sb_addnclean(fs, gain);
lfs_sb_addavail(fs, gain * lfs_btofsb(fs, lfs_sb_getssize(fs)));
} else {
- fs->lfs_nclean -= cgain;
+ lfs_sb_subnclean(fs, cgain);
lfs_sb_subavail(fs, cgain * lfs_btofsb(fs, lfs_sb_getssize(fs)) -
lfs_btofsb(fs, csbbytes));
}
/* Resize segment flag cache */
fs->lfs_suflags[0] = realloc(fs->lfs_suflags[0],
- fs->lfs_nseg * sizeof(u_int32_t), M_SEGMENT, M_WAITOK);
+ lfs_sb_getnseg(fs) * sizeof(u_int32_t), M_SEGMENT, M_WAITOK);
fs->lfs_suflags[1] = realloc(fs->lfs_suflags[1],
- fs->lfs_nseg * sizeof(u_int32_t), M_SEGMENT, M_WAITOK);
+ lfs_sb_getnseg(fs) * sizeof(u_int32_t), M_SEGMENT, M_WAITOK);
for (i = oldnsegs; i < newnsegs; i++)
fs->lfs_suflags[0][i] = fs->lfs_suflags[1][i] = 0x0;
/* Truncate Ifile if necessary */
if (noff < 0)
- lfs_truncate(ivp, ivp->v_size + (noff << fs->lfs_bshift), 0,
+ lfs_truncate(ivp, ivp->v_size + (noff << lfs_sb_getbshift(fs)), 0,
NOCRED);
/* Update cleaner info so the cleaner can die */
/* XXX what to do if bread fails? */
bread(ivp, 0, lfs_sb_getbsize(fs), B_MODIFY, &bp);
- ((CLEANERINFO *)bp->b_data)->clean = fs->lfs_nclean;
- ((CLEANERINFO *)bp->b_data)->dirty = fs->lfs_nseg - fs->lfs_nclean;
+ ((CLEANERINFO *)bp->b_data)->clean = lfs_sb_getnclean(fs);
+ ((CLEANERINFO *)bp->b_data)->dirty = lfs_sb_getnseg(fs) - lfs_sb_getnclean(fs);
VOP_BWRITE(bp->b_vp, bp);
/* Let Ifile accesses proceed */
Index: src/sys/ufs/lfs/lfs_vnops.c
diff -u src/sys/ufs/lfs/lfs_vnops.c:1.274 src/sys/ufs/lfs/lfs_vnops.c:1.275
--- src/sys/ufs/lfs/lfs_vnops.c:1.274 Fri Jul 24 06:56:42 2015
+++ src/sys/ufs/lfs/lfs_vnops.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs_vnops.c,v 1.274 2015/07/24 06:56:42 dholland Exp $ */
+/* $NetBSD: lfs_vnops.c,v 1.275 2015/07/24 06:59:32 dholland Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc.
@@ -125,7 +125,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_vnops.c,v 1.274 2015/07/24 06:56:42 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_vnops.c,v 1.275 2015/07/24 06:59:32 dholland Exp $");
#ifdef _KERNEL_OPT
#include "opt_compat_netbsd.h"
@@ -1229,7 +1229,8 @@ lfs_wrapgo(struct lfs *fs, struct inode
}
if (--fs->lfs_nowrap == 0) {
- log(LOG_NOTICE, "%s: re-enabled log wrap\n", fs->lfs_fsmnt);
+ log(LOG_NOTICE, "%s: re-enabled log wrap\n",
+ lfs_sb_getfsmnt(fs));
wakeup(&fs->lfs_wrappass);
lfs_wakeup_cleaner(fs);
}
@@ -1363,7 +1364,7 @@ lfs_reclaim(void *v)
mutex_enter(&lfs_lock);
if (ip->i_flags & IN_PAGING) {
log(LOG_WARNING, "%s: reclaimed vnode is IN_PAGING\n",
- fs->lfs_fsmnt);
+ lfs_sb_getfsmnt(fs));
ip->i_flags &= ~IN_PAGING;
TAILQ_REMOVE(&fs->lfs_pchainhd, ip, i_lfs_pchain);
}
@@ -1935,7 +1936,8 @@ segwait_common:
cv_wait(&fs->lfs_stopcv, &lfs_lock);
fs->lfs_stoplwp = curlwp;
if (fs->lfs_nowrap == 0)
- log(LOG_NOTICE, "%s: disabled log wrap\n", fs->lfs_fsmnt);
+ log(LOG_NOTICE, "%s: disabled log wrap\n",
+ lfs_sb_getfsmnt(fs));
++fs->lfs_nowrap;
if (*(int *)ap->a_data == 1
|| ap->a_command == LFCNWRAPSTOP_COMPAT) {
Index: src/sys/ufs/lfs/ulfs_inode.h
diff -u src/sys/ufs/lfs/ulfs_inode.h:1.13 src/sys/ufs/lfs/ulfs_inode.h:1.14
--- src/sys/ufs/lfs/ulfs_inode.h:1.13 Fri Jul 24 06:56:42 2015
+++ src/sys/ufs/lfs/ulfs_inode.h Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: ulfs_inode.h,v 1.13 2015/07/24 06:56:42 dholland Exp $ */
+/* $NetBSD: ulfs_inode.h,v 1.14 2015/07/24 06:59:32 dholland Exp $ */
/* from NetBSD: inode.h,v 1.64 2012/11/19 00:36:21 jakllsch Exp */
/*
@@ -78,8 +78,8 @@ void lfs_unset_dirop(struct lfs *, struc
#define LFS_MAX_DIROP ((desiredvnodes >> 2) + (desiredvnodes >> 3))
#define SIZEOF_DIROP(fs) (2 * (lfs_sb_getbsize(fs) + LFS_DINODE1_SIZE))
#define LFS_MAX_FSDIROP(fs) \
- ((fs)->lfs_nclean <= (fs)->lfs_resvseg ? 0 : \
- (((fs)->lfs_nclean - (fs)->lfs_resvseg) * lfs_sb_getssize(fs)) / \
+ (lfs_sb_getnclean(fs) <= lfs_sb_getresvseg(fs) ? 0 : \
+ ((lfs_sb_getnclean(fs) - lfs_sb_getresvseg(fs)) * lfs_sb_getssize(fs)) / \
(2 * SIZEOF_DIROP(fs)))
#define LFS_MAX_PAGES lfs_max_pages()
#define LFS_WAIT_PAGES lfs_wait_pages()
@@ -93,7 +93,7 @@ int lfs_max_pages(void);
#endif /* _KERNEL */
/* How starved can we be before we start holding back page writes */
-#define LFS_STARVED_FOR_SEGS(fs) ((fs)->lfs_nclean < (fs)->lfs_resvseg)
+#define LFS_STARVED_FOR_SEGS(fs) (lfs_sb_getnclean(fs) < lfs_sb_getresvseg(fs))
/*
* Reserved blocks for lfs_malloc
Index: src/sys/ufs/lfs/ulfs_quota2.c
diff -u src/sys/ufs/lfs/ulfs_quota2.c:1.19 src/sys/ufs/lfs/ulfs_quota2.c:1.20
--- src/sys/ufs/lfs/ulfs_quota2.c:1.19 Fri Jul 24 06:56:42 2015
+++ src/sys/ufs/lfs/ulfs_quota2.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: ulfs_quota2.c,v 1.19 2015/07/24 06:56:42 dholland Exp $ */
+/* $NetBSD: ulfs_quota2.c,v 1.20 2015/07/24 06:59:32 dholland Exp $ */
/* from NetBSD: ufs_quota2.c,v 1.35 2012/09/27 07:47:56 bouyer Exp */
/* from NetBSD: ffs_quota2.c,v 1.4 2011/06/12 03:36:00 rmind Exp */
@@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ulfs_quota2.c,v 1.19 2015/07/24 06:56:42 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ulfs_quota2.c,v 1.20 2015/07/24 06:59:32 dholland Exp $");
#include <sys/buf.h>
#include <sys/param.h>
@@ -1563,7 +1563,7 @@ lfs_quota2_mount(struct mount *mp)
fs->um_flags |= ULFS_QUOTA2;
ump->umq2_bsize = lfs_sb_getbsize(fs);
- ump->umq2_bmask = fs->lfs_bmask;
+ ump->umq2_bmask = lfs_sb_getbmask(fs);
if (fs->lfs_quota_magic != Q2_HEAD_MAGIC) {
printf("%s: Invalid quota magic number\n",
mp->mnt_stat.f_mntonname);
Index: src/sys/ufs/lfs/ulfs_readwrite.c
diff -u src/sys/ufs/lfs/ulfs_readwrite.c:1.18 src/sys/ufs/lfs/ulfs_readwrite.c:1.19
--- src/sys/ufs/lfs/ulfs_readwrite.c:1.18 Fri Jul 24 06:56:42 2015
+++ src/sys/ufs/lfs/ulfs_readwrite.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: ulfs_readwrite.c,v 1.18 2015/07/24 06:56:42 dholland Exp $ */
+/* $NetBSD: ulfs_readwrite.c,v 1.19 2015/07/24 06:59:32 dholland Exp $ */
/* from NetBSD: ufs_readwrite.c,v 1.105 2013/01/22 09:39:18 dholland Exp */
/*-
@@ -33,7 +33,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: ulfs_readwrite.c,v 1.18 2015/07/24 06:56:42 dholland Exp $");
+__KERNEL_RCSID(1, "$NetBSD: ulfs_readwrite.c,v 1.19 2015/07/24 06:59:32 dholland Exp $");
#ifdef LFS_READWRITE
#define FS struct lfs
@@ -337,7 +337,7 @@ WRITE(void *v)
goto out;
if (flags & B_SYNC) {
mutex_enter(vp->v_interlock);
- VOP_PUTPAGES(vp, trunc_page(osize & fs->fs_bmask),
+ VOP_PUTPAGES(vp, trunc_page(osize & lfs_sb_getbmask(fs)),
round_page(eob),
PGO_CLEANIT | PGO_SYNCIO);
}
@@ -443,7 +443,7 @@ WRITE(void *v)
}
if (error == 0 && ioflag & IO_SYNC) {
mutex_enter(vp->v_interlock);
- error = VOP_PUTPAGES(vp, trunc_page(origoff & fs->fs_bmask),
+ error = VOP_PUTPAGES(vp, trunc_page(origoff & lfs_sb_getbmask(fs)),
round_page(lfs_blkroundup(fs, uio->uio_offset)),
PGO_CLEANIT | PGO_SYNCIO);
}
@@ -523,7 +523,7 @@ BUFWR(struct vnode *vp, struct uio *uio,
#ifdef LFS_READWRITE
error = lfs_reserve(fs, vp, NULL,
- lfs_btofsb(fs, (ULFS_NIADDR + 1) << fs->lfs_bshift));
+ lfs_btofsb(fs, (ULFS_NIADDR + 1) << lfs_sb_getbshift(fs)));
if (error)
break;
need_unreserve = true;
@@ -557,7 +557,7 @@ BUFWR(struct vnode *vp, struct uio *uio,
#ifdef LFS_READWRITE
(void)VOP_BWRITE(bp->b_vp, bp);
lfs_reserve(fs, vp, NULL,
- -lfs_btofsb(fs, (ULFS_NIADDR + 1) << fs->lfs_bshift));
+ -lfs_btofsb(fs, (ULFS_NIADDR + 1) << lfs_sb_getbshift(fs)));
need_unreserve = false;
#else
if (ioflag & IO_SYNC)
@@ -573,7 +573,7 @@ BUFWR(struct vnode *vp, struct uio *uio,
#ifdef LFS_READWRITE
if (need_unreserve) {
lfs_reserve(fs, vp, NULL,
- -lfs_btofsb(fs, (ULFS_NIADDR + 1) << fs->lfs_bshift));
+ -lfs_btofsb(fs, (ULFS_NIADDR + 1) << lfs_sb_getbshift(fs)));
}
#endif
Index: src/usr.sbin/dumplfs/dumplfs.c
diff -u src/usr.sbin/dumplfs/dumplfs.c:1.43 src/usr.sbin/dumplfs/dumplfs.c:1.44
--- src/usr.sbin/dumplfs/dumplfs.c:1.43 Fri Jul 24 06:56:42 2015
+++ src/usr.sbin/dumplfs/dumplfs.c Fri Jul 24 06:59:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: dumplfs.c,v 1.43 2015/07/24 06:56:42 dholland Exp $ */
+/* $NetBSD: dumplfs.c,v 1.44 2015/07/24 06:59:32 dholland Exp $ */
/*-
* Copyright (c) 1991, 1993
@@ -40,7 +40,7 @@ __COPYRIGHT("@(#) Copyright (c) 1991, 19
#if 0
static char sccsid[] = "@(#)dumplfs.c 8.5 (Berkeley) 5/24/95";
#else
-__RCSID("$NetBSD: dumplfs.c,v 1.43 2015/07/24 06:56:42 dholland Exp $");
+__RCSID("$NetBSD: dumplfs.c,v 1.44 2015/07/24 06:59:32 dholland Exp $");
#endif
#endif /* not lint */
@@ -189,8 +189,8 @@ main(int argc, char **argv)
/* If that wasn't the real first sb, get the real first sb */
if (lfs_sb1.lfs_version > 1 &&
- lfs_sb1.lfs_sboffs[0] > lfs_btofsb(&lfs_sb1, LFS_LABELPAD))
- get(fd, lfs_fsbtob(&lfs_sb1, lfs_sb1.lfs_sboffs[0]),
+ lfs_sb_getsboff(&lfs_sb1, 0) > lfs_btofsb(&lfs_sb1, LFS_LABELPAD))
+ get(fd, lfs_fsbtob(&lfs_sb1, lfs_sb_getsboff(&lfs_sb1, 0)),
&(lfs_sb1.lfs_dlfs), sizeof(struct dlfs));
/*
@@ -198,7 +198,7 @@ main(int argc, char **argv)
* most up to date.
*/
get(fd,
- fsbtobyte(&lfs_sb1, lfs_sb1.lfs_sboffs[1]),
+ fsbtobyte(&lfs_sb1, lfs_sb_getsboff(&lfs_sb1, 1)),
sbuf, LFS_SBPAD);
memcpy(&(lfs_sb2.lfs_dlfs), sbuf, sizeof(struct dlfs));
@@ -206,15 +206,15 @@ main(int argc, char **argv)
if (lfs_sb1.lfs_version > 1) {
if (lfs_sb_getserial(&lfs_sb1) > lfs_sb_getserial(&lfs_sb2)) {
lfs_master = &lfs_sb2;
- sbdaddr = lfs_sb1.lfs_sboffs[1];
+ sbdaddr = lfs_sb_getsboff(&lfs_sb1, 1);
} else
- sbdaddr = lfs_sb1.lfs_sboffs[0];
+ sbdaddr = lfs_sb_getsboff(&lfs_sb1, 0);
} else {
if (lfs_sb_getotstamp(&lfs_sb1) > lfs_sb_getotstamp(&lfs_sb2)) {
lfs_master = &lfs_sb2;
- sbdaddr = lfs_sb1.lfs_sboffs[1];
+ sbdaddr = lfs_sb_getsboff(&lfs_sb1, 1);
} else
- sbdaddr = lfs_sb1.lfs_sboffs[0];
+ sbdaddr = lfs_sb_getsboff(&lfs_sb1, 0);
}
} else {
/* Read the first superblock */
@@ -227,11 +227,11 @@ main(int argc, char **argv)
/* Compatibility */
if (lfs_master->lfs_version == 1) {
- lfs_master->lfs_sumsize = LFS_V1_SUMMARY_SIZE;
- lfs_master->lfs_ibsize = lfs_sb_getbsize(lfs_master);
- lfs_master->lfs_s0addr = lfs_master->lfs_sboffs[0];
+ lfs_sb_setsumsize(lfs_master, LFS_V1_SUMMARY_SIZE);
+ lfs_sb_setibsize(lfs_master, lfs_sb_getbsize(lfs_master));
+ lfs_sb_sets0addr(lfs_master, lfs_sb_getsboff(lfs_master, 0));
lfs_sb_settstamp(lfs_master, lfs_sb_getotstamp(lfs_master));
- lfs_master->lfs_fsbtodb = 0;
+ lfs_sb_setfsbtodb(lfs_master, 0);
}
(void)printf("Master Superblock at 0x%llx:\n", (long long)sbdaddr);
@@ -247,7 +247,7 @@ main(int argc, char **argv)
}
else
for (segnum = 0, seg_addr = lfs_sntod(lfs_master, 0);
- segnum < lfs_master->lfs_nseg;
+ segnum < lfs_sb_getnseg(lfs_master);
segnum++, seg_addr = lfs_sntod(lfs_master, segnum))
dump_segment(fd, segnum, seg_addr, lfs_master,
do_allsb);
@@ -507,7 +507,7 @@ dump_sum(int fd, struct lfs *lfsp, SEGSU
(long long)addr);
return -1;
}
- if (lfsp->lfs_version > 1 && sp->ss_ident != lfsp->lfs_ident) {
+ if (lfsp->lfs_version > 1 && sp->ss_ident != lfs_sb_getident(lfsp)) {
(void)printf("dumplfs: %s %d address 0x%llx\n",
"summary from a former life; segment", segnum,
(long long)addr);
@@ -661,12 +661,12 @@ dump_segment(int fd, int segnum, daddr_t
sumblock = malloc(lfs_sb_getsumsize(lfsp));
if (lfsp->lfs_version > 1 && segnum == 0) {
- if (lfs_fsbtob(lfsp, lfsp->lfs_s0addr) < LFS_LABELPAD) {
+ if (lfs_fsbtob(lfsp, lfs_sb_gets0addr(lfsp)) < LFS_LABELPAD) {
/* First segment eats the disklabel */
sum_offset += lfs_fragroundup(lfsp, LFS_LABELPAD) -
- lfs_fsbtob(lfsp, lfsp->lfs_s0addr);
+ lfs_fsbtob(lfsp, lfs_sb_gets0addr(lfsp));
addr += lfs_btofsb(lfsp, lfs_fragroundup(lfsp, LFS_LABELPAD)) -
- lfsp->lfs_s0addr;
+ lfs_sb_gets0addr(lfsp);
printf("Disklabel at 0x0\n");
}
}
@@ -771,13 +771,13 @@ dump_super(struct lfs *lfsp)
"interleave ", lfs_sb_getinterleave(lfsp),
"sumsize ", lfs_sb_getsumsize(lfsp));
(void)printf(" %s%-10d %s0x%-8jx\n",
- "seg0addr ", lfsp->lfs_s0addr,
+ "seg0addr ", lfs_sb_gets0addr(lfsp),
"maxfilesize ", (uintmax_t)lfs_sb_getmaxfilesize(lfsp));
(void)printf(" Superblock disk addresses:\n ");
for (i = 0; i < LFS_MAXNUMSB; i++) {
- (void)printf(" 0x%-8x", lfsp->lfs_sboffs[i]);
+ (void)printf(" 0x%-8x", lfs_sb_getsboff(lfsp, i));
if (i == (LFS_MAXNUMSB >> 1))
(void)printf("\n ");
}