summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordillon <dillon@FreeBSD.org>2001-11-04 18:55:42 +0000
committerdillon <dillon@FreeBSD.org>2001-11-04 18:55:42 +0000
commitc9a56085cebe87767458dd48f7738acbe105619e (patch)
tree61568963b6d37be55e92fb098649a0a28e127bf3
parent80bdf7d4cbe1d6a9a78f0f19599df30b74b9279e (diff)
downloadFreeBSD-src-c9a56085cebe87767458dd48f7738acbe105619e.zip
FreeBSD-src-c9a56085cebe87767458dd48f7738acbe105619e.tar.gz
Add mnt_reservedvnlist so we can MFC to 4.x, in order to make all mount
structure changes now rather then piecemeal later on. mnt_nvnodelist currently holds all the vnodes under the mount point. This will eventually be split into a 'dirty' and 'clean' list. This way we only break kld's once rather then twice. nvnodelist will eventually turn into the dirty list and should remain compatible with the klds.
-rw-r--r--sys/fs/msdosfs/msdosfs_vfsops.c1
-rw-r--r--sys/gnu/ext2fs/ext2_vfsops.c1
-rw-r--r--sys/gnu/fs/ext2fs/ext2_vfsops.c1
-rw-r--r--sys/kern/vfs_extattr.c1
-rw-r--r--sys/kern/vfs_subr.c1
-rw-r--r--sys/kern/vfs_syscalls.c1
-rw-r--r--sys/sys/mount.h8
7 files changed, 14 insertions, 0 deletions
diff --git a/sys/fs/msdosfs/msdosfs_vfsops.c b/sys/fs/msdosfs/msdosfs_vfsops.c
index ca5a9ca..b0f0a53 100644
--- a/sys/fs/msdosfs/msdosfs_vfsops.c
+++ b/sys/fs/msdosfs/msdosfs_vfsops.c
@@ -177,6 +177,7 @@ msdosfs_mountroot()
mp->mnt_op = &msdosfs_vfsops;
mp->mnt_flag = 0;
TAILQ_INIT(&mp->mnt_nvnodelist);
+ TAILQ_INIT(&mp->mnt_reservedvnlist);
args.flags = 0;
args.uid = 0;
diff --git a/sys/gnu/ext2fs/ext2_vfsops.c b/sys/gnu/ext2fs/ext2_vfsops.c
index 4d9ea28..b20d205 100644
--- a/sys/gnu/ext2fs/ext2_vfsops.c
+++ b/sys/gnu/ext2fs/ext2_vfsops.c
@@ -142,6 +142,7 @@ ext2_mountroot()
mp = bsd_malloc((u_long)sizeof(struct mount), M_MOUNT, M_WAITOK);
bzero((char *)mp, (u_long)sizeof(struct mount));
TAILQ_INIT(&mp->mnt_nvnodelist);
+ TAILQ_INIT(&mp->mnt_reservedvnlist);
mp->mnt_op = &ext2fs_vfsops;
mp->mnt_flag = MNT_RDONLY;
if (error = ext2_mountfs(rootvp, mp, td)) {
diff --git a/sys/gnu/fs/ext2fs/ext2_vfsops.c b/sys/gnu/fs/ext2fs/ext2_vfsops.c
index 4d9ea28..b20d205 100644
--- a/sys/gnu/fs/ext2fs/ext2_vfsops.c
+++ b/sys/gnu/fs/ext2fs/ext2_vfsops.c
@@ -142,6 +142,7 @@ ext2_mountroot()
mp = bsd_malloc((u_long)sizeof(struct mount), M_MOUNT, M_WAITOK);
bzero((char *)mp, (u_long)sizeof(struct mount));
TAILQ_INIT(&mp->mnt_nvnodelist);
+ TAILQ_INIT(&mp->mnt_reservedvnlist);
mp->mnt_op = &ext2fs_vfsops;
mp->mnt_flag = MNT_RDONLY;
if (error = ext2_mountfs(rootvp, mp, td)) {
diff --git a/sys/kern/vfs_extattr.c b/sys/kern/vfs_extattr.c
index 530ad15..cb82b08 100644
--- a/sys/kern/vfs_extattr.c
+++ b/sys/kern/vfs_extattr.c
@@ -341,6 +341,7 @@ vfs_mount(td, fstype, fspath, fsflags, fsdata)
*/
mp = malloc(sizeof(struct mount), M_MOUNT, M_WAITOK | M_ZERO);
TAILQ_INIT(&mp->mnt_nvnodelist);
+ TAILQ_INIT(&mp->mnt_reservedvnlist);
lockinit(&mp->mnt_lock, PVFS, "vfslock", 0, LK_NOPAUSE);
(void)vfs_busy(mp, LK_NOWAIT, 0, td);
mp->mnt_op = vfsp->vfc_vfsops;
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 2b822e9..ae89f86 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -346,6 +346,7 @@ vfs_rootmountalloc(fstypename, devname, mpp)
lockinit(&mp->mnt_lock, PVFS, "vfslock", 0, LK_NOPAUSE);
(void)vfs_busy(mp, LK_NOWAIT, 0, td);
TAILQ_INIT(&mp->mnt_nvnodelist);
+ TAILQ_INIT(&mp->mnt_reservedvnlist);
mp->mnt_vfc = vfsp;
mp->mnt_op = vfsp->vfc_vfsops;
mp->mnt_flag = MNT_RDONLY;
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c
index 530ad15..cb82b08 100644
--- a/sys/kern/vfs_syscalls.c
+++ b/sys/kern/vfs_syscalls.c
@@ -341,6 +341,7 @@ vfs_mount(td, fstype, fspath, fsflags, fsdata)
*/
mp = malloc(sizeof(struct mount), M_MOUNT, M_WAITOK | M_ZERO);
TAILQ_INIT(&mp->mnt_nvnodelist);
+ TAILQ_INIT(&mp->mnt_reservedvnlist);
lockinit(&mp->mnt_lock, PVFS, "vfslock", 0, LK_NOPAUSE);
(void)vfs_busy(mp, LK_NOWAIT, 0, td);
mp->mnt_op = vfsp->vfc_vfsops;
diff --git a/sys/sys/mount.h b/sys/sys/mount.h
index 23d26b8..8b0d012 100644
--- a/sys/sys/mount.h
+++ b/sys/sys/mount.h
@@ -109,6 +109,13 @@ struct statfs {
* Structure per mounted file system. Each mounted file system has an
* array of operations and an instance record. The file systems are
* put on a doubly linked list.
+ *
+ * NOTE: mnt_nvnodelist and mnt_reservedvnlist. At the moment vnodes
+ * are linked into mnt_nvnodelist. At some point in the near future the
+ * vnode list will be split into a 'dirty' and 'clean' list. mnt_nvnodelist
+ * will become the dirty list and mnt_reservedvnlist will become the 'clean'
+ * list. Filesystem kld's syncing code should remain compatible since
+ * they only need to scan the dirty vnode list (nvnodelist -> dirtyvnodelist).
*/
TAILQ_HEAD(vnodelst, vnode);
@@ -119,6 +126,7 @@ struct mount {
struct vnode *mnt_vnodecovered; /* vnode we mounted on */
struct vnode *mnt_syncer; /* syncer vnode */
struct vnodelst mnt_nvnodelist; /* list of vnodes this mount */
+ struct vnodelst mnt_reservedvnlist; /* (future) dirty vnode list */
struct lock mnt_lock; /* mount structure lock */
int mnt_writeopcount; /* write syscalls in progress */
int mnt_flag; /* flags shared with user */
OpenPOWER on IntegriCloud