summaryrefslogtreecommitdiffstats
path: root/sys/gnu/ext2fs
diff options
context:
space:
mode:
Diffstat (limited to 'sys/gnu/ext2fs')
-rw-r--r--sys/gnu/ext2fs/ext2_extern.h6
-rw-r--r--sys/gnu/ext2fs/ext2_vfsops.c4
-rw-r--r--sys/gnu/ext2fs/ext2_vnops.c113
3 files changed, 56 insertions, 67 deletions
diff --git a/sys/gnu/ext2fs/ext2_extern.h b/sys/gnu/ext2fs/ext2_extern.h
index 8e73723..57c62b1 100644
--- a/sys/gnu/ext2fs/ext2_extern.h
+++ b/sys/gnu/ext2fs/ext2_extern.h
@@ -74,7 +74,7 @@ int ext2_truncate(struct vnode *, off_t, int, struct ucred *, struct thread *);
int ext2_update(struct vnode *, int);
int ext2_valloc(struct vnode *, int, struct ucred *, struct vnode **);
int ext2_vfree(struct vnode *, ino_t, int);
-int ext2_vinit(struct mount *, vop_t **, struct vnode **vpp);
+int ext2_vinit(struct mount *, struct vop_vector *, struct vnode **vpp);
int ext2_lookup(struct vop_cachedlookup_args *);
int ext2_readdir(struct vop_readdir_args *);
void ext2_print_inode(struct inode *);
@@ -105,7 +105,7 @@ void mark_buffer_dirty(struct buf *bh);
#define B_METAONLY 0x04 /* Return indirect block buffer. */
#define B_NOWAIT 0x08 /* do not sleep to await lock */
-extern vop_t **ext2_vnodeop_p;
-extern vop_t **ext2_fifoop_p;
+extern struct vop_vector ext2_vnodeops;
+extern struct vop_vector ext2_fifoops;
#endif /* !_SYS_GNU_EXT2FS_EXT2_EXTERN_H_ */
diff --git a/sys/gnu/ext2fs/ext2_vfsops.c b/sys/gnu/ext2fs/ext2_vfsops.c
index 905e7f7..0519c59 100644
--- a/sys/gnu/ext2fs/ext2_vfsops.c
+++ b/sys/gnu/ext2fs/ext2_vfsops.c
@@ -1026,7 +1026,7 @@ restart:
MALLOC(ip, struct inode *, sizeof(struct inode), M_EXT2NODE, M_WAITOK);
/* Allocate a new vnode/inode. */
- if ((error = getnewvnode("ext2fs", mp, ext2_vnodeop_p, &vp)) != 0) {
+ if ((error = getnewvnode("ext2fs", mp, &ext2_vnodeops, &vp)) != 0) {
if (ext2fs_inode_hash_lock < 0)
wakeup(&ext2fs_inode_hash_lock);
ext2fs_inode_hash_lock = 0;
@@ -1095,7 +1095,7 @@ printf("ext2_vget(%d) dbn= %d ", ino, fsbtodb(fs, ino_to_fsba(fs, ino)));
* Initialize the vnode from the inode, check for aliases.
* Note that the underlying vnode may have changed.
*/
- if ((error = ext2_vinit(mp, ext2_fifoop_p, &vp)) != 0) {
+ if ((error = ext2_vinit(mp, &ext2_fifoops, &vp)) != 0) {
vput(vp);
*vpp = NULL;
return (error);
diff --git a/sys/gnu/ext2fs/ext2_vnops.c b/sys/gnu/ext2fs/ext2_vnops.c
index b644ab8..ebc39d0 100644
--- a/sys/gnu/ext2fs/ext2_vnops.c
+++ b/sys/gnu/ext2fs/ext2_vnops.c
@@ -116,65 +116,54 @@ static int filt_ext2vnode(struct knote *kn, long hint);
static void filt_ext2detach(struct knote *kn);
/* Global vfs data structures for ext2. */
-vop_t **ext2_vnodeop_p;
-static struct vnodeopv_entry_desc ext2_vnodeop_entries[] = {
- { &vop_default_desc, (vop_t *) vop_defaultop },
- { &vop_access_desc, (vop_t *) ext2_access },
- { &vop_advlock_desc, (vop_t *) ext2_advlock },
- { &vop_bmap_desc, (vop_t *) ext2_bmap },
- { &vop_cachedlookup_desc, (vop_t *) ext2_lookup },
- { &vop_close_desc, (vop_t *) ext2_close },
- { &vop_create_desc, (vop_t *) ext2_create },
- { &vop_fsync_desc, (vop_t *) ext2_fsync },
- { &vop_getattr_desc, (vop_t *) ext2_getattr },
- { &vop_inactive_desc, (vop_t *) ext2_inactive },
- { &vop_link_desc, (vop_t *) ext2_link },
- { &vop_lookup_desc, (vop_t *) vfs_cache_lookup },
- { &vop_mkdir_desc, (vop_t *) ext2_mkdir },
- { &vop_mknod_desc, (vop_t *) ext2_mknod },
- { &vop_open_desc, (vop_t *) ext2_open },
- { &vop_pathconf_desc, (vop_t *) ext2_pathconf },
- { &vop_poll_desc, (vop_t *) vop_stdpoll },
- { &vop_kqfilter_desc, (vop_t *) ext2_kqfilter },
- { &vop_print_desc, (vop_t *) ext2_print },
- { &vop_read_desc, (vop_t *) ext2_read },
- { &vop_readdir_desc, (vop_t *) ext2_readdir },
- { &vop_readlink_desc, (vop_t *) ext2_readlink },
- { &vop_reallocblks_desc, (vop_t *) ext2_reallocblks },
- { &vop_reclaim_desc, (vop_t *) ext2_reclaim },
- { &vop_remove_desc, (vop_t *) ext2_remove },
- { &vop_rename_desc, (vop_t *) ext2_rename },
- { &vop_rmdir_desc, (vop_t *) ext2_rmdir },
- { &vop_setattr_desc, (vop_t *) ext2_setattr },
- { &vop_strategy_desc, (vop_t *) ext2_strategy },
- { &vop_symlink_desc, (vop_t *) ext2_symlink },
- { &vop_write_desc, (vop_t *) ext2_write },
- { NULL, NULL }
+struct vop_vector ext2_vnodeops = {
+ .vop_default = &default_vnodeops,
+ .vop_access = ext2_access,
+ .vop_advlock = ext2_advlock,
+ .vop_bmap = ext2_bmap,
+ .vop_cachedlookup = ext2_lookup,
+ .vop_close = ext2_close,
+ .vop_create = ext2_create,
+ .vop_fsync = ext2_fsync,
+ .vop_getattr = ext2_getattr,
+ .vop_inactive = ext2_inactive,
+ .vop_link = ext2_link,
+ .vop_lookup = vfs_cache_lookup,
+ .vop_mkdir = ext2_mkdir,
+ .vop_mknod = ext2_mknod,
+ .vop_open = ext2_open,
+ .vop_pathconf = ext2_pathconf,
+ .vop_poll = vop_stdpoll,
+ .vop_kqfilter = ext2_kqfilter,
+ .vop_print = ext2_print,
+ .vop_read = ext2_read,
+ .vop_readdir = ext2_readdir,
+ .vop_readlink = ext2_readlink,
+ .vop_reallocblks = ext2_reallocblks,
+ .vop_reclaim = ext2_reclaim,
+ .vop_remove = ext2_remove,
+ .vop_rename = ext2_rename,
+ .vop_rmdir = ext2_rmdir,
+ .vop_setattr = ext2_setattr,
+ .vop_strategy = ext2_strategy,
+ .vop_symlink = ext2_symlink,
+ .vop_write = ext2_write,
};
-static struct vnodeopv_desc ext2fs_vnodeop_opv_desc =
- { &ext2_vnodeop_p, ext2_vnodeop_entries };
-
-vop_t **ext2_fifoop_p;
-static struct vnodeopv_entry_desc ext2_fifoop_entries[] = {
- { &vop_default_desc, (vop_t *) fifo_vnoperate },
- { &vop_access_desc, (vop_t *) ext2_access },
- { &vop_close_desc, (vop_t *) ext2fifo_close },
- { &vop_fsync_desc, (vop_t *) ext2_fsync },
- { &vop_getattr_desc, (vop_t *) ext2_getattr },
- { &vop_inactive_desc, (vop_t *) ext2_inactive },
- { &vop_kqfilter_desc, (vop_t *) ext2fifo_kqfilter },
- { &vop_print_desc, (vop_t *) ext2_print },
- { &vop_read_desc, (vop_t *) ext2fifo_read },
- { &vop_reclaim_desc, (vop_t *) ext2_reclaim },
- { &vop_setattr_desc, (vop_t *) ext2_setattr },
- { &vop_write_desc, (vop_t *) ext2fifo_write },
- { NULL, NULL }
-};
-static struct vnodeopv_desc ext2fs_fifoop_opv_desc =
- { &ext2_fifoop_p, ext2_fifoop_entries };
- VNODEOP_SET(ext2fs_vnodeop_opv_desc);
- VNODEOP_SET(ext2fs_fifoop_opv_desc);
+struct vop_vector ext2_fifoops = {
+ .vop_default = &fifo_specops,
+ .vop_access = ext2_access,
+ .vop_close = ext2fifo_close,
+ .vop_fsync = ext2_fsync,
+ .vop_getattr = ext2_getattr,
+ .vop_inactive = ext2_inactive,
+ .vop_kqfilter = ext2fifo_kqfilter,
+ .vop_print = ext2_print,
+ .vop_read = ext2fifo_read,
+ .vop_reclaim = ext2_reclaim,
+ .vop_setattr = ext2_setattr,
+ .vop_write = ext2fifo_write,
+};
#include <gnu/ext2fs/ext2_readwrite.c>
@@ -1487,7 +1476,7 @@ ext2fifo_read(ap)
uio = ap->a_uio;
resid = uio->uio_resid;
- error = VOCALL(fifo_vnodeop_p, VOFFSET(vop_read), ap);
+ error = fifo_specops.vop_read(ap);
ip = VTOI(ap->a_vp);
if ((ap->a_vp->v_mount->mnt_flag & MNT_NOATIME) == 0 && ip != NULL &&
(uio->uio_resid != resid || (error == 0 && resid != 0)))
@@ -1513,7 +1502,7 @@ ext2fifo_write(ap)
uio = ap->a_uio;
resid = uio->uio_resid;
- error = VOCALL(fifo_vnodeop_p, VOFFSET(vop_write), ap);
+ error = fifo_specops.vop_write(ap);
ip = VTOI(ap->a_vp);
if (ip != NULL && (uio->uio_resid != resid || (error == 0 && resid != 0)))
VTOI(ap->a_vp)->i_flag |= IN_CHANGE | IN_UPDATE;
@@ -1540,7 +1529,7 @@ ext2fifo_close(ap)
if (vp->v_usecount > 1)
ext2_itimes(vp);
VI_UNLOCK(vp);
- return (VOCALL(fifo_vnodeop_p, VOFFSET(vop_close), ap));
+ return (fifo_specops.vop_close(ap));
}
/*
@@ -1554,7 +1543,7 @@ ext2fifo_kqfilter(ap)
{
int error;
- error = VOCALL(fifo_vnodeop_p, VOFFSET(vop_kqfilter), ap);
+ error = fifo_specops.vop_kqfilter(ap);
if (error)
error = ext2_kqfilter(ap);
return (error);
@@ -1622,7 +1611,7 @@ ext2_advlock(ap)
int
ext2_vinit(mntp, fifoops, vpp)
struct mount *mntp;
- vop_t **fifoops;
+ struct vop_vector *fifoops;
struct vnode **vpp;
{
struct inode *ip;
OpenPOWER on IntegriCloud