Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F105807757
D10803.id28540.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
10 KB
Referenced Files
None
Subscribers
None
D10803.id28540.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D10803: makefs: make buf generic
Attached
Detach File
Event Timeline
Log In to Comment