Page MenuHomeFreeBSD

D10803.id28540.diff
No OneTemporary

D10803.id28540.diff

Index: usr.sbin/makefs/ffs.c
===================================================================
--- usr.sbin/makefs/ffs.c
+++ usr.sbin/makefs/ffs.c
@@ -143,7 +143,6 @@
fsnode *, fsinfo_t *);
-int sectorsize; /* XXX: for buf.c::getblk() */
/* publicly visible functions */
void
@@ -429,8 +428,6 @@
printf("ffs_validate: dir %s; %lld bytes, %lld inodes\n",
dir, (long long)fsopts->size, (long long)fsopts->inodes);
}
- sectorsize = fsopts->sectorsize; /* XXX - see earlier */
-
/* now check calculated sizes vs requested sizes */
if (fsopts->maxsize > 0 && fsopts->size > fsopts->maxsize) {
errx(1, "`%s' size of %lld is larger than the maxsize of %lld.",
@@ -878,6 +875,7 @@
struct inode in;
struct buf * bp;
ffs_opt_t *ffs_opts = fsopts->fs_specific;
+ struct vnode vp = { fsopts, NULL };
assert (din != NULL);
assert (buf != NULL);
@@ -890,6 +888,7 @@
p = NULL;
in.i_fs = (struct fs *)fsopts->superblock;
+ in.i_devvp = &vp;
if (debug & DEBUG_FS_WRITE_FILE) {
printf(
@@ -910,7 +909,6 @@
else
memcpy(&in.i_din.ffs2_din, &din->ffs2_din,
sizeof(in.i_din.ffs2_din));
- in.i_fd = fsopts->fd;
if (DIP(din, size) == 0)
goto write_inode_and_leave; /* mmm, cheating */
Index: usr.sbin/makefs/ffs/buf.h
===================================================================
--- usr.sbin/makefs/ffs/buf.h
+++ usr.sbin/makefs/ffs/buf.h
@@ -43,13 +43,12 @@
#include <sys/param.h>
#include <sys/queue.h>
+struct makefs_fsinfo;
struct ucred;
struct vnode {
- int fd;
- void *fs;
- void *v_data;
- int offset;
+ struct makefs_fsinfo *v_fsinfo;
+ void *v_data;
};
struct buf {
@@ -58,8 +57,7 @@
long b_bcount;
daddr_t b_blkno;
daddr_t b_lblkno;
- int b_fd;
- void *b_fs;
+ struct makefs_fsinfo *b_fsinfo;
TAILQ_ENTRY(buf) b_tailq;
};
Index: usr.sbin/makefs/ffs/buf.c
===================================================================
--- usr.sbin/makefs/ffs/buf.c
+++ usr.sbin/makefs/ffs/buf.c
@@ -52,8 +52,6 @@
#include "makefs.h"
#include "buf.h"
-extern int sectorsize; /* XXX: from ffs.c & mkfs.c */
-
static TAILQ_HEAD(buftailhead,buf) buftail;
int
@@ -62,6 +60,7 @@
{
off_t offset;
ssize_t rv;
+ fsinfo_t *fsinfo = vp->v_fsinfo;
assert (bpp != NULL);
@@ -69,15 +68,15 @@
printf("%s: blkno %lld size %d\n", __func__, (long long)blkno,
size);
*bpp = getblk(vp, blkno, size, 0, 0, 0);
- offset = (*bpp)->b_blkno * sectorsize; /* XXX */
+ offset = (*bpp)->b_blkno * fsinfo->sectorsize;
if (debug & DEBUG_BUF_BREAD)
printf("%s: blkno %lld offset %lld bcount %ld\n", __func__,
(long long)(*bpp)->b_blkno, (long long) offset,
(*bpp)->b_bcount);
- if (lseek((*bpp)->b_fd, offset, SEEK_SET) == -1)
+ if (lseek((*bpp)->b_fsinfo->fd, offset, SEEK_SET) == -1)
err(1, "%s: lseek %lld (%lld)", __func__,
(long long)(*bpp)->b_blkno, (long long)offset);
- rv = read((*bpp)->b_fd, (*bpp)->b_data, (*bpp)->b_bcount);
+ rv = read((*bpp)->b_fsinfo->fd, (*bpp)->b_data, (*bpp)->b_bcount);
if (debug & DEBUG_BUF_BREAD)
printf("%s: read %ld (%lld) returned %d\n", __func__,
(*bpp)->b_bcount, (long long)offset, (int)rv);
@@ -126,16 +125,17 @@
{
off_t offset;
ssize_t rv;
+ fsinfo_t *fs = bp->b_fsinfo;
assert (bp != NULL);
- offset = bp->b_blkno * sectorsize; /* XXX */
+ offset = bp->b_blkno * fs->sectorsize;
if (debug & DEBUG_BUF_BWRITE)
printf("bwrite: blkno %lld offset %lld bcount %ld\n",
(long long)bp->b_blkno, (long long) offset,
bp->b_bcount);
- if (lseek(bp->b_fd, offset, SEEK_SET) == -1)
+ if (lseek(bp->b_fsinfo->fd, offset, SEEK_SET) == -1)
return (errno);
- rv = write(bp->b_fd, bp->b_data, bp->b_bcount);
+ rv = write(bp->b_fsinfo->fd, bp->b_data, bp->b_bcount);
if (debug & DEBUG_BUF_BWRITE)
printf("bwrite: write %ld (offset %lld) returned %lld\n",
bp->b_bcount, (long long)offset, (long long)rv);
@@ -178,7 +178,6 @@
struct buf *bp;
void *n;
- //blkno += vp->offset;
if (debug & DEBUG_BUF_GETBLK)
printf("getblk: blkno %lld size %d\n", (long long)blkno, size);
@@ -199,8 +198,7 @@
bp = ecalloc(1, sizeof(*bp));
bp->b_bufsize = 0;
bp->b_blkno = bp->b_lblkno = blkno;
- bp->b_fd = vp->fd;
- bp->b_fs = vp->fs;
+ bp->b_fsinfo = vp->v_fsinfo;
bp->b_data = NULL;
TAILQ_INSERT_HEAD(&buftail, bp, b_tailq);
}
Index: usr.sbin/makefs/ffs/ffs_alloc.c
===================================================================
--- usr.sbin/makefs/ffs/ffs_alloc.c
+++ usr.sbin/makefs/ffs/ffs_alloc.c
@@ -297,11 +297,10 @@
int error, frags, allocsiz, i;
struct fs *fs = ip->i_fs;
const int needswap = UFS_FSNEEDSWAP(fs);
- struct vnode vp = { ip->i_fd, ip->i_fs, NULL, 0 };
if (fs->fs_cs(fs, cg).cs_nbfree == 0 && size == fs->fs_bsize)
return (0);
- error = bread(&vp, fsbtodb(fs, cgtod(fs, cg)), (int)fs->fs_cgsize,
+ error = bread(ip->i_devvp, fsbtodb(fs, cgtod(fs, cg)), (int)fs->fs_cgsize,
NULL, &bp);
if (error) {
brelse(bp, 0);
@@ -433,7 +432,6 @@
int i, error, cg, blk, frags, bbase;
struct fs *fs = ip->i_fs;
const int needswap = UFS_FSNEEDSWAP(fs);
- struct vnode vp = { ip->i_fd, ip->i_fs, NULL, 0 };
if (size > fs->fs_bsize || fragoff(fs, size) != 0 ||
fragnum(fs, bno) + numfrags(fs, size) > fs->fs_frag) {
@@ -446,7 +444,7 @@
(uintmax_t)ip->i_number);
return;
}
- error = bread(&vp, fsbtodb(fs, cgtod(fs, cg)), (int)fs->fs_cgsize,
+ error = bread(ip->i_devvp, fsbtodb(fs, cgtod(fs, cg)), (int)fs->fs_cgsize,
NULL, &bp);
if (error) {
brelse(bp, 0);
Index: usr.sbin/makefs/ffs/ffs_balloc.c
===================================================================
--- usr.sbin/makefs/ffs/ffs_balloc.c
+++ usr.sbin/makefs/ffs/ffs_balloc.c
@@ -89,7 +89,6 @@
int32_t *allocblk, allociblk[UFS_NIADDR + 1];
int32_t *allocib;
const int needswap = UFS_FSNEEDSWAP(fs);
- struct vnode vp = { ip->i_fd, ip->i_fs, NULL, 0 };
lbn = lblkno(fs, offset);
size = blkoff(fs, offset) + bufsize;
@@ -134,7 +133,7 @@
*/
if (bpp != NULL) {
- error = bread(&vp, lbn, fs->fs_bsize, NULL,
+ error = bread(ip->i_devvp, lbn, fs->fs_bsize, NULL,
bpp);
if (error) {
brelse(*bpp, 0);
@@ -160,7 +159,7 @@
*/
if (bpp != NULL) {
- error = bread(&vp, lbn, osize, NULL,
+ error = bread(ip->i_devvp, lbn, osize, NULL,
bpp);
if (error) {
brelse(*bpp, 0);
@@ -190,7 +189,7 @@
if (error)
return (error);
if (bpp != NULL) {
- bp = getblk(&vp, lbn, nsize, 0, 0, 0);
+ bp = getblk(ip->i_devvp, lbn, nsize, 0, 0, 0);
bp->b_blkno = fsbtodb(fs, newb);
clrbuf(bp);
*bpp = bp;
@@ -228,7 +227,7 @@
return error;
nb = newb;
*allocblk++ = nb;
- bp = getblk(&vp, indirs[1].in_lbn, fs->fs_bsize, 0, 0, 0);
+ bp = getblk(ip->i_devvp, indirs[1].in_lbn, fs->fs_bsize, 0, 0, 0);
bp->b_blkno = fsbtodb(fs, nb);
clrbuf(bp);
/*
@@ -246,7 +245,7 @@
*/
for (i = 1;;) {
- error = bread(&vp, indirs[i].in_lbn, fs->fs_bsize, NULL, &bp);
+ error = bread(ip->i_devvp, indirs[i].in_lbn, fs->fs_bsize, NULL, &bp);
if (error) {
brelse(bp, 0);
return error;
@@ -269,7 +268,7 @@
}
nb = newb;
*allocblk++ = nb;
- nbp = getblk(&vp, indirs[i].in_lbn, fs->fs_bsize, 0, 0, 0);
+ nbp = getblk(ip->i_devvp, indirs[i].in_lbn, fs->fs_bsize, 0, 0, 0);
nbp->b_blkno = fsbtodb(fs, nb);
clrbuf(nbp);
/*
@@ -300,7 +299,7 @@
nb = newb;
*allocblk++ = nb;
if (bpp != NULL) {
- nbp = getblk(&vp, lbn, fs->fs_bsize, 0, 0, 0);
+ nbp = getblk(ip->i_devvp, lbn, fs->fs_bsize, 0, 0, 0);
nbp->b_blkno = fsbtodb(fs, nb);
clrbuf(nbp);
*bpp = nbp;
@@ -316,7 +315,7 @@
}
brelse(bp, 0);
if (bpp != NULL) {
- error = bread(&vp, lbn, (int)fs->fs_bsize, NULL, &nbp);
+ error = bread(ip->i_devvp, lbn, (int)fs->fs_bsize, NULL, &nbp);
if (error) {
brelse(nbp, 0);
return error;
@@ -340,7 +339,6 @@
int64_t *allocblk, allociblk[UFS_NIADDR + 1];
int64_t *allocib;
const int needswap = UFS_FSNEEDSWAP(fs);
- struct vnode vp = { ip->i_fd, ip->i_fs, NULL, 0 };
lbn = lblkno(fs, offset);
size = blkoff(fs, offset) + bufsize;
@@ -385,7 +383,7 @@
*/
if (bpp != NULL) {
- error = bread(&vp, lbn, fs->fs_bsize, NULL,
+ error = bread(ip->i_devvp, lbn, fs->fs_bsize, NULL,
bpp);
if (error) {
brelse(*bpp, 0);
@@ -411,7 +409,7 @@
*/
if (bpp != NULL) {
- error = bread(&vp, lbn, osize, NULL,
+ error = bread(ip->i_devvp, lbn, osize, NULL,
bpp);
if (error) {
brelse(*bpp, 0);
@@ -441,7 +439,7 @@
if (error)
return (error);
if (bpp != NULL) {
- bp = getblk(&vp, lbn, nsize, 0, 0, 0);
+ bp = getblk(ip->i_devvp, lbn, nsize, 0, 0, 0);
bp->b_blkno = fsbtodb(fs, newb);
clrbuf(bp);
*bpp = bp;
@@ -479,7 +477,7 @@
return error;
nb = newb;
*allocblk++ = nb;
- bp = getblk(&vp, indirs[1].in_lbn, fs->fs_bsize, 0, 0, 0);
+ bp = getblk(ip->i_devvp, indirs[1].in_lbn, fs->fs_bsize, 0, 0, 0);
bp->b_blkno = fsbtodb(fs, nb);
clrbuf(bp);
/*
@@ -497,7 +495,7 @@
*/
for (i = 1;;) {
- error = bread(&vp, indirs[i].in_lbn, fs->fs_bsize, NULL, &bp);
+ error = bread(ip->i_devvp, indirs[i].in_lbn, fs->fs_bsize, NULL, &bp);
if (error) {
brelse(bp, 0);
return error;
@@ -520,7 +518,7 @@
}
nb = newb;
*allocblk++ = nb;
- nbp = getblk(&vp, indirs[i].in_lbn, fs->fs_bsize, 0, 0, 0);
+ nbp = getblk(ip->i_devvp, indirs[i].in_lbn, fs->fs_bsize, 0, 0, 0);
nbp->b_blkno = fsbtodb(fs, nb);
clrbuf(nbp);
/*
@@ -551,7 +549,7 @@
nb = newb;
*allocblk++ = nb;
if (bpp != NULL) {
- nbp = getblk(&vp, lbn, fs->fs_bsize, 0, 0, 0);
+ nbp = getblk(ip->i_devvp, lbn, fs->fs_bsize, 0, 0, 0);
nbp->b_blkno = fsbtodb(fs, nb);
clrbuf(nbp);
*bpp = nbp;
@@ -567,7 +565,7 @@
}
brelse(bp, 0);
if (bpp != NULL) {
- error = bread(&vp, lbn, (int)fs->fs_bsize, NULL, &nbp);
+ error = bread(ip->i_devvp, lbn, (int)fs->fs_bsize, NULL, &nbp);
if (error) {
brelse(nbp, 0);
return error;
Index: usr.sbin/makefs/ffs/ufs_inode.h
===================================================================
--- usr.sbin/makefs/ffs/ufs_inode.h
+++ usr.sbin/makefs/ffs/ufs_inode.h
@@ -45,9 +45,9 @@
struct inode {
ino_t i_number; /* The identity of the inode. */
+ struct vnode *i_devvp; /* vnode pointer (contains fsopts) */
struct fs *i_fs; /* File system */
union dinode i_din;
- int i_fd; /* File descriptor */
uint64_t i_size;
};

File Metadata

Mime Type
text/plain
Expires
Sat, Dec 21, 11:53 PM (20 h, 34 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15548980
Default Alt Text
D10803.id28540.diff (10 KB)

Event Timeline