Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F133187819
D28679.id84193.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
52 KB
Referenced Files
None
Subscribers
None
D28679.id84193.diff
View Options
diff --git a/lib/libprocstat/common_kvm.c b/lib/libprocstat/common_kvm.c
--- a/lib/libprocstat/common_kvm.c
+++ b/lib/libprocstat/common_kvm.c
@@ -42,8 +42,8 @@
#include <sys/stat.h>
#include <sys/vnode.h>
#include <sys/conf.h>
-#define _KERNEL
#include <sys/pipe.h>
+#define _WANT_MOUNT
#include <sys/mount.h>
#include <ufs/ufs/quota.h>
#include <ufs/ufs/inode.h>
@@ -51,7 +51,6 @@
#include <ufs/ufs/ufsmount.h>
#include <fs/devfs/devfs.h>
#include <fs/devfs/devfs_int.h>
-#undef _KERNEL
#include <nfs/nfsproto.h>
#include <nfsclient/nfs.h>
#include <nfsclient/nfsnode.h>
diff --git a/lib/libprocstat/libprocstat.c b/lib/libprocstat/libprocstat.c
--- a/lib/libprocstat/libprocstat.c
+++ b/lib/libprocstat/libprocstat.c
@@ -68,7 +68,7 @@
#include <sys/mman.h>
#include <sys/capsicum.h>
#include <sys/ptrace.h>
-#define _KERNEL
+#define _WANT_MOUNT
#include <sys/mount.h>
#include <sys/filedesc.h>
#include <sys/pipe.h>
@@ -76,7 +76,6 @@
#include <ufs/ufs/inode.h>
#include <fs/devfs/devfs.h>
#include <fs/devfs/devfs_int.h>
-#undef _KERNEL
#include <nfs/nfsproto.h>
#include <nfsclient/nfs.h>
#include <nfsclient/nfsnode.h>
diff --git a/lib/libprocstat/zfs_defs.c b/lib/libprocstat/zfs_defs.c
--- a/lib/libprocstat/zfs_defs.c
+++ b/lib/libprocstat/zfs_defs.c
@@ -71,7 +71,7 @@
long va_spare; /* remain quad aligned */
};
-
+#define _WANT_MOUNT
#include <sys/zfs_context.h>
#include <sys/zfs_znode.h>
diff --git a/lib/libufs/block.c b/lib/libufs/block.c
--- a/lib/libufs/block.c
+++ b/lib/libufs/block.c
@@ -36,6 +36,8 @@
#include <sys/disklabel.h>
#include <sys/stat.h>
+#include <ufs/ufs/extattr.h>
+#include <ufs/ufs/quota.h>
#include <ufs/ufs/ufsmount.h>
#include <ufs/ufs/dinode.h>
#include <ufs/ffs/fs.h>
diff --git a/lib/libufs/cgroup.c b/lib/libufs/cgroup.c
--- a/lib/libufs/cgroup.c
+++ b/lib/libufs/cgroup.c
@@ -35,6 +35,8 @@
#include <sys/disklabel.h>
#include <sys/stat.h>
+#include <ufs/ufs/extattr.h>
+#include <ufs/ufs/quota.h>
#include <ufs/ufs/ufsmount.h>
#include <ufs/ufs/dinode.h>
#include <ufs/ffs/fs.h>
diff --git a/lib/libufs/inode.c b/lib/libufs/inode.c
--- a/lib/libufs/inode.c
+++ b/lib/libufs/inode.c
@@ -35,6 +35,8 @@
#include <sys/disklabel.h>
#include <sys/stat.h>
+#include <ufs/ufs/extattr.h>
+#include <ufs/ufs/quota.h>
#include <ufs/ufs/ufsmount.h>
#include <ufs/ufs/dinode.h>
#include <ufs/ffs/fs.h>
diff --git a/lib/libufs/sblock.c b/lib/libufs/sblock.c
--- a/lib/libufs/sblock.c
+++ b/lib/libufs/sblock.c
@@ -35,6 +35,8 @@
#include <sys/disklabel.h>
#include <sys/stat.h>
+#include <ufs/ufs/extattr.h>
+#include <ufs/ufs/quota.h>
#include <ufs/ufs/ufsmount.h>
#include <ufs/ufs/dinode.h>
#include <ufs/ffs/fs.h>
diff --git a/lib/libufs/type.c b/lib/libufs/type.c
--- a/lib/libufs/type.c
+++ b/lib/libufs/type.c
@@ -35,6 +35,8 @@
#include <sys/disklabel.h>
#include <sys/stat.h>
+#include <ufs/ufs/extattr.h>
+#include <ufs/ufs/quota.h>
#include <ufs/ufs/ufsmount.h>
#include <ufs/ufs/dinode.h>
#include <ufs/ffs/fs.h>
diff --git a/sbin/dump/main.c b/sbin/dump/main.c
--- a/sbin/dump/main.c
+++ b/sbin/dump/main.c
@@ -48,6 +48,8 @@
#include <sys/mount.h>
#include <sys/disklabel.h>
+#include <ufs/ufs/extattr.h>
+#include <ufs/ufs/quota.h>
#include <ufs/ufs/dinode.h>
#include <ufs/ufs/ufsmount.h>
#include <ufs/ffs/fs.h>
diff --git a/sbin/ffsinfo/ffsinfo.c b/sbin/ffsinfo/ffsinfo.c
--- a/sbin/ffsinfo/ffsinfo.c
+++ b/sbin/ffsinfo/ffsinfo.c
@@ -59,6 +59,8 @@
#include <sys/mount.h>
#include <sys/stat.h>
+#include <ufs/ufs/extattr.h>
+#include <ufs/ufs/quota.h>
#include <ufs/ufs/ufsmount.h>
#include <ufs/ufs/dinode.h>
#include <ufs/ffs/fs.h>
diff --git a/sbin/fsck_ffs/suj.c b/sbin/fsck_ffs/suj.c
--- a/sbin/fsck_ffs/suj.c
+++ b/sbin/fsck_ffs/suj.c
@@ -35,6 +35,8 @@
#include <sys/mount.h>
#include <sys/stat.h>
+#include <ufs/ufs/extattr.h>
+#include <ufs/ufs/quota.h>
#include <ufs/ufs/ufsmount.h>
#include <ufs/ufs/dinode.h>
#include <ufs/ufs/dir.h>
diff --git a/sbin/mksnap_ffs/mksnap_ffs.c b/sbin/mksnap_ffs/mksnap_ffs.c
--- a/sbin/mksnap_ffs/mksnap_ffs.c
+++ b/sbin/mksnap_ffs/mksnap_ffs.c
@@ -40,7 +40,11 @@
#include <sys/param.h>
#include <sys/mount.h>
#include <sys/stat.h>
+
+#include <ufs/ufs/extattr.h>
+#include <ufs/ufs/quota.h>
#include <ufs/ufs/ufsmount.h>
+
#include <err.h>
#include <errno.h>
#include <fcntl.h>
diff --git a/sbin/newfs/newfs.c b/sbin/newfs/newfs.c
--- a/sbin/newfs/newfs.c
+++ b/sbin/newfs/newfs.c
@@ -65,6 +65,8 @@
#include <ufs/ufs/dir.h>
#include <ufs/ufs/dinode.h>
#include <ufs/ffs/fs.h>
+#include <ufs/ufs/extattr.h>
+#include <ufs/ufs/quota.h>
#include <ufs/ufs/ufsmount.h>
#include <ctype.h>
diff --git a/sbin/tunefs/tunefs.c b/sbin/tunefs/tunefs.c
--- a/sbin/tunefs/tunefs.c
+++ b/sbin/tunefs/tunefs.c
@@ -51,6 +51,8 @@
#include <sys/disklabel.h>
#include <sys/stat.h>
+#include <ufs/ufs/extattr.h>
+#include <ufs/ufs/quota.h>
#include <ufs/ufs/ufsmount.h>
#include <ufs/ufs/dinode.h>
#include <ufs/ffs/fs.h>
diff --git a/sys/conf/options b/sys/conf/options
--- a/sys/conf/options
+++ b/sys/conf/options
@@ -570,7 +570,6 @@
# Misc debug flags. Most of these should probably be replaced with
# 'DEBUG', and then let people recompile just the interesting modules
# with 'make CC="cc -DDEBUG"'.
-CLUSTERDEBUG opt_debug_cluster.h
DEBUG_1284 opt_ppb_1284.h
LPT_DEBUG opt_lpt.h
PLIP_DEBUG opt_plip.h
diff --git a/sys/fs/devfs/devfs.h b/sys/fs/devfs/devfs.h
--- a/sys/fs/devfs/devfs.h
+++ b/sys/fs/devfs/devfs.h
@@ -124,6 +124,8 @@
MALLOC_DECLARE(M_DEVFS);
#endif
+#endif /* _KERNEL */
+
struct componentname;
TAILQ_HEAD(devfs_dlist_head, devfs_dirent);
@@ -156,6 +158,9 @@
int de_usecount;
};
+#include <sys/_lock.h>
+#include <sys/_sx.h>
+
struct devfs_mount {
u_int dm_idx;
struct mount *dm_mount;
@@ -168,6 +173,8 @@
#define DEVFS_ROOTINO 2
+#ifdef _KERNEL
+
extern unsigned devfs_rule_depth;
#define VFSTODEVFS(mp) ((struct devfs_mount *)((mp)->mnt_data))
diff --git a/sys/fs/devfs/devfs_int.h b/sys/fs/devfs/devfs_int.h
--- a/sys/fs/devfs/devfs_int.h
+++ b/sys/fs/devfs/devfs_int.h
@@ -37,8 +37,6 @@
#include <sys/queue.h>
-#ifdef _KERNEL
-
struct devfs_dirent;
struct devfs_mount;
@@ -76,6 +74,8 @@
#define cdev2priv(c) __containerof(c, struct cdev_priv, cdp_c)
+#ifdef _KERNEL
+
struct cdev *devfs_alloc(int);
int devfs_dev_exists(const char *);
void devfs_free(struct cdev *);
diff --git a/sys/fs/ext2fs/ext2_inode.c b/sys/fs/ext2fs/ext2_inode.c
--- a/sys/fs/ext2fs/ext2_inode.c
+++ b/sys/fs/ext2fs/ext2_inode.c
@@ -581,6 +581,7 @@
error = ext2_ext_truncate(vp, length, flags, cred, td);
else
error = ext2_ind_truncate(vp, length, flags, cred, td);
+ cluster_init_vn(&ip->i_clusterw);
return (error);
}
diff --git a/sys/fs/ext2fs/ext2_vfsops.c b/sys/fs/ext2fs/ext2_vfsops.c
--- a/sys/fs/ext2fs/ext2_vfsops.c
+++ b/sys/fs/ext2fs/ext2_vfsops.c
@@ -1229,6 +1229,7 @@
ip->i_e2fs = fs = ump->um_e2fs;
ip->i_ump = ump;
ip->i_number = ino;
+ cluster_init_vn(&ip->i_clusterw);
lockmgr(vp->v_vnlock, LK_EXCLUSIVE, NULL);
error = insmntque(vp, mp);
diff --git a/sys/fs/ext2fs/ext2_vnops.c b/sys/fs/ext2fs/ext2_vnops.c
--- a/sys/fs/ext2fs/ext2_vnops.c
+++ b/sys/fs/ext2fs/ext2_vnops.c
@@ -2313,7 +2313,8 @@
} else if (xfersize + blkoffset == fs->e2fs_fsize) {
if ((vp->v_mount->mnt_flag & MNT_NOCLUSTERW) == 0) {
bp->b_flags |= B_CLUSTEROK;
- cluster_write(vp, bp, ip->i_size, seqcount, 0);
+ cluster_write(vp, &ip->i_clusterw, bp,
+ ip->i_size, seqcount, 0);
} else {
bawrite(bp);
}
diff --git a/sys/fs/ext2fs/inode.h b/sys/fs/ext2fs/inode.h
--- a/sys/fs/ext2fs/inode.h
+++ b/sys/fs/ext2fs/inode.h
@@ -44,6 +44,7 @@
#include <sys/lock.h>
#include <sys/mutex.h>
#include <sys/queue.h>
+#include <sys/buf.h>
#include <fs/ext2fs/ext2_extents.h>
@@ -118,6 +119,8 @@
};
struct ext4_extent_cache i_ext_cache; /* cache for ext4 extent */
+
+ struct vn_clusterw i_clusterw; /* Buffer clustering information */
};
/*
diff --git a/sys/fs/fuse/fuse_io.c b/sys/fs/fuse/fuse_io.c
--- a/sys/fs/fuse/fuse_io.c
+++ b/sys/fs/fuse/fuse_io.c
@@ -870,7 +870,8 @@
bp->b_flags |= B_CLUSTEROK;
SDT_PROBE2(fusefs, , io, write_biobackend_issue,
4, bp);
- cluster_write(vp, bp, filesize, seqcount, 0);
+ cluster_write(vp, &fvdat->clusterw, bp,
+ filesize, seqcount, 0);
} else {
SDT_PROBE2(fusefs, , io, write_biobackend_issue,
5, bp);
diff --git a/sys/fs/fuse/fuse_node.h b/sys/fs/fuse/fuse_node.h
--- a/sys/fs/fuse/fuse_node.h
+++ b/sys/fs/fuse/fuse_node.h
@@ -68,6 +68,7 @@
#include <sys/fnv_hash.h>
#include <sys/types.h>
#include <sys/mutex.h>
+#include <sys/buf.h>
#include "fuse_file.h"
@@ -118,6 +119,7 @@
struct vattr cached_attrs;
uint64_t nlookup;
enum vtype vtype;
+ struct vn_clusterw clusterw;
};
/*
diff --git a/sys/fs/fuse/fuse_node.c b/sys/fs/fuse/fuse_node.c
--- a/sys/fs/fuse/fuse_node.c
+++ b/sys/fs/fuse/fuse_node.c
@@ -164,6 +164,7 @@
}
vp->v_type = vtyp;
vp->v_data = fvdat;
+ cluster_init_vn(&fvdat->clusterw);
counter_u64_add(fuse_node_count, 1);
}
diff --git a/sys/fs/msdosfs/denode.h b/sys/fs/msdosfs/denode.h
--- a/sys/fs/msdosfs/denode.h
+++ b/sys/fs/msdosfs/denode.h
@@ -52,6 +52,8 @@
#ifndef _FS_MSDOSFS_DENODE_H_
#define _FS_MSDOSFS_DENODE_H_
+#include <sys/buf.h>
+
/*
* This is the pc filesystem specific portion of the vnode structure.
*
@@ -142,6 +144,7 @@
*/
struct denode {
struct vnode *de_vnode; /* addr of vnode we are part of */
+ struct vn_clusterw de_clusterw; /* buffer clustering information */
u_long de_flag; /* flag bits */
u_long de_dirclust; /* cluster of the directory file containing this entry */
u_long de_diroffset; /* offset of this entry in the directory cluster */
@@ -271,6 +274,7 @@
/*
* Internal service routine prototypes.
*/
+struct componentname;
int deget(struct msdosfsmount *, u_long, u_long, struct denode **);
int uniqdosname(struct denode *, struct componentname *, u_char *);
diff --git a/sys/fs/msdosfs/msdosfs_denode.c b/sys/fs/msdosfs/msdosfs_denode.c
--- a/sys/fs/msdosfs/msdosfs_denode.c
+++ b/sys/fs/msdosfs/msdosfs_denode.c
@@ -162,6 +162,7 @@
ldep->de_dirclust = dirclust;
ldep->de_diroffset = diroffset;
ldep->de_inode = inode;
+ cluster_init_vn(&ldep->de_clusterw);
lockmgr(nvp->v_vnlock, LK_EXCLUSIVE, NULL);
fc_purge(ldep, 0); /* init the FAT cache for this denode */
error = insmntque(nvp, mntp);
diff --git a/sys/fs/msdosfs/msdosfs_vnops.c b/sys/fs/msdosfs/msdosfs_vnops.c
--- a/sys/fs/msdosfs/msdosfs_vnops.c
+++ b/sys/fs/msdosfs/msdosfs_vnops.c
@@ -796,8 +796,8 @@
bawrite(bp);
else if (n + croffset == pmp->pm_bpcluster) {
if ((vp->v_mount->mnt_flag & MNT_NOCLUSTERW) == 0)
- cluster_write(vp, bp, dep->de_FileSize,
- seqcount, 0);
+ cluster_write(vp, &dep->de_clusterw, bp,
+ dep->de_FileSize, seqcount, 0);
else
bawrite(bp);
} else
diff --git a/sys/kern/vfs_cluster.c b/sys/kern/vfs_cluster.c
--- a/sys/kern/vfs_cluster.c
+++ b/sys/kern/vfs_cluster.c
@@ -36,8 +36,6 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
-#include "opt_debug_cluster.h"
-
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
@@ -56,18 +54,12 @@
#include <vm/vm_page.h>
#include <sys/sysctl.h>
-#if defined(CLUSTERDEBUG)
-static int rcluster= 0;
-SYSCTL_INT(_debug, OID_AUTO, rcluster, CTLFLAG_RW, &rcluster, 0,
- "Debug VFS clustering code");
-#endif
-
static MALLOC_DEFINE(M_SEGMENT, "cl_savebuf", "cluster_save buffer");
static uma_zone_t cluster_pbuf_zone;
static void cluster_init(void *);
static struct cluster_save *cluster_collectbufs(struct vnode *vp,
- struct buf *last_bp, int gbflags);
+ struct vn_clusterw *vnc, struct buf *last_bp, int gbflags);
static struct buf *cluster_rbuild(struct vnode *vp, u_quad_t filesize,
daddr_t lbn, daddr_t blkno, long size, int run, int gbflags,
struct buf *fbp);
@@ -651,8 +643,8 @@
* 4. end of a cluster - asynchronously write cluster
*/
void
-cluster_write(struct vnode *vp, struct buf *bp, u_quad_t filesize, int seqcount,
- int gbflags)
+cluster_write(struct vnode *vp, struct vn_clusterw *vnc, struct buf *bp,
+ u_quad_t filesize, int seqcount, int gbflags)
{
daddr_t lbn;
int maxclen, cursize;
@@ -674,12 +666,12 @@
/* Initialize vnode to beginning of file. */
if (lbn == 0)
- vp->v_lasta = vp->v_clen = vp->v_cstart = vp->v_lastw = 0;
+ vnc->v_lasta = vnc->v_clen = vnc->v_cstart = vnc->v_lastw = 0;
- if (vp->v_clen == 0 || lbn != vp->v_lastw + 1 ||
- (bp->b_blkno != vp->v_lasta + btodb(lblocksize))) {
+ if (vnc->v_clen == 0 || lbn != vnc->v_lastw + 1 ||
+ (bp->b_blkno != vnc->v_lasta + btodb(lblocksize))) {
maxclen = vp->v_mount->mnt_iosize_max / lblocksize - 1;
- if (vp->v_clen != 0) {
+ if (vnc->v_clen != 0) {
/*
* Next block is not sequential.
*
@@ -696,18 +688,19 @@
* later on in the buf_daemon or update daemon
* flush.
*/
- cursize = vp->v_lastw - vp->v_cstart + 1;
- if (((u_quad_t) bp->b_offset + lblocksize) != filesize ||
- lbn != vp->v_lastw + 1 || vp->v_clen <= cursize) {
+ cursize = vnc->v_lastw - vnc->v_cstart + 1;
+ if ((u_quad_t)bp->b_offset + lblocksize != filesize ||
+ lbn != vnc->v_lastw + 1 || vnc->v_clen <= cursize) {
if (!async && seqcount > 0) {
cluster_wbuild_wb(vp, lblocksize,
- vp->v_cstart, cursize, gbflags);
+ vnc->v_cstart, cursize, gbflags);
}
} else {
struct buf **bpp, **endbp;
struct cluster_save *buflist;
- buflist = cluster_collectbufs(vp, bp, gbflags);
+ buflist = cluster_collectbufs(vp, vnc, bp,
+ gbflags);
if (buflist == NULL) {
/*
* Cluster build failed so just write
@@ -733,7 +726,7 @@
free(buflist, M_SEGMENT);
if (seqcount > 1) {
cluster_wbuild_wb(vp,
- lblocksize, vp->v_cstart,
+ lblocksize, vnc->v_cstart,
cursize, gbflags);
}
} else {
@@ -744,8 +737,8 @@
bpp <= endbp; bpp++)
bdwrite(*bpp);
free(buflist, M_SEGMENT);
- vp->v_lastw = lbn;
- vp->v_lasta = bp->b_blkno;
+ vnc->v_lastw = lbn;
+ vnc->v_lasta = bp->b_blkno;
return;
}
}
@@ -755,27 +748,27 @@
* cluster as large as possible, otherwise find size of
* existing cluster.
*/
- if ((vp->v_type == VREG) &&
- ((u_quad_t) bp->b_offset + lblocksize) != filesize &&
- (bp->b_blkno == bp->b_lblkno) &&
- (VOP_BMAP(vp, lbn, NULL, &bp->b_blkno, &maxclen, NULL) ||
- bp->b_blkno == -1)) {
+ if (vp->v_type == VREG &&
+ (u_quad_t) bp->b_offset + lblocksize != filesize &&
+ bp->b_blkno == bp->b_lblkno &&
+ (VOP_BMAP(vp, lbn, NULL, &bp->b_blkno, &maxclen,
+ NULL) != 0 || bp->b_blkno == -1)) {
bawrite(bp);
- vp->v_clen = 0;
- vp->v_lasta = bp->b_blkno;
- vp->v_cstart = lbn + 1;
- vp->v_lastw = lbn;
+ vnc->v_clen = 0;
+ vnc->v_lasta = bp->b_blkno;
+ vnc->v_cstart = lbn + 1;
+ vnc->v_lastw = lbn;
return;
}
- vp->v_clen = maxclen;
+ vnc->v_clen = maxclen;
if (!async && maxclen == 0) { /* I/O not contiguous */
- vp->v_cstart = lbn + 1;
+ vnc->v_cstart = lbn + 1;
bawrite(bp);
} else { /* Wait for rest of cluster */
- vp->v_cstart = lbn;
+ vnc->v_cstart = lbn;
bdwrite(bp);
}
- } else if (lbn == vp->v_cstart + vp->v_clen) {
+ } else if (lbn == vnc->v_cstart + vnc->v_clen) {
/*
* At end of cluster, write it out if seqcount tells us we
* are operating sequentially, otherwise let the buf or
@@ -783,11 +776,11 @@
*/
bdwrite(bp);
if (seqcount > 1) {
- cluster_wbuild_wb(vp, lblocksize, vp->v_cstart,
- vp->v_clen + 1, gbflags);
+ cluster_wbuild_wb(vp, lblocksize, vnc->v_cstart,
+ vnc->v_clen + 1, gbflags);
}
- vp->v_clen = 0;
- vp->v_cstart = lbn + 1;
+ vnc->v_clen = 0;
+ vnc->v_cstart = lbn + 1;
} else if (vm_page_count_severe()) {
/*
* We are low on memory, get it going NOW
@@ -799,8 +792,8 @@
*/
bdwrite(bp);
}
- vp->v_lastw = lbn;
- vp->v_lasta = bp->b_blkno;
+ vnc->v_lastw = lbn;
+ vnc->v_lasta = bp->b_blkno;
}
/*
@@ -1047,19 +1040,20 @@
* Plus add one additional buffer.
*/
static struct cluster_save *
-cluster_collectbufs(struct vnode *vp, struct buf *last_bp, int gbflags)
+cluster_collectbufs(struct vnode *vp, struct vn_clusterw *vnc,
+ struct buf *last_bp, int gbflags)
{
struct cluster_save *buflist;
struct buf *bp;
daddr_t lbn;
int i, j, len, error;
- len = vp->v_lastw - vp->v_cstart + 1;
+ len = vnc->v_lastw - vnc->v_cstart + 1;
buflist = malloc(sizeof(struct buf *) * (len + 1) + sizeof(*buflist),
M_SEGMENT, M_WAITOK);
buflist->bs_nchildren = 0;
buflist->bs_children = (struct buf **) (buflist + 1);
- for (lbn = vp->v_cstart, i = 0; i < len; lbn++, i++) {
+ for (lbn = vnc->v_cstart, i = 0; i < len; lbn++, i++) {
error = bread_gb(vp, lbn, last_bp->b_bcount, NOCRED,
gbflags, &bp);
if (error != 0) {
@@ -1083,3 +1077,12 @@
buflist->bs_nchildren = i + 1;
return (buflist);
}
+
+void
+cluster_init_vn(struct vn_clusterw *vnc)
+{
+ vnc->v_lasta = 0;
+ vnc->v_clen = 0;
+ vnc->v_cstart = 0;
+ vnc->v_lastw = 0;
+}
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -1823,7 +1823,6 @@
vp->v_unpcb = NULL;
vp->v_rdev = NULL;
vp->v_fifoinfo = NULL;
- vp->v_lasta = vp->v_clen = vp->v_cstart = vp->v_lastw = 0;
vp->v_iflag = 0;
vp->v_vflag = 0;
bo->bo_flag = 0;
diff --git a/sys/sys/buf.h b/sys/sys/buf.h
--- a/sys/sys/buf.h
+++ b/sys/sys/buf.h
@@ -132,7 +132,8 @@
union {
TAILQ_ENTRY(buf) b_freelist; /* (Q) */
struct {
- void (*b_pgiodone)(void *, vm_page_t *, int, int);
+ void (*b_pgiodone)(void *, struct vm_page *,
+ int, int);
int b_pgbefore;
int b_pgafter;
};
@@ -406,6 +407,16 @@
struct buf **bs_children; /* List of associated buffers. */
};
+/*
+ * Vnode clustering tracker
+ */
+struct vn_clusterw {
+ daddr_t v_cstart; /* v start block of cluster */
+ daddr_t v_lasta; /* v last allocation */
+ daddr_t v_lastw; /* v last write */
+ int v_clen; /* v length of cur. cluster */
+};
+
#ifdef _KERNEL
static __inline int
@@ -570,10 +581,14 @@
extern uma_zone_t pbuf_zone;
uma_zone_t pbuf_zsecond_create(const char *name, int max);
+struct vn_clusterw;
+
+void cluster_init_vn(struct vn_clusterw *vnc);
int cluster_read(struct vnode *, u_quad_t, daddr_t, long,
struct ucred *, long, int, int, struct buf **);
int cluster_wbuild(struct vnode *, long, daddr_t, int, int);
-void cluster_write(struct vnode *, struct buf *, u_quad_t, int, int);
+void cluster_write(struct vnode *, struct vn_clusterw *, struct buf *,
+ u_quad_t, int, int);
void vfs_bio_brelse(struct buf *bp, int ioflags);
void vfs_bio_bzero_buf(struct buf *bp, int base, int size);
void vfs_bio_clrbuf(struct buf *);
diff --git a/sys/sys/mount.h b/sys/sys/mount.h
--- a/sys/sys/mount.h
+++ b/sys/sys/mount.h
@@ -163,7 +163,9 @@
*/
long f_spare[2]; /* unused spare */
};
+#endif /* _KERNEL */
+#if defined(_WANT_MOUNT) || defined(_KERNEL)
TAILQ_HEAD(vnodelst, vnode);
/* Mount options list */
@@ -243,7 +245,9 @@
TAILQ_ENTRY(mount) mnt_upper_link; /* (m) we in the all uppers */
TAILQ_HEAD(, mount) mnt_uppers; /* (m) upper mounts over us*/
};
+#endif /* _WANT_MOUNT || _KERNEL */
+#ifdef _KERNEL
/*
* Definitions for MNT_VNODE_FOREACH_ALL.
*/
diff --git a/sys/sys/pipe.h b/sys/sys/pipe.h
--- a/sys/sys/pipe.h
+++ b/sys/sys/pipe.h
@@ -24,10 +24,6 @@
#ifndef _SYS_PIPE_H_
#define _SYS_PIPE_H_
-#ifndef _KERNEL
-#error "no user-serviceable parts inside"
-#endif
-
/*
* Pipe buffer size, keep moderate in value, pipes take kva space.
*/
@@ -53,11 +49,13 @@
#define PIPENPAGES (BIG_PIPE_SIZE / PAGE_SIZE + 1)
+#ifdef _KERNEL
/*
* See sys_pipe.c for info on what these limits mean.
*/
extern long maxpipekva;
extern struct fileops pipeops;
+#endif
/*
* Pipe buffer information.
@@ -147,7 +145,9 @@
#define PIPE_UNLOCK(pipe) mtx_unlock(PIPE_MTX(pipe))
#define PIPE_LOCK_ASSERT(pipe, type) mtx_assert(PIPE_MTX(pipe), (type))
+#ifdef _KERNEL
void pipe_dtor(struct pipe *dpipe);
int pipe_named_ctor(struct pipe **ppipe, struct thread *td);
void pipeselwakeup(struct pipe *cpipe);
+#endif
#endif /* !_SYS_PIPE_H_ */
diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h
--- a/sys/sys/vnode.h
+++ b/sys/sys/vnode.h
@@ -163,14 +163,6 @@
struct lockf *v_lockf; /* Byte-level advisory lock list */
struct rangelock v_rl; /* Byte-range lock */
- /*
- * clustering stuff
- */
- daddr_t v_cstart; /* v start block of cluster */
- daddr_t v_lasta; /* v last allocation */
- daddr_t v_lastw; /* v last write */
- int v_clen; /* v length of cur. cluster */
-
u_int v_holdcnt; /* I prevents recycling. */
u_int v_usecount; /* I ref count of users */
u_short v_iflag; /* i vnode flags (see below) */
diff --git a/sys/ufs/ffs/ffs_inode.c b/sys/ufs/ffs/ffs_inode.c
--- a/sys/ufs/ffs/ffs_inode.c
+++ b/sys/ufs/ffs/ffs_inode.c
@@ -354,7 +354,7 @@
panic("ffs_truncate: read-only filesystem");
if (IS_SNAPSHOT(ip))
ffs_snapremove(vp);
- vp->v_lasta = vp->v_clen = vp->v_cstart = vp->v_lastw = 0;
+ cluster_init_vn(&ip->i_clusterw);
osize = ip->i_size;
/*
* Lengthen the size of the file. We must ensure that the
diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c
--- a/sys/ufs/ffs/ffs_vfsops.c
+++ b/sys/ufs/ffs/ffs_vfsops.c
@@ -2011,6 +2011,7 @@
ip->i_nextclustercg = -1;
ip->i_flag = fs->fs_magic == FS_UFS1_MAGIC ? 0 : IN_UFS2;
ip->i_mode = 0; /* ensure error cases below throw away vnode */
+ cluster_init_vn(&ip->i_clusterw);
#ifdef DIAGNOSTIC
ufs_init_trackers(ip);
#endif
diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c
--- a/sys/ufs/ffs/ffs_vnops.c
+++ b/sys/ufs/ffs/ffs_vnops.c
@@ -976,8 +976,8 @@
} else if (xfersize + blkoffset == fs->fs_bsize) {
if ((vp->v_mount->mnt_flag & MNT_NOCLUSTERW) == 0) {
bp->b_flags |= B_CLUSTEROK;
- cluster_write(vp, bp, ip->i_size, seqcount,
- GB_UNMAPPED);
+ cluster_write(vp, &ip->i_clusterw, bp,
+ ip->i_size, seqcount, GB_UNMAPPED);
} else {
bawrite(bp);
}
diff --git a/sys/ufs/ufs/extattr.h b/sys/ufs/ufs/extattr.h
--- a/sys/ufs/ufs/extattr.h
+++ b/sys/ufs/ufs/extattr.h
@@ -104,10 +104,6 @@
#define EXTATTR_BASE_LENGTH(eap) \
roundup2((sizeof(struct extattr) - 1 + (eap)->ea_namelength), 8)
-#ifdef _KERNEL
-
-#include <sys/_sx.h>
-
struct vnode;
LIST_HEAD(ufs_extattr_list_head, ufs_extattr_list_entry);
struct ufs_extattr_list_entry {
@@ -118,6 +114,9 @@
struct vnode *uele_backing_vnode;
};
+#include <sys/_lock.h>
+#include <sys/_sx.h>
+
struct ucred;
struct ufs_extattr_per_mount {
struct sx uepm_lock;
@@ -126,6 +125,8 @@
int uepm_flags;
};
+#ifdef _KERNEL
+
struct vop_getextattr_args;
struct vop_deleteextattr_args;
struct vop_setextattr_args;
diff --git a/sys/ufs/ufs/inode.h b/sys/ufs/ufs/inode.h
--- a/sys/ufs/ufs/inode.h
+++ b/sys/ufs/ufs/inode.h
@@ -47,6 +47,7 @@
#ifdef DIAGNOSTIC
#include <sys/stack.h>
#endif
+#include <sys/buf.h>
/*
* This must agree with the definition in <ufs/ufs/dir.h>.
@@ -115,6 +116,8 @@
int i_nextclustercg; /* last cg searched for cluster */
+ struct vn_clusterw i_clusterw; /* Buffer clustering information */
+
/*
* Data for extended attribute modification.
*/
@@ -207,14 +210,14 @@
#define i_din1 dinode_u.din1
#define i_din2 dinode_u.din2
-#ifdef _KERNEL
-
#define ITOUMP(ip) ((ip)->i_ump)
#define ITODEV(ip) (ITOUMP(ip)->um_dev)
#define ITODEVVP(ip) (ITOUMP(ip)->um_devvp)
#define ITOFS(ip) (ITOUMP(ip)->um_fs)
#define ITOVFS(ip) ((ip)->i_vnode->v_mount)
+#ifdef _KERNEL
+
static inline _Bool
I_IS_UFS1(const struct inode *ip)
{
@@ -228,6 +231,7 @@
return ((ip->i_flag & IN_UFS2) != 0);
}
+#endif /* _KERNEL */
/*
* The DIP macro is used to access fields in the dinode that are
@@ -275,6 +279,7 @@
uint32_t ufid_gen; /* Generation number. */
};
+#ifdef _KERNEL
#ifdef DIAGNOSTIC
void ufs_init_trackers(struct inode *ip);
void ufs_unlock_tracker(struct inode *ip);
diff --git a/sys/ufs/ufs/ufsmount.h b/sys/ufs/ufs/ufsmount.h
--- a/sys/ufs/ufs/ufsmount.h
+++ b/sys/ufs/ufs/ufsmount.h
@@ -43,14 +43,14 @@
struct oexport_args export; /* network export information */
};
-#ifdef _KERNEL
-
#include <sys/_task.h>
+#ifdef _KERNEL
#ifdef MALLOC_DECLARE
MALLOC_DECLARE(M_UFSMNT);
MALLOC_DECLARE(M_TRIM);
#endif
+#endif /* _KERNEL */
struct buf;
struct inode;
@@ -72,6 +72,9 @@
fsid_t fsid;
};
+#include <sys/_lock.h>
+#include <sys/_mutex.h>
+
/*
* This structure describes the UFS specific mount structure data.
* The function operators are used to support different versions of
@@ -190,6 +193,5 @@
#define MNINDIR(ump) ((ump)->um_nindir)
#define blkptrtodb(ump, b) ((b) << (ump)->um_bptrtodb)
#define is_sequential(ump, a, b) ((b) == (a) + ump->um_seqinc)
-#endif /* _KERNEL */
#endif
diff --git a/usr.sbin/makefs/ffs.c b/usr.sbin/makefs/ffs.c
--- a/usr.sbin/makefs/ffs.c
+++ b/usr.sbin/makefs/ffs.c
@@ -90,9 +90,6 @@
#include <unistd.h>
#include <util.h>
-#include "makefs.h"
-#include "ffs.h"
-
#if HAVE_STRUCT_STATVFS_F_IOSIZE && HAVE_FSTATVFS
#include <sys/statvfs.h>
#endif
@@ -101,12 +98,15 @@
#include <ufs/ufs/dir.h>
#include <ufs/ffs/fs.h>
-
#include "ffs/ufs_bswap.h"
#include "ffs/ufs_inode.h"
#include "ffs/newfs_extern.h"
#include "ffs/ffs_extern.h"
+#undef clrbuf
+#include "makefs.h"
+#include "ffs.h"
+
#undef DIP
#define DIP(dp, field) \
((ffs_opts->version == 1) ? \
@@ -896,9 +896,9 @@
off_t bufleft, chunk, offset;
ssize_t nread;
struct inode in;
- struct buf * bp;
+ struct m_buf * bp;
ffs_opt_t *ffs_opts = fsopts->fs_specific;
- struct vnode vp = { fsopts, NULL };
+ struct m_vnode vp = { fsopts, NULL };
assert (din != NULL);
assert (buf != NULL);
@@ -911,7 +911,7 @@
p = NULL;
in.i_fs = (struct fs *)fsopts->superblock;
- in.i_devvp = &vp;
+ in.i_devvp = (void *)&vp;
if (debug & DEBUG_FS_WRITE_FILE) {
printf(
diff --git a/usr.sbin/makefs/ffs/buf.h b/usr.sbin/makefs/ffs/buf.h
--- a/usr.sbin/makefs/ffs/buf.h
+++ b/usr.sbin/makefs/ffs/buf.h
@@ -49,12 +49,12 @@
struct makefs_fsinfo;
struct ucred;
-struct vnode {
+struct m_vnode {
struct makefs_fsinfo *fs;
void *v_data;
};
-struct buf {
+struct m_buf {
char * b_data;
long b_bufsize;
long b_bcount;
@@ -62,15 +62,15 @@
daddr_t b_lblkno;
struct makefs_fsinfo *b_fs;
- TAILQ_ENTRY(buf) b_tailq;
+ TAILQ_ENTRY(m_buf) b_tailq;
};
void bcleanup(void);
-int bread(struct vnode *, daddr_t, int, struct ucred *,
- struct buf **);
-void brelse(struct buf *);
-int bwrite(struct buf *);
-struct buf * getblk(struct vnode *, daddr_t, int, int, int, int);
+int bread(struct m_vnode *, daddr_t, int, struct ucred *,
+ struct m_buf **);
+void brelse(struct m_buf *);
+int bwrite(struct m_buf *);
+struct m_buf * getblk(struct m_vnode *, daddr_t, int, int, int, int);
#define bdwrite(bp) bwrite(bp)
#define clrbuf(bp) memset((bp)->b_data, 0, (u_int)(bp)->b_bcount)
diff --git a/usr.sbin/makefs/ffs/buf.c b/usr.sbin/makefs/ffs/buf.c
--- a/usr.sbin/makefs/ffs/buf.c
+++ b/usr.sbin/makefs/ffs/buf.c
@@ -54,11 +54,11 @@
#include "makefs.h"
#include "buf.h"
-static TAILQ_HEAD(buftailhead,buf) buftail;
+static TAILQ_HEAD(buftailhead, m_buf) buftail;
int
-bread(struct vnode *vp, daddr_t blkno, int size, struct ucred *u1 __unused,
- struct buf **bpp)
+bread(struct m_vnode *vp, daddr_t blkno, int size, struct ucred *u1 __unused,
+ struct m_buf **bpp)
{
off_t offset;
ssize_t rv;
@@ -93,7 +93,7 @@
}
void
-brelse(struct buf *bp)
+brelse(struct m_buf *bp)
{
assert (bp != NULL);
@@ -123,7 +123,7 @@
}
int
-bwrite(struct buf *bp)
+bwrite(struct m_buf *bp)
{
off_t offset;
ssize_t rv;
@@ -152,7 +152,7 @@
void
bcleanup(void)
{
- struct buf *bp;
+ struct m_buf *bp;
/*
* XXX this really shouldn't be necessary, but i'm curious to
@@ -172,12 +172,12 @@
printf("bcleanup: done\n");
}
-struct buf *
-getblk(struct vnode *vp, daddr_t blkno, int size, int u1 __unused,
+struct m_buf *
+getblk(struct m_vnode *vp, daddr_t blkno, int size, int u1 __unused,
int u2 __unused, int u3 __unused)
{
static int buftailinitted;
- struct buf *bp;
+ struct m_buf *bp;
void *n;
if (debug & DEBUG_BUF_GETBLK)
diff --git a/usr.sbin/makefs/ffs/ffs_alloc.c b/usr.sbin/makefs/ffs/ffs_alloc.c
--- a/usr.sbin/makefs/ffs/ffs_alloc.c
+++ b/usr.sbin/makefs/ffs/ffs_alloc.c
@@ -65,7 +65,7 @@
static int scanc(u_int, const u_char *, const u_char *, int);
static daddr_t ffs_alloccg(struct inode *, int, daddr_t, int);
-static daddr_t ffs_alloccgblk(struct inode *, struct buf *, daddr_t);
+static daddr_t ffs_alloccgblk(struct inode *, struct m_buf *, daddr_t);
static daddr_t ffs_hashalloc(struct inode *, u_int, daddr_t, int,
daddr_t (*)(struct inode *, int, daddr_t, int));
static int32_t ffs_mapsearch(struct fs *, struct cg *, daddr_t, int);
@@ -294,7 +294,7 @@
ffs_alloccg(struct inode *ip, int cg, daddr_t bpref, int size)
{
struct cg *cgp;
- struct buf *bp;
+ struct m_buf *bp;
daddr_t bno, blkno;
int error, frags, allocsiz, i;
struct fs *fs = ip->i_fs;
@@ -302,8 +302,8 @@
if (fs->fs_cs(fs, cg).cs_nbfree == 0 && size == fs->fs_bsize)
return (0);
- error = bread(ip->i_devvp, fsbtodb(fs, cgtod(fs, cg)), (int)fs->fs_cgsize,
- NULL, &bp);
+ error = bread((void *)ip->i_devvp, fsbtodb(fs, cgtod(fs, cg)),
+ (int)fs->fs_cgsize, NULL, &bp);
if (error) {
brelse(bp);
return (0);
@@ -377,7 +377,7 @@
* blocks may be fragmented by the routine that allocates them.
*/
static daddr_t
-ffs_alloccgblk(struct inode *ip, struct buf *bp, daddr_t bpref)
+ffs_alloccgblk(struct inode *ip, struct m_buf *bp, daddr_t bpref)
{
struct cg *cgp;
daddr_t blkno;
@@ -429,7 +429,7 @@
ffs_blkfree(struct inode *ip, daddr_t bno, long size)
{
struct cg *cgp;
- struct buf *bp;
+ struct m_buf *bp;
int32_t fragno, cgbno;
int i, error, cg, blk, frags, bbase;
struct fs *fs = ip->i_fs;
@@ -446,8 +446,8 @@
(uintmax_t)ip->i_number);
return;
}
- error = bread(ip->i_devvp, fsbtodb(fs, cgtod(fs, cg)), (int)fs->fs_cgsize,
- NULL, &bp);
+ error = bread((void *)ip->i_devvp, fsbtodb(fs, cgtod(fs, cg)),
+ (int)fs->fs_cgsize, NULL, &bp);
if (error) {
brelse(bp);
return;
diff --git a/usr.sbin/makefs/ffs/ffs_balloc.c b/usr.sbin/makefs/ffs/ffs_balloc.c
--- a/usr.sbin/makefs/ffs/ffs_balloc.c
+++ b/usr.sbin/makefs/ffs/ffs_balloc.c
@@ -56,8 +56,8 @@
#include "ffs/ufs_inode.h"
#include "ffs/ffs_extern.h"
-static int ffs_balloc_ufs1(struct inode *, off_t, int, struct buf **);
-static int ffs_balloc_ufs2(struct inode *, off_t, int, struct buf **);
+static int ffs_balloc_ufs1(struct inode *, off_t, int, struct m_buf **);
+static int ffs_balloc_ufs2(struct inode *, off_t, int, struct m_buf **);
/*
* Balloc defines the structure of file system storage
@@ -68,7 +68,7 @@
*/
int
-ffs_balloc(struct inode *ip, off_t offset, int bufsize, struct buf **bpp)
+ffs_balloc(struct inode *ip, off_t offset, int bufsize, struct m_buf **bpp)
{
if (ip->i_fs->fs_magic == FS_UFS2_MAGIC)
return ffs_balloc_ufs2(ip, offset, bufsize, bpp);
@@ -77,12 +77,13 @@
}
static int
-ffs_balloc_ufs1(struct inode *ip, off_t offset, int bufsize, struct buf **bpp)
+ffs_balloc_ufs1(struct inode *ip, off_t offset, int bufsize,
+ struct m_buf **bpp)
{
daddr_t lbn, lastlbn;
int size;
int32_t nb;
- struct buf *bp, *nbp;
+ struct m_buf *bp, *nbp;
struct fs *fs = ip->i_fs;
struct indir indirs[UFS_NIADDR + 2];
daddr_t newb, pref;
@@ -135,8 +136,8 @@
*/
if (bpp != NULL) {
- error = bread(ip->i_devvp, lbn, fs->fs_bsize,
- NULL, bpp);
+ error = bread((void *)ip->i_devvp, lbn,
+ fs->fs_bsize, NULL, bpp);
if (error) {
brelse(*bpp);
return (error);
@@ -161,8 +162,8 @@
*/
if (bpp != NULL) {
- error = bread(ip->i_devvp, lbn, osize,
- NULL, bpp);
+ error = bread((void *)ip->i_devvp, lbn,
+ osize, NULL, bpp);
if (error) {
brelse(*bpp);
return (error);
@@ -191,7 +192,8 @@
if (error)
return (error);
if (bpp != NULL) {
- bp = getblk(ip->i_devvp, lbn, nsize, 0, 0, 0);
+ bp = getblk((void *)ip->i_devvp, lbn, nsize,
+ 0, 0, 0);
bp->b_blkno = fsbtodb(fs, newb);
clrbuf(bp);
*bpp = bp;
@@ -229,7 +231,8 @@
return error;
nb = newb;
*allocblk++ = nb;
- bp = getblk(ip->i_devvp, indirs[1].in_lbn, fs->fs_bsize, 0, 0, 0);
+ bp = getblk((void *)ip->i_devvp, indirs[1].in_lbn,
+ fs->fs_bsize, 0, 0, 0);
bp->b_blkno = fsbtodb(fs, nb);
clrbuf(bp);
/*
@@ -247,8 +250,8 @@
*/
for (i = 1;;) {
- error = bread(ip->i_devvp, indirs[i].in_lbn, fs->fs_bsize,
- NULL, &bp);
+ error = bread((void *)ip->i_devvp, indirs[i].in_lbn,
+ fs->fs_bsize, NULL, &bp);
if (error) {
brelse(bp);
return error;
@@ -271,7 +274,8 @@
}
nb = newb;
*allocblk++ = nb;
- nbp = getblk(ip->i_devvp, indirs[i].in_lbn, fs->fs_bsize, 0, 0, 0);
+ nbp = getblk((void *)ip->i_devvp, indirs[i].in_lbn,
+ fs->fs_bsize, 0, 0, 0);
nbp->b_blkno = fsbtodb(fs, nb);
clrbuf(nbp);
/*
@@ -302,7 +306,8 @@
nb = newb;
*allocblk++ = nb;
if (bpp != NULL) {
- nbp = getblk(ip->i_devvp, lbn, fs->fs_bsize, 0, 0, 0);
+ nbp = getblk((void *)ip->i_devvp, lbn, fs->fs_bsize,
+ 0, 0, 0);
nbp->b_blkno = fsbtodb(fs, nb);
clrbuf(nbp);
*bpp = nbp;
@@ -318,7 +323,8 @@
}
brelse(bp);
if (bpp != NULL) {
- error = bread(ip->i_devvp, lbn, (int)fs->fs_bsize, NULL, &nbp);
+ error = bread((void *)ip->i_devvp, lbn, (int)fs->fs_bsize,
+ NULL, &nbp);
if (error) {
brelse(nbp);
return error;
@@ -329,11 +335,12 @@
}
static int
-ffs_balloc_ufs2(struct inode *ip, off_t offset, int bufsize, struct buf **bpp)
+ffs_balloc_ufs2(struct inode *ip, off_t offset, int bufsize,
+ struct m_buf **bpp)
{
daddr_t lbn, lastlbn;
int size;
- struct buf *bp, *nbp;
+ struct m_buf *bp, *nbp;
struct fs *fs = ip->i_fs;
struct indir indirs[UFS_NIADDR + 2];
daddr_t newb, pref, nb;
@@ -386,8 +393,8 @@
*/
if (bpp != NULL) {
- error = bread(ip->i_devvp, lbn, fs->fs_bsize,
- NULL, bpp);
+ error = bread((void *)ip->i_devvp, lbn,
+ fs->fs_bsize, NULL, bpp);
if (error) {
brelse(*bpp);
return (error);
@@ -412,8 +419,8 @@
*/
if (bpp != NULL) {
- error = bread(ip->i_devvp, lbn, osize,
- NULL, bpp);
+ error = bread((void *)ip->i_devvp, lbn,
+ osize, NULL, bpp);
if (error) {
brelse(*bpp);
return (error);
@@ -442,7 +449,8 @@
if (error)
return (error);
if (bpp != NULL) {
- bp = getblk(ip->i_devvp, lbn, nsize, 0, 0, 0);
+ bp = getblk((void *)ip->i_devvp, lbn, nsize,
+ 0, 0, 0);
bp->b_blkno = fsbtodb(fs, newb);
clrbuf(bp);
*bpp = bp;
@@ -480,7 +488,8 @@
return error;
nb = newb;
*allocblk++ = nb;
- bp = getblk(ip->i_devvp, indirs[1].in_lbn, fs->fs_bsize, 0, 0, 0);
+ bp = getblk((void *)ip->i_devvp, indirs[1].in_lbn,
+ fs->fs_bsize, 0, 0, 0);
bp->b_blkno = fsbtodb(fs, nb);
clrbuf(bp);
/*
@@ -498,8 +507,8 @@
*/
for (i = 1;;) {
- error = bread(ip->i_devvp, indirs[i].in_lbn, fs->fs_bsize,
- NULL, &bp);
+ error = bread((void *)ip->i_devvp, indirs[i].in_lbn,
+ fs->fs_bsize, NULL, &bp);
if (error) {
brelse(bp);
return error;
@@ -522,7 +531,8 @@
}
nb = newb;
*allocblk++ = nb;
- nbp = getblk(ip->i_devvp, indirs[i].in_lbn, fs->fs_bsize, 0, 0, 0);
+ nbp = getblk((void *)ip->i_devvp, indirs[i].in_lbn,
+ fs->fs_bsize, 0, 0, 0);
nbp->b_blkno = fsbtodb(fs, nb);
clrbuf(nbp);
/*
@@ -553,7 +563,8 @@
nb = newb;
*allocblk++ = nb;
if (bpp != NULL) {
- nbp = getblk(ip->i_devvp, lbn, fs->fs_bsize, 0, 0, 0);
+ nbp = getblk((void *)ip->i_devvp, lbn, fs->fs_bsize,
+ 0, 0, 0);
nbp->b_blkno = fsbtodb(fs, nb);
clrbuf(nbp);
*bpp = nbp;
@@ -569,7 +580,8 @@
}
brelse(bp);
if (bpp != NULL) {
- error = bread(ip->i_devvp, lbn, (int)fs->fs_bsize, NULL, &nbp);
+ error = bread((void *)ip->i_devvp, lbn, (int)fs->fs_bsize,
+ NULL, &nbp);
if (error) {
brelse(nbp);
return error;
diff --git a/usr.sbin/makefs/ffs/ffs_extern.h b/usr.sbin/makefs/ffs/ffs_extern.h
--- a/usr.sbin/makefs/ffs/ffs_extern.h
+++ b/usr.sbin/makefs/ffs/ffs_extern.h
@@ -59,7 +59,7 @@
void ffs_clusteracct(struct fs *, struct cg *, int32_t, int);
/* ffs_balloc.c */
-int ffs_balloc(struct inode *, off_t, int, struct buf **);
+int ffs_balloc(struct inode *, off_t, int, struct m_buf **);
/* ffs_bswap.c */
void ffs_sb_swap(struct fs*, struct fs *);
diff --git a/usr.sbin/makefs/msdos.h b/usr.sbin/makefs/msdos.h
--- a/usr.sbin/makefs/msdos.h
+++ b/usr.sbin/makefs/msdos.h
@@ -51,11 +51,21 @@
size_t cn_namelen;
};
+struct m_vnode;
+struct m_buf;
+
int msdosfs_fsiflush(struct msdosfsmount *);
-struct msdosfsmount *msdosfs_mount(struct vnode *);
-int msdosfs_root(struct msdosfsmount *, struct vnode *);
+struct msdosfsmount *msdosfs_mount(struct m_vnode *);
+int msdosfs_root(struct msdosfsmount *, struct m_vnode *);
struct denode *msdosfs_mkfile(const char *, struct denode *, fsnode *);
struct denode *msdosfs_mkdire(const char *, struct denode *, fsnode *);
+int m_readde(struct denode *dep, struct m_buf **bpp, struct direntry **epp);
+int m_readep(struct msdosfsmount *pmp, u_long dirclust, u_long diroffset,
+ struct m_buf **bpp, struct direntry **epp);
+int m_extendfile(struct denode *dep, u_long count, struct m_buf **bpp,
+ u_long *ncp, int flags);
+
+struct msdosfsmount *m_msdosfs_mount(struct m_vnode *devvp);
#endif
diff --git a/usr.sbin/makefs/msdos.c b/usr.sbin/makefs/msdos.c
--- a/usr.sbin/makefs/msdos.c
+++ b/usr.sbin/makefs/msdos.c
@@ -55,16 +55,17 @@
#include <dirent.h>
#include <util.h>
-#include "ffs/buf.h"
-#include "makefs.h"
-#include "msdos.h"
-
#include <mkfs_msdos.h>
#include <fs/msdosfs/bpb.h>
#include "msdos/direntry.h"
#include <fs/msdosfs/denode.h>
#include <fs/msdosfs/msdosfsmount.h>
+#undef clrbuf
+#include "ffs/buf.h"
+#include "makefs.h"
+#include "msdos.h"
+
static int msdos_populate_dir(const char *, struct denode *, fsnode *,
fsnode *, fsinfo_t *);
@@ -146,7 +147,7 @@
msdos_makefs(const char *image, const char *dir, fsnode *root, fsinfo_t *fsopts)
{
struct msdos_options_ex *msdos_opt = fsopts->fs_specific;
- struct vnode vp, rootvp;
+ struct m_vnode vp, rootvp;
struct timeval start;
struct msdosfsmount *pmp;
uint32_t flags;
@@ -184,7 +185,7 @@
vp.fs = fsopts;
flags = 0;
- if ((pmp = msdosfs_mount(&vp)) == NULL)
+ if ((pmp = m_msdosfs_mount(&vp)) == NULL)
err(1, "msdosfs_mount");
if (msdosfs_root(pmp, &rootvp) != 0)
diff --git a/usr.sbin/makefs/msdos/msdosfs_denode.c b/usr.sbin/makefs/msdos/msdosfs_denode.c
--- a/usr.sbin/makefs/msdos/msdosfs_denode.c
+++ b/usr.sbin/makefs/msdos/msdosfs_denode.c
@@ -61,14 +61,14 @@
#include <stdlib.h>
#include <util.h>
-#include "ffs/buf.h"
-
#include <fs/msdosfs/bpb.h>
#include <fs/msdosfs/direntry.h>
#include <fs/msdosfs/denode.h>
#include <fs/msdosfs/fat.h>
#include <fs/msdosfs/msdosfsmount.h>
+#undef clrbuf
+#include "ffs/buf.h"
#include "makefs.h"
#include "msdos.h"
@@ -93,7 +93,7 @@
uint64_t inode;
struct direntry *direntptr;
struct denode *ldep;
- struct buf *bp;
+ struct m_buf *bp;
MSDOSFS_DPRINTF(("deget(pmp %p, dirclust %lu, diroffset %lx, depp %p)\n",
pmp, dirclust, diroffset, depp));
@@ -155,7 +155,7 @@
ldep->de_MDate = ldep->de_CDate;
/* leave the other fields as garbage */
} else {
- error = readep(pmp, dirclust, diroffset, &bp, &direntptr);
+ error = m_readep(pmp, dirclust, diroffset, &bp, &direntptr);
if (error) {
ldep->de_Name[0] = SLOT_DELETED;
@@ -219,7 +219,7 @@
daddr_t bn;
int boff;
int isadir = dep->de_Attributes & ATTR_DIRECTORY;
- struct buf *bp;
+ struct m_buf *bp;
struct msdosfsmount *pmp = dep->de_pmp;
MSDOSFS_DPRINTF(("detrunc(): file %s, length %lu, flags %x\n",
@@ -277,8 +277,8 @@
if ((boff = length & pmp->pm_crbomask) != 0) {
if (isadir) {
bn = cntobn(pmp, eofentry);
- error = bread(pmp->pm_devvp, bn, pmp->pm_bpcluster,
- 0, &bp);
+ error = bread((void *)pmp->pm_devvp, bn,
+ pmp->pm_bpcluster, 0, &bp);
if (error) {
brelse(bp);
MSDOSFS_DPRINTF(("detrunc(): bread fails %d\n",
@@ -359,7 +359,7 @@
if (count > 0) {
if (count > pmp->pm_freeclustercount)
return (ENOSPC);
- error = extendfile(dep, count, NULL, NULL, DE_CLEAR);
+ error = m_extendfile(dep, count, NULL, NULL, DE_CLEAR);
if (error) {
/* truncate the added clusters away again */
(void) detrunc(dep, dep->de_FileSize, 0, cred);
diff --git a/usr.sbin/makefs/msdos/msdosfs_fat.c b/usr.sbin/makefs/msdos/msdosfs_fat.c
--- a/usr.sbin/makefs/msdos/msdosfs_fat.c
+++ b/usr.sbin/makefs/msdos/msdosfs_fat.c
@@ -59,14 +59,14 @@
#include <string.h>
#include <strings.h>
-#include "ffs/buf.h"
-
#include <fs/msdosfs/bpb.h>
#include "msdos/direntry.h"
#include <fs/msdosfs/denode.h>
#include <fs/msdosfs/fat.h>
#include <fs/msdosfs/msdosfsmount.h>
+#undef clrbuf
+#include "ffs/buf.h"
#include "makefs.h"
#include "msdos.h"
@@ -84,7 +84,7 @@
u_long fillwith);
static void fc_lookup(struct denode *dep, u_long findcn, u_long *frcnp,
u_long *fsrcnp);
-static void updatefats(struct msdosfsmount *pmp, struct buf *bp,
+static void updatefats(struct msdosfsmount *pmp, struct m_buf *bp,
u_long fatbn);
static __inline void
usemap_alloc(struct msdosfsmount *pmp, u_long cn);
@@ -142,7 +142,7 @@
u_long byteoffset;
u_long bn;
u_long bo;
- struct buf *bp = NULL;
+ struct m_buf *bp = NULL;
u_long bp_bn = -1;
struct msdosfsmount *pmp = dep->de_pmp;
u_long bsize;
@@ -206,7 +206,8 @@
if (bn != bp_bn) {
if (bp)
brelse(bp);
- error = bread(pmp->pm_devvp, bn, bsize, NOCRED, &bp);
+ error = bread((void *)pmp->pm_devvp, bn, bsize,
+ NOCRED, &bp);
if (error) {
brelse(bp);
return (error);
@@ -309,9 +310,9 @@
* fatbn - block number relative to begin of filesystem of the modified FAT block.
*/
static void
-updatefats(struct msdosfsmount *pmp, struct buf *bp, u_long fatbn)
+updatefats(struct msdosfsmount *pmp, struct m_buf *bp, u_long fatbn)
{
- struct buf *bpn;
+ struct m_buf *bpn;
int cleanfat, i;
#ifdef MSDOSFS_DEBUG
@@ -338,8 +339,8 @@
for (i = 1; i < pmp->pm_FATs; i++) {
fatbn += pmp->pm_FATsecs;
/* getblk() never fails */
- bpn = getblk(pmp->pm_devvp, fatbn, bp->b_bcount,
- 0, 0, 0);
+ bpn = getblk((void *)pmp->pm_devvp, fatbn,
+ bp->b_bcount, 0, 0, 0);
memcpy(bpn->b_data, bp->b_data, bp->b_bcount);
/* Force the clean bit on in the other copies. */
if (cleanfat == 16)
@@ -456,7 +457,7 @@
int error;
u_long readcn;
u_long bn, bo, bsize, byteoffset;
- struct buf *bp;
+ struct m_buf *bp;
#ifdef MSDOSFS_DEBUG
printf("fatentry(func %d, pmp %p, clust %lu, oldcon %p, newcon %lx)\n",
@@ -494,7 +495,7 @@
byteoffset = FATOFS(pmp, cn);
fatblock(pmp, byteoffset, &bn, &bsize, &bo);
- error = bread(pmp->pm_devvp, bn, bsize, NOCRED, &bp);
+ error = bread((void *)pmp->pm_devvp, bn, bsize, NOCRED, &bp);
if (error) {
brelse(bp);
return (error);
@@ -562,7 +563,7 @@
{
int error;
u_long bn, bo, bsize, byteoffset, readcn, newc;
- struct buf *bp;
+ struct m_buf *bp;
#ifdef MSDOSFS_DEBUG
printf("fatchain(pmp %p, start %lu, count %lu, fillwith %lx)\n",
@@ -577,7 +578,7 @@
while (count > 0) {
byteoffset = FATOFS(pmp, start);
fatblock(pmp, byteoffset, &bn, &bsize, &bo);
- error = bread(pmp->pm_devvp, bn, bsize, NOCRED, &bp);
+ error = bread((void *)pmp->pm_devvp, bn, bsize, NOCRED, &bp);
if (error) {
brelse(bp);
return (error);
@@ -813,7 +814,7 @@
freeclusterchain(struct msdosfsmount *pmp, u_long cluster)
{
int error;
- struct buf *bp = NULL;
+ struct m_buf *bp = NULL;
u_long bn, bo, bsize, byteoffset;
u_long readcn, lbn = -1;
@@ -823,7 +824,8 @@
if (lbn != bn) {
if (bp)
updatefats(pmp, bp, lbn);
- error = bread(pmp->pm_devvp, bn, bsize, NOCRED, &bp);
+ error = bread((void *)pmp->pm_devvp, bn, bsize,
+ NOCRED, &bp);
if (error) {
brelse(bp);
return (error);
@@ -871,7 +873,7 @@
int
fillinusemap(struct msdosfsmount *pmp)
{
- struct buf *bp;
+ struct m_buf *bp;
u_long bn, bo, bsize, byteoffset, cn, readcn;
int error;
@@ -898,7 +900,8 @@
if (bp != NULL)
brelse(bp);
fatblock(pmp, byteoffset, &bn, &bsize, NULL);
- error = bread(pmp->pm_devvp, bn, bsize, NOCRED, &bp);
+ error = bread((void *)pmp->pm_devvp, bn, bsize,
+ NOCRED, &bp);
if (error != 0)
return (error);
}
@@ -951,14 +954,14 @@
* field. This is left for the caller to do.
*/
int
-extendfile(struct denode *dep, u_long count, struct buf **bpp, u_long *ncp,
+m_extendfile(struct denode *dep, u_long count, struct m_buf **bpp, u_long *ncp,
int flags)
{
int error;
u_long frcn;
u_long cn, got;
struct msdosfsmount *pmp = dep->de_pmp;
- struct buf *bp;
+ struct m_buf *bp;
/*
* Don't try to extend the root directory
@@ -1039,7 +1042,7 @@
if ((flags & DE_CLEAR) &&
(dep->de_Attributes & ATTR_DIRECTORY)) {
while (got-- > 0) {
- bp = getblk(pmp->pm_devvp,
+ bp = getblk((void *)pmp->pm_devvp,
cntobn(pmp, cn++),
pmp->pm_bpcluster, 0, 0, 0);
clrbuf(bp);
diff --git a/usr.sbin/makefs/msdos/msdosfs_lookup.c b/usr.sbin/makefs/msdos/msdosfs_lookup.c
--- a/usr.sbin/makefs/msdos/msdosfs_lookup.c
+++ b/usr.sbin/makefs/msdos/msdosfs_lookup.c
@@ -57,13 +57,14 @@
#include <stdio.h>
#include <string.h>
-#include "ffs/buf.h"
#include <fs/msdosfs/bpb.h>
#include "msdos/direntry.h"
#include <fs/msdosfs/denode.h>
#include <fs/msdosfs/fat.h>
#include <fs/msdosfs/msdosfsmount.h>
+#undef clrbuf
+#include "ffs/buf.h"
#include "makefs.h"
#include "msdos.h"
@@ -82,7 +83,7 @@
u_long dirclust, diroffset;
struct direntry *ndep;
struct msdosfsmount *pmp = ddep->de_pmp;
- struct buf *bp;
+ struct m_buf *bp;
daddr_t bn;
int blsize;
@@ -101,7 +102,7 @@
diroffset = ddep->de_fndoffset + sizeof(struct direntry)
- ddep->de_FileSize;
dirclust = de_clcount(pmp, diroffset);
- error = extendfile(ddep, dirclust, 0, 0, DE_CLEAR);
+ error = m_extendfile(ddep, dirclust, 0, 0, DE_CLEAR);
if (error) {
(void)detrunc(ddep, ddep->de_FileSize, 0, NULL);
return error;
@@ -125,7 +126,8 @@
diroffset = ddep->de_fndoffset;
if (dirclust != MSDOSFSROOT)
diroffset &= pmp->pm_crbomask;
- if ((error = bread(pmp->pm_devvp, bn, blsize, NOCRED, &bp)) != 0) {
+ if ((error = bread((void *)pmp->pm_devvp, bn, blsize, NOCRED,
+ &bp)) != 0) {
brelse(bp);
return error;
}
@@ -155,7 +157,7 @@
if (error)
return error;
- error = bread(pmp->pm_devvp, bn, blsize,
+ error = bread((void *)pmp->pm_devvp, bn, blsize,
NOCRED, &bp);
if (error) {
brelse(bp);
@@ -200,8 +202,8 @@
* directory entry within the block.
*/
int
-readep(struct msdosfsmount *pmp, u_long dirclust, u_long diroffset,
- struct buf **bpp, struct direntry **epp)
+m_readep(struct msdosfsmount *pmp, u_long dirclust, u_long diroffset,
+ struct m_buf **bpp, struct direntry **epp)
{
int error;
daddr_t bn;
@@ -212,7 +214,8 @@
&& de_blk(pmp, diroffset + blsize) > pmp->pm_rootdirsize)
blsize = de_bn2off(pmp, pmp->pm_rootdirsize) & pmp->pm_crbomask;
bn = detobn(pmp, dirclust, diroffset);
- if ((error = bread(pmp->pm_devvp, bn, blsize, NOCRED, bpp)) != 0) {
+ if ((error = bread((void *)pmp->pm_devvp, bn, blsize, NOCRED,
+ bpp)) != 0) {
brelse(*bpp);
*bpp = NULL;
return (error);
@@ -228,10 +231,10 @@
* entry within the block.
*/
int
-readde(struct denode *dep, struct buf **bpp, struct direntry **epp)
+m_readde(struct denode *dep, struct m_buf **bpp, struct direntry **epp)
{
- return (readep(dep->de_pmp, dep->de_dirclust, dep->de_diroffset,
+ return (m_readep(dep->de_pmp, dep->de_dirclust, dep->de_diroffset,
bpp, epp));
}
@@ -247,7 +250,7 @@
int blsize;
u_long cn;
daddr_t bn;
- struct buf *bp;
+ struct m_buf *bp;
int error;
if (pmp->pm_flags & MSDOSFSMNT_SHORTNAME)
@@ -271,7 +274,8 @@
return 0;
return error;
}
- error = bread(pmp->pm_devvp, bn, blsize, NOCRED, &bp);
+ error = bread((void *)pmp->pm_devvp, bn, blsize,
+ NOCRED, &bp);
if (error) {
brelse(bp);
return error;
diff --git a/usr.sbin/makefs/msdos/msdosfs_vfsops.c b/usr.sbin/makefs/msdos/msdosfs_vfsops.c
--- a/usr.sbin/makefs/msdos/msdosfs_vfsops.c
+++ b/usr.sbin/makefs/msdos/msdosfs_vfsops.c
@@ -61,7 +61,6 @@
#include <stdlib.h>
#include <util.h>
-#include "ffs/buf.h"
#include <fs/msdosfs/bootsect.h>
#include <fs/msdosfs/bpb.h>
#include "msdos/direntry.h"
@@ -71,16 +70,16 @@
#include <mkfs_msdos.h>
+#undef clrbuf
+#include "ffs/buf.h"
#include "makefs.h"
#include "msdos.h"
-
-
struct msdosfsmount *
-msdosfs_mount(struct vnode *devvp)
+m_msdosfs_mount(struct m_vnode *devvp)
{
struct msdosfsmount *pmp = NULL;
- struct buf *bp;
+ struct m_buf *bp;
union bootsector *bsp;
struct byte_bpb33 *b33;
struct byte_bpb50 *b50;
@@ -91,7 +90,7 @@
unsigned secsize = 512;
MSDOSFS_DPRINTF(("%s(bread 0)\n", __func__));
- if ((error = bread(devvp, 0, secsize, 0, &bp)) != 0)
+ if ((error = bread((void *)devvp, 0, secsize, 0, &bp)) != 0)
goto error_exit;
bsp = (union bootsector *)bp->b_data;
@@ -273,8 +272,8 @@
* 2KB or larger sectors, is the fsinfo structure
* padded at the end or in the middle?
*/
- if ((error = bread(devvp, pmp->pm_fsinfo, pmp->pm_BytesPerSec,
- 0, &bp)) != 0)
+ if ((error = bread((void *)devvp, pmp->pm_fsinfo,
+ pmp->pm_BytesPerSec, 0, &bp)) != 0)
goto error_exit;
fp = (struct fsinfo *)bp->b_data;
if (!memcmp(fp->fsisig1, "RRaA", 4)
@@ -307,7 +306,7 @@
* fillinusemap() needs pm_devvp.
*/
pmp->pm_dev = 0;
- pmp->pm_devvp = devvp;
+ pmp->pm_devvp = (void *)devvp;
/*
* Have the inuse map filled in.
@@ -348,11 +347,11 @@
}
int
-msdosfs_root(struct msdosfsmount *pmp, struct vnode *vp) {
+msdosfs_root(struct msdosfsmount *pmp, struct m_vnode *vp) {
struct denode *ndep;
int error;
- *vp = *pmp->pm_devvp;
+ *vp = *(struct m_vnode *)pmp->pm_devvp;
if ((error = deget(pmp, MSDOSFSROOT, MSDOSFSROOT_OFS, &ndep)) != 0) {
errno = error;
return -1;
@@ -368,15 +367,15 @@
msdosfs_fsiflush(struct msdosfsmount *pmp)
{
struct fsinfo *fp;
- struct buf *bp;
+ struct m_buf *bp;
int error;
if (pmp->pm_fsinfo == 0 || (pmp->pm_flags & MSDOSFS_FSIMOD) == 0) {
error = 0;
goto out;
}
- error = bread(pmp->pm_devvp, pmp->pm_fsinfo, pmp->pm_BytesPerSec,
- NOCRED, &bp);
+ error = bread((void *)pmp->pm_devvp, pmp->pm_fsinfo,
+ pmp->pm_BytesPerSec, NOCRED, &bp);
if (error != 0) {
brelse(bp);
goto out;
diff --git a/usr.sbin/makefs/msdos/msdosfs_vnops.c b/usr.sbin/makefs/msdos/msdosfs_vnops.c
--- a/usr.sbin/makefs/msdos/msdosfs_vnops.c
+++ b/usr.sbin/makefs/msdos/msdosfs_vnops.c
@@ -64,13 +64,14 @@
#include <time.h>
#include <unistd.h>
-#include "ffs/buf.h"
#include <fs/msdosfs/bpb.h>
#include "msdos/direntry.h"
#include <fs/msdosfs/denode.h>
#include <fs/msdosfs/fat.h>
#include <fs/msdosfs/msdosfsmount.h>
+#undef clrbuf
+#include "ffs/buf.h"
#include "makefs.h"
#include "msdos.h"
@@ -161,7 +162,7 @@
u_int diroff;
int blsize;
struct msdosfsmount *pmp;
- struct buf *bp = 0;
+ struct m_buf *bp = 0;
struct direntry *dep;
u_char dosfilename[12];
int wincnt = 1;
@@ -216,7 +217,7 @@
break;
return (error);
}
- error = bread(pmp->pm_devvp, bn, blsize, 0, &bp);
+ error = bread((void *)pmp->pm_devvp, bn, blsize, 0, &bp);
if (error) {
return (error);
}
@@ -417,12 +418,12 @@
static int
msdosfs_updatede(struct denode *dep)
{
- struct buf *bp;
+ struct m_buf *bp;
struct direntry *dirp;
int error;
dep->de_flag &= ~DE_MODIFIED;
- error = readde(dep, &bp, &dirp);
+ error = m_readde(dep, &bp, &dirp);
if (error)
return error;
DE_EXTERNALIZE(dirp, dep);
@@ -441,7 +442,7 @@
struct stat *st = &node->inode->st;
size_t nsize, offs;
struct msdosfsmount *pmp = dep->de_pmp;
- struct buf *bp;
+ struct m_buf *bp;
char *dat;
u_long cn = 0;
@@ -494,7 +495,8 @@
MSDOSFS_DPRINTF(("%s(cn=%lu, bn=%llu, blsize=%d)\n",
__func__, cn, (unsigned long long)bn, blsize));
- if ((error = bread(pmp->pm_devvp, bn, blsize, 0, &bp)) != 0) {
+ if ((error = bread((void *)pmp->pm_devvp, bn, blsize, 0,
+ &bp)) != 0) {
MSDOSFS_DPRINTF(("bread %d\n", error));
goto out;
}
@@ -546,7 +548,7 @@
int error;
u_long newcluster, pcl, bn;
struct direntry *denp;
- struct buf *bp;
+ struct m_buf *bp;
cn.cn_nameptr = node->name;
cn.cn_namelen = strlen(node->name);
@@ -582,7 +584,7 @@
MSDOSFS_DPRINTF(("%s(newcluster %lu, bn=%lu)\n",
__func__, newcluster, bn));
/* always succeeds */
- bp = getblk(pmp->pm_devvp, bn, pmp->pm_bpcluster, 0, 0, 0);
+ bp = getblk((void *)pmp->pm_devvp, bn, pmp->pm_bpcluster, 0, 0, 0);
memset(bp->b_data, 0, pmp->pm_bpcluster);
memcpy(bp->b_data, &dosdirtemplate, sizeof dosdirtemplate);
denp = (struct direntry *)bp->b_data;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Oct 24, 7:20 PM (14 h, 54 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
24142039
Default Alt Text
D28679.id84193.diff (52 KB)
Attached To
Mode
D28679: vnode: move write cluster support data to inodes.
Attached
Detach File
Event Timeline
Log In to Comment