VOP_BALLOC was never really a VOP in the first place, so convert it
to UFS_BALLOC like the other "between UFS and FFS function interfaces".
This commit is contained in:
parent
4d26864fcf
commit
aa58659992
@ -96,6 +96,7 @@ struct ufsmount {
|
||||
int64_t um_savedmaxfilesize; /* XXX - limit maxfilesize */
|
||||
struct malloc_type *um_malloctype; /* The inodes malloctype */
|
||||
int um_i_effnlink_valid; /* i_effnlink valid? */
|
||||
int (*um_balloc) __P((struct vnode *, off_t, int, struct ucred *, int, struct buf **));
|
||||
int (*um_blkatoff) __P((struct vnode *, off_t, char **, struct buf **));
|
||||
int (*um_truncate) __P((struct vnode *, off_t, int, struct ucred *, struct proc *));
|
||||
int (*um_update) __P((struct vnode *, int));
|
||||
@ -103,6 +104,7 @@ struct ufsmount {
|
||||
int (*um_vfree) __P((struct vnode *, ino_t, int));
|
||||
};
|
||||
|
||||
#define UFS_BALLOC(aa, bb, cc, dd, ee, ff) VFSTOUFS((aa)->v_mount)->um_balloc(aa, bb, cc, dd, ee, ff)
|
||||
#define UFS_BLKATOFF(aa, bb, cc, dd) VFSTOUFS((aa)->v_mount)->um_blkatoff(aa, bb, cc, dd)
|
||||
#define UFS_TRUNCATE(aa, bb, cc, dd, ee) VFSTOUFS((aa)->v_mount)->um_truncate(aa, bb, cc, dd, ee)
|
||||
#define UFS_UPDATE(aa, bb) VFSTOUFS((aa)->v_mount)->um_update(aa, bb)
|
||||
|
@ -96,6 +96,7 @@ struct ufsmount {
|
||||
int64_t um_savedmaxfilesize; /* XXX - limit maxfilesize */
|
||||
struct malloc_type *um_malloctype; /* The inodes malloctype */
|
||||
int um_i_effnlink_valid; /* i_effnlink valid? */
|
||||
int (*um_balloc) __P((struct vnode *, off_t, int, struct ucred *, int, struct buf **));
|
||||
int (*um_blkatoff) __P((struct vnode *, off_t, char **, struct buf **));
|
||||
int (*um_truncate) __P((struct vnode *, off_t, int, struct ucred *, struct proc *));
|
||||
int (*um_update) __P((struct vnode *, int));
|
||||
@ -103,6 +104,7 @@ struct ufsmount {
|
||||
int (*um_vfree) __P((struct vnode *, ino_t, int));
|
||||
};
|
||||
|
||||
#define UFS_BALLOC(aa, bb, cc, dd, ee, ff) VFSTOUFS((aa)->v_mount)->um_balloc(aa, bb, cc, dd, ee, ff)
|
||||
#define UFS_BLKATOFF(aa, bb, cc, dd) VFSTOUFS((aa)->v_mount)->um_blkatoff(aa, bb, cc, dd)
|
||||
#define UFS_TRUNCATE(aa, bb, cc, dd, ee) VFSTOUFS((aa)->v_mount)->um_truncate(aa, bb, cc, dd, ee)
|
||||
#define UFS_UPDATE(aa, bb) VFSTOUFS((aa)->v_mount)->um_update(aa, bb)
|
||||
|
@ -426,18 +426,6 @@ vop_advlock {
|
||||
IN int flags;
|
||||
};
|
||||
|
||||
#
|
||||
#% balloc vp L L L
|
||||
#
|
||||
vop_balloc {
|
||||
IN struct vnode *vp;
|
||||
IN off_t startoffset;
|
||||
IN int size;
|
||||
IN struct ucred *cred;
|
||||
IN int flags;
|
||||
OUT struct buf **bpp;
|
||||
};
|
||||
|
||||
#
|
||||
#% reallocblks vp L L L
|
||||
#
|
||||
|
@ -55,15 +55,8 @@
|
||||
* the inode and the logical block number in a file.
|
||||
*/
|
||||
int
|
||||
ffs_balloc(ap)
|
||||
struct vop_balloc_args /* {
|
||||
struct vnode *a_vp;
|
||||
ufs_daddr_t a_lbn;
|
||||
int a_size;
|
||||
struct ucred *a_cred;
|
||||
int a_flags;
|
||||
struct buf *a_bpp;
|
||||
} */ *ap;
|
||||
ffs_balloc(struct vnode *a_vp, off_t a_startoffset, int a_size,
|
||||
struct ucred *a_cred, int a_flags, struct buf **a_bpp)
|
||||
{
|
||||
struct inode *ip;
|
||||
ufs_daddr_t lbn;
|
||||
@ -81,18 +74,18 @@ ffs_balloc(ap)
|
||||
int unwindidx = -1;
|
||||
struct proc *p = curproc; /* XXX */
|
||||
|
||||
vp = ap->a_vp;
|
||||
vp = a_vp;
|
||||
ip = VTOI(vp);
|
||||
fs = ip->i_fs;
|
||||
lbn = lblkno(fs, ap->a_startoffset);
|
||||
size = blkoff(fs, ap->a_startoffset) + ap->a_size;
|
||||
lbn = lblkno(fs, a_startoffset);
|
||||
size = blkoff(fs, a_startoffset) + a_size;
|
||||
if (size > fs->fs_bsize)
|
||||
panic("ffs_balloc: blk too big");
|
||||
*ap->a_bpp = NULL;
|
||||
*a_bpp = NULL;
|
||||
if (lbn < 0)
|
||||
return (EFBIG);
|
||||
cred = ap->a_cred;
|
||||
flags = ap->a_flags;
|
||||
cred = a_cred;
|
||||
flags = a_flags;
|
||||
|
||||
/*
|
||||
* If the next write will extend the file into a new block,
|
||||
@ -135,7 +128,7 @@ ffs_balloc(ap)
|
||||
return (error);
|
||||
}
|
||||
bp->b_blkno = fsbtodb(fs, nb);
|
||||
*ap->a_bpp = bp;
|
||||
*a_bpp = bp;
|
||||
return (0);
|
||||
}
|
||||
if (nb != 0) {
|
||||
@ -182,7 +175,7 @@ ffs_balloc(ap)
|
||||
}
|
||||
ip->i_db[lbn] = dbtofsb(fs, bp->b_blkno);
|
||||
ip->i_flag |= IN_CHANGE | IN_UPDATE;
|
||||
*ap->a_bpp = bp;
|
||||
*a_bpp = bp;
|
||||
return (0);
|
||||
}
|
||||
/*
|
||||
@ -294,7 +287,7 @@ ffs_balloc(ap)
|
||||
* If asked only for the indirect block, then return it.
|
||||
*/
|
||||
if (flags & B_METAONLY) {
|
||||
*ap->a_bpp = bp;
|
||||
*a_bpp = bp;
|
||||
return (0);
|
||||
}
|
||||
/*
|
||||
@ -329,7 +322,7 @@ ffs_balloc(ap)
|
||||
bp->b_flags |= B_CLUSTEROK;
|
||||
bdwrite(bp);
|
||||
}
|
||||
*ap->a_bpp = nbp;
|
||||
*a_bpp = nbp;
|
||||
return (0);
|
||||
}
|
||||
brelse(bp);
|
||||
@ -343,7 +336,7 @@ ffs_balloc(ap)
|
||||
nbp = getblk(vp, lbn, fs->fs_bsize, 0, 0);
|
||||
nbp->b_blkno = fsbtodb(fs, nb);
|
||||
}
|
||||
*ap->a_bpp = nbp;
|
||||
*a_bpp = nbp;
|
||||
return (0);
|
||||
fail:
|
||||
/*
|
||||
|
@ -55,7 +55,8 @@ struct vop_copyonwrite_args;
|
||||
|
||||
int ffs_alloc __P((struct inode *,
|
||||
ufs_daddr_t, ufs_daddr_t, int, struct ucred *, ufs_daddr_t *));
|
||||
int ffs_balloc __P((struct vop_balloc_args *));
|
||||
int ffs_balloc __P((struct vnode *a_vp, off_t a_startoffset, int a_size,
|
||||
struct ucred *a_cred, int a_flags, struct buf **a_bpp));
|
||||
int ffs_blkatoff __P((struct vnode *, off_t, char **, struct buf **));
|
||||
void ffs_blkfree __P((struct inode *, ufs_daddr_t, long));
|
||||
ufs_daddr_t ffs_blkpref __P((struct inode *, ufs_daddr_t, int, ufs_daddr_t *));
|
||||
|
@ -214,7 +214,7 @@ ffs_truncate(vp, length, flags, cred, p)
|
||||
aflags = B_CLRBUF;
|
||||
if (flags & IO_SYNC)
|
||||
aflags |= B_SYNC;
|
||||
error = VOP_BALLOC(ovp, length - 1, 1,
|
||||
error = UFS_BALLOC(ovp, length - 1, 1,
|
||||
cred, aflags, &bp);
|
||||
if (error)
|
||||
return (error);
|
||||
@ -244,7 +244,7 @@ ffs_truncate(vp, length, flags, cred, p)
|
||||
aflags = B_CLRBUF;
|
||||
if (flags & IO_SYNC)
|
||||
aflags |= B_SYNC;
|
||||
error = VOP_BALLOC(ovp, length - 1, 1, cred, aflags, &bp);
|
||||
error = UFS_BALLOC(ovp, length - 1, 1, cred, aflags, &bp);
|
||||
if (error) {
|
||||
return (error);
|
||||
}
|
||||
|
@ -161,7 +161,7 @@ ffs_snapshot(mp, snapfile)
|
||||
* to set size to that of the filesystem.
|
||||
*/
|
||||
numblks = howmany(fs->fs_size, fs->fs_frag);
|
||||
error = VOP_BALLOC(vp, lblktosize(fs, (off_t)(numblks - 1)),
|
||||
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)(numblks - 1)),
|
||||
fs->fs_bsize, KERNCRED, B_CLRBUF, &bp);
|
||||
if (error)
|
||||
goto out;
|
||||
@ -182,7 +182,7 @@ ffs_snapshot(mp, snapfile)
|
||||
* needing to be copied.
|
||||
*/
|
||||
for (blkno = NDADDR; blkno < numblks; blkno += NINDIR(fs)) {
|
||||
error = VOP_BALLOC(vp, lblktosize(fs, (off_t)blkno),
|
||||
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)blkno),
|
||||
fs->fs_bsize, p->p_ucred, B_METAONLY, &ibp);
|
||||
if (error)
|
||||
goto out;
|
||||
@ -193,7 +193,7 @@ ffs_snapshot(mp, snapfile)
|
||||
panic("ffs_snapshot: lost direct block");
|
||||
ip->i_db[iblkno] = BLK_NOCOPY;
|
||||
} else {
|
||||
error = VOP_BALLOC(vp, lblktosize(fs, (off_t)iblkno),
|
||||
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)iblkno),
|
||||
fs->fs_bsize, KERNCRED, B_METAONLY, &ibp);
|
||||
if (error)
|
||||
goto out;
|
||||
@ -219,7 +219,7 @@ ffs_snapshot(mp, snapfile)
|
||||
break;
|
||||
if (i == inoblkcnt) {
|
||||
inoblks[inoblkcnt++] = blkno;
|
||||
error = VOP_BALLOC(vp, lblktosize(fs, (off_t)blkno),
|
||||
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)blkno),
|
||||
fs->fs_bsize, KERNCRED, 0, &nbp);
|
||||
if (error)
|
||||
goto out;
|
||||
@ -230,7 +230,7 @@ ffs_snapshot(mp, snapfile)
|
||||
* Allocate all cylinder group blocks.
|
||||
*/
|
||||
for (cg = 0; cg < fs->fs_ncg; cg++) {
|
||||
error = VOP_BALLOC(vp, (off_t)(cgtod(fs, cg)) << fs->fs_fshift,
|
||||
error = UFS_BALLOC(vp, (off_t)(cgtod(fs, cg)) << fs->fs_fshift,
|
||||
fs->fs_bsize, KERNCRED, 0, &nbp);
|
||||
if (error)
|
||||
goto out;
|
||||
@ -239,13 +239,13 @@ ffs_snapshot(mp, snapfile)
|
||||
/*
|
||||
* Allocate copies for the superblock and its summary information.
|
||||
*/
|
||||
if ((error = VOP_BALLOC(vp, (off_t)(SBOFF), SBSIZE, KERNCRED, 0, &nbp)))
|
||||
if ((error = UFS_BALLOC(vp, (off_t)(SBOFF), SBSIZE, KERNCRED, 0, &nbp)))
|
||||
goto out;
|
||||
bawrite(nbp);
|
||||
blkno = fragstoblks(fs, fs->fs_csaddr);
|
||||
len = howmany(fs->fs_cssize, fs->fs_bsize);
|
||||
for (loc = 0; loc < len; loc++) {
|
||||
error = VOP_BALLOC(vp, lblktosize(fs, (off_t)(blkno + loc)),
|
||||
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)(blkno + loc)),
|
||||
fs->fs_bsize, KERNCRED, 0, &nbp);
|
||||
if (error)
|
||||
goto out;
|
||||
@ -316,7 +316,7 @@ ffs_snapshot(mp, snapfile)
|
||||
ip->i_db[loc] = BLK_NOCOPY;
|
||||
}
|
||||
}
|
||||
error = VOP_BALLOC(vp, lblktosize(fs, (off_t)(base + loc)),
|
||||
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)(base + loc)),
|
||||
fs->fs_bsize, KERNCRED, B_METAONLY, &ibp);
|
||||
if (error) {
|
||||
brelse(bp);
|
||||
@ -327,7 +327,7 @@ ffs_snapshot(mp, snapfile)
|
||||
if (indiroff >= NINDIR(fs)) {
|
||||
ibp->b_flags |= B_VALIDSUSPWRT;
|
||||
bawrite(ibp);
|
||||
error = VOP_BALLOC(vp,
|
||||
error = UFS_BALLOC(vp,
|
||||
lblktosize(fs, (off_t)(base + loc)),
|
||||
fs->fs_bsize, KERNCRED, B_METAONLY, &ibp);
|
||||
if (error) {
|
||||
@ -349,7 +349,7 @@ ffs_snapshot(mp, snapfile)
|
||||
/*
|
||||
* Snapshot the superblock and its summary information.
|
||||
*/
|
||||
if ((error = VOP_BALLOC(vp, SBOFF, SBSIZE, KERNCRED, 0, &nbp)) != 0)
|
||||
if ((error = UFS_BALLOC(vp, SBOFF, SBSIZE, KERNCRED, 0, &nbp)) != 0)
|
||||
goto out1;
|
||||
copy_fs = (struct fs *)(nbp->b_data + blkoff(fs, SBOFF));
|
||||
bcopy(fs, copy_fs, fs->fs_sbsize);
|
||||
@ -365,7 +365,7 @@ ffs_snapshot(mp, snapfile)
|
||||
size = fs->fs_bsize;
|
||||
space = fs->fs_csp;
|
||||
for (loc = 0; loc <= len; loc++) {
|
||||
error = VOP_BALLOC(vp, lblktosize(fs, (off_t)(blkno + loc)),
|
||||
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)(blkno + loc)),
|
||||
fs->fs_bsize, KERNCRED, 0, &nbp);
|
||||
if (error)
|
||||
goto out1;
|
||||
@ -383,7 +383,7 @@ ffs_snapshot(mp, snapfile)
|
||||
* the copies can can be expunged.
|
||||
*/
|
||||
for (loc = 0; loc < inoblkcnt; loc++) {
|
||||
error = VOP_BALLOC(vp, lblktosize(fs, (off_t)inoblks[loc]),
|
||||
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)inoblks[loc]),
|
||||
fs->fs_bsize, KERNCRED, 0, &nbp);
|
||||
if (error)
|
||||
goto out1;
|
||||
@ -424,7 +424,7 @@ ffs_snapshot(mp, snapfile)
|
||||
* Set copied snapshot inode to be a zero length file.
|
||||
*/
|
||||
blkno = fragstoblks(fs, ino_to_fsba(fs, xp->i_number));
|
||||
error = VOP_BALLOC(vp, lblktosize(fs, (off_t)blkno),
|
||||
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)blkno),
|
||||
fs->fs_bsize, KERNCRED, 0, &nbp);
|
||||
if (error)
|
||||
goto out1;
|
||||
@ -563,7 +563,7 @@ snapacct(vp, oldblkp, lastblkp)
|
||||
blkp = &ip->i_db[lbn];
|
||||
ip->i_flag |= IN_CHANGE | IN_UPDATE;
|
||||
} else {
|
||||
error = VOP_BALLOC(vp, lblktosize(fs, (off_t)lbn),
|
||||
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)lbn),
|
||||
fs->fs_bsize, KERNCRED, B_METAONLY, &ibp);
|
||||
if (error)
|
||||
return (error);
|
||||
@ -665,7 +665,7 @@ ffs_snapremove(vp)
|
||||
ip->i_db[blkno] = 0;
|
||||
}
|
||||
for (blkno = NDADDR; blkno < fs->fs_size; blkno += NINDIR(fs)) {
|
||||
error = VOP_BALLOC(vp, lblktosize(fs, (off_t)blkno),
|
||||
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)blkno),
|
||||
fs->fs_bsize, KERNCRED, B_METAONLY, &ibp);
|
||||
if (error)
|
||||
continue;
|
||||
@ -732,7 +732,7 @@ ffs_snapblkfree(freeip, bno, size)
|
||||
} else {
|
||||
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
|
||||
p->p_flag |= P_COWINPROGRESS;
|
||||
error = VOP_BALLOC(vp, lblktosize(fs, (off_t)lbn),
|
||||
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)lbn),
|
||||
fs->fs_bsize, KERNCRED, B_METAONLY, &ibp);
|
||||
p->p_flag &= ~P_COWINPROGRESS;
|
||||
VOP_UNLOCK(vp, 0, p);
|
||||
@ -815,7 +815,7 @@ ffs_snapblkfree(freeip, bno, size)
|
||||
*/
|
||||
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
|
||||
p->p_flag |= P_COWINPROGRESS;
|
||||
error = VOP_BALLOC(vp, lblktosize(fs, (off_t)lbn),
|
||||
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)lbn),
|
||||
fs->fs_bsize, KERNCRED, 0, &cbp);
|
||||
p->p_flag &= ~P_COWINPROGRESS;
|
||||
if (error) {
|
||||
@ -974,13 +974,13 @@ ffs_copyonwrite(devvp, bp)
|
||||
* We ensure that everything of our own that needs to be
|
||||
* copied will be done at the time that ffs_snapshot is
|
||||
* called. Thus we can skip the check here which can
|
||||
* deadlock in doing the lookup in VOP_BALLOC.
|
||||
* deadlock in doing the lookup in UFS_BALLOC.
|
||||
*/
|
||||
if (bp->b_vp == vp)
|
||||
continue;
|
||||
/*
|
||||
* Check to see if block needs to be copied. We have to
|
||||
* be able to do the VOP_BALLOC without blocking, otherwise
|
||||
* be able to do the UFS_BALLOC without blocking, otherwise
|
||||
* we may get in a deadlock with another process also
|
||||
* trying to allocate. If we find outselves unable to
|
||||
* get the buffer lock, we unlock the snapshot vnode,
|
||||
@ -992,7 +992,7 @@ ffs_copyonwrite(devvp, bp)
|
||||
blkno = ip->i_db[lbn];
|
||||
} else {
|
||||
p->p_flag |= P_COWINPROGRESS;
|
||||
error = VOP_BALLOC(vp, lblktosize(fs, (off_t)lbn),
|
||||
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)lbn),
|
||||
fs->fs_bsize, KERNCRED, B_METAONLY | B_NOWAIT, &ibp);
|
||||
p->p_flag &= ~P_COWINPROGRESS;
|
||||
if (error) {
|
||||
@ -1020,7 +1020,7 @@ ffs_copyonwrite(devvp, bp)
|
||||
* the snapshot inode.
|
||||
*/
|
||||
p->p_flag |= P_COWINPROGRESS;
|
||||
error = VOP_BALLOC(vp, lblktosize(fs, (off_t)lbn),
|
||||
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)lbn),
|
||||
fs->fs_bsize, KERNCRED, B_NOWAIT, &cbp);
|
||||
p->p_flag &= ~P_COWINPROGRESS;
|
||||
if (error) {
|
||||
|
@ -625,6 +625,7 @@ ffs_mountfs(devvp, mp, p, malloctype)
|
||||
ump->um_update = ffs_update;
|
||||
ump->um_valloc = ffs_valloc;
|
||||
ump->um_vfree = ffs_vfree;
|
||||
ump->um_balloc = ffs_balloc;
|
||||
bcopy(bp->b_data, ump->um_fs, (u_int)fs->fs_sbsize);
|
||||
if (fs->fs_sbsize < SBSIZE)
|
||||
bp->b_flags |= B_INVAL | B_NOCACHE;
|
||||
|
@ -79,7 +79,6 @@ static struct vnodeopv_entry_desc ffs_vnodeop_entries[] = {
|
||||
{ &vop_getpages_desc, (vop_t *) ffs_getpages },
|
||||
{ &vop_putpages_desc, (vop_t *) ffs_putpages },
|
||||
{ &vop_read_desc, (vop_t *) ffs_read },
|
||||
{ &vop_balloc_desc, (vop_t *) ffs_balloc },
|
||||
{ &vop_reallocblks_desc, (vop_t *) ffs_reallocblks },
|
||||
{ &vop_write_desc, (vop_t *) ffs_write },
|
||||
#ifdef UFS_EXTATTR
|
||||
|
@ -100,7 +100,6 @@ static struct vnodeopv_entry_desc ifs_vnodeop_entries[] = {
|
||||
{ &vop_getpages_desc, (vop_t *) ffs_getpages },
|
||||
{ &vop_putpages_desc, (vop_t *) ffs_putpages },
|
||||
{ &vop_read_desc, (vop_t *) ffs_read },
|
||||
{ &vop_balloc_desc, (vop_t *) ffs_balloc },
|
||||
{ &vop_reallocblks_desc, (vop_t *) ffs_reallocblks },
|
||||
{ &vop_write_desc, (vop_t *) ffs_write },
|
||||
|
||||
|
@ -719,7 +719,7 @@ ufs_direnter(dvp, tvp, dirp, cnp, newdirbp)
|
||||
flags = B_CLRBUF;
|
||||
if (!DOINGSOFTDEP(dvp) && !DOINGASYNC(dvp))
|
||||
flags |= B_SYNC;
|
||||
if ((error = VOP_BALLOC(dvp, (off_t)dp->i_offset, DIRBLKSIZ,
|
||||
if ((error = UFS_BALLOC(dvp, (off_t)dp->i_offset, DIRBLKSIZ,
|
||||
cr, flags, &bp)) != 0) {
|
||||
if (DOINGSOFTDEP(dvp) && newdirbp != NULL)
|
||||
bdwrite(newdirbp);
|
||||
|
@ -484,7 +484,7 @@ WRITE(ap)
|
||||
flags &= ~B_CLRBUF;
|
||||
#endif
|
||||
/* XXX is uio->uio_offset the right thing here? */
|
||||
error = VOP_BALLOC(vp, uio->uio_offset, xfersize,
|
||||
error = UFS_BALLOC(vp, uio->uio_offset, xfersize,
|
||||
ap->a_cred, flags, &bp);
|
||||
if (error != 0)
|
||||
break;
|
||||
|
@ -1531,7 +1531,7 @@ ufs_mkdir(ap)
|
||||
dirtemplate = *dtp;
|
||||
dirtemplate.dot_ino = ip->i_number;
|
||||
dirtemplate.dotdot_ino = dp->i_number;
|
||||
if ((error = VOP_BALLOC(tvp, (off_t)0, DIRBLKSIZ, cnp->cn_cred,
|
||||
if ((error = UFS_BALLOC(tvp, (off_t)0, DIRBLKSIZ, cnp->cn_cred,
|
||||
B_CLRBUF, &bp)) != 0)
|
||||
goto bad;
|
||||
ip->i_size = DIRBLKSIZ;
|
||||
|
@ -96,6 +96,7 @@ struct ufsmount {
|
||||
int64_t um_savedmaxfilesize; /* XXX - limit maxfilesize */
|
||||
struct malloc_type *um_malloctype; /* The inodes malloctype */
|
||||
int um_i_effnlink_valid; /* i_effnlink valid? */
|
||||
int (*um_balloc) __P((struct vnode *, off_t, int, struct ucred *, int, struct buf **));
|
||||
int (*um_blkatoff) __P((struct vnode *, off_t, char **, struct buf **));
|
||||
int (*um_truncate) __P((struct vnode *, off_t, int, struct ucred *, struct proc *));
|
||||
int (*um_update) __P((struct vnode *, int));
|
||||
@ -103,6 +104,7 @@ struct ufsmount {
|
||||
int (*um_vfree) __P((struct vnode *, ino_t, int));
|
||||
};
|
||||
|
||||
#define UFS_BALLOC(aa, bb, cc, dd, ee, ff) VFSTOUFS((aa)->v_mount)->um_balloc(aa, bb, cc, dd, ee, ff)
|
||||
#define UFS_BLKATOFF(aa, bb, cc, dd) VFSTOUFS((aa)->v_mount)->um_blkatoff(aa, bb, cc, dd)
|
||||
#define UFS_TRUNCATE(aa, bb, cc, dd, ee) VFSTOUFS((aa)->v_mount)->um_truncate(aa, bb, cc, dd, ee)
|
||||
#define UFS_UPDATE(aa, bb) VFSTOUFS((aa)->v_mount)->um_update(aa, bb)
|
||||
|
Loading…
Reference in New Issue
Block a user