From: Matthew Dillon Date: Fri, 13 Aug 2004 17:51:14 +0000 (+0000) Subject: VFS messaging/interfacing work stage 1/99. This stage replaces the old X-Git-Tag: v2.0.1~10526 X-Git-Url: https://gitweb.dragonflybsd.org/dragonfly.git/commitdiff_plain/2d3e977e265c8a4a48b58061b9d91ad235ed2265 VFS messaging/interfacing work stage 1/99. This stage replaces the old dynamic VFS descriptor and inlined wrapper mess with a fixed structure and fixed procedural wrappers. Most of the work is straightforward except for vfs_init, which was basically rewritten (and greatly simplified). It is my intention to make the vop_*() call wrappers eventually handle range locking and cache coherency issues as well as implementing the direct call -> messaging interface layer. The call wrappers will also API translation as we shift the APIs over to new, more powerful mechanisms in order to allow the work to be incrementally committed. This is the first stage of what is likely to be a huge number of stages to modernize the VFS subsystem. --- diff --git a/sys/bus/usb/usb/Makefile b/sys/bus/usb/usb/Makefile index 3bc8b04264..26826c09b5 100644 --- a/sys/bus/usb/usb/Makefile +++ b/sys/bus/usb/usb/Makefile @@ -1,13 +1,12 @@ # Makefile - module build for usb.ko # -# $DragonFly: src/sys/bus/usb/usb/Makefile,v 1.1 2004/03/17 18:12:57 dillon Exp $ +# $DragonFly: src/sys/bus/usb/usb/Makefile,v 1.2 2004/08/13 17:51:01 dillon Exp $ S = ${.CURDIR}/../../.. .PATH: $S/bus/pci $S/bus/usb KMOD = usb SRCS = bus_if.h device_if.h usb_if.h usb_if.c \ - vnode_if.h \ opt_usb.h \ hid.c hid.h usbhid.h \ uhub.c \ diff --git a/sys/checkpt/Makefile b/sys/checkpt/Makefile index aed469715e..7ffac7bb23 100644 --- a/sys/checkpt/Makefile +++ b/sys/checkpt/Makefile @@ -1,7 +1,7 @@ -# $DragonFly: src/sys/checkpt/Attic/Makefile,v 1.1 2003/10/20 04:48:42 dillon Exp $ +# $DragonFly: src/sys/checkpt/Attic/Makefile,v 1.2 2004/08/13 17:51:05 dillon Exp $ # KMOD= checkpt -SRCS= checkpt.c vnode_if.h support.c +SRCS= checkpt.c support.c .include diff --git a/sys/conf/Makefile.alpha b/sys/conf/Makefile.alpha index a68fd3ef28..8603cf873d 100644 --- a/sys/conf/Makefile.alpha +++ b/sys/conf/Makefile.alpha @@ -2,7 +2,7 @@ # Copyright 1990 W. Jolitz # from: @(#)Makefile.alpha 7.1 5/10/91 # $FreeBSD: src/sys/conf/Makefile.alpha,v 1.47.2.15 2002/11/18 11:26:49 ru Exp $ -# $DragonFly: src/sys/conf/Attic/Makefile.alpha,v 1.5 2004/05/21 10:47:45 hmp Exp $ +# $DragonFly: src/sys/conf/Attic/Makefile.alpha,v 1.6 2004/08/13 17:51:05 dillon Exp $ # # Makefile for DragonFly BSD # @@ -77,10 +77,10 @@ NORMAL_S= ${CC} -c ${ASM_CFLAGS} ${.IMPSRC} PROFILE_C= ${CC} -c ${CFLAGS} ${.IMPSRC} GEN_CFILES= $S/$M/$M/genassym.c -SYSTEM_CFILES= ioconf.c vnode_if.c config.c +SYSTEM_CFILES= ioconf.c config.c SYSTEM_SFILES= $S/$M/$M/locore.s SYSTEM_DEP= Makefile ${SYSTEM_OBJS} -SYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o config.o hack.So +SYSTEM_OBJS= locore.o ${OBJS} ioconf.o config.o hack.So SYSTEM_LD= @${LD} -Bdynamic -T $S/conf/ldscript.$M \ -e locorestart \ -export-dynamic -dynamic-linker /red/herring \ @@ -126,7 +126,7 @@ ${FULLKERNEL}: ${SYSTEM_DEP} vers.o ${SYSTEM_LD_TAIL} .if !exists(.depend) -${SYSTEM_OBJS}: vnode_if.h ${BEFORE_DEPEND:M*.h} +${SYSTEM_OBJS}: ${BEFORE_DEPEND:M*.h} .endif kernel-clean: @@ -208,7 +208,7 @@ __reml.S: $S/$M/$M/divrem.m4 ${SYSTEM_OBJS} genassym.o vers.o: opt_global.h -kernel-depend: assym.s vnode_if.h ${BEFORE_DEPEND} \ +kernel-depend: assym.s ${BEFORE_DEPEND} \ ${CFILES} ${SYSTEM_CFILES} ${GEN_CFILES} ${SFILES} ${SYSTEM_SFILES} rm -f .newdep mkdep -a -f .newdep ${CFLAGS} ${CFILES} ${SYSTEM_CFILES} ${GEN_CFILES} @@ -320,14 +320,14 @@ vers.c: $S/conf/newvers.sh $S/sys/param.h ${SYSTEM_DEP} vers.o: ${NORMAL_C} -vnode_if.c: $S/kern/vnode_if.pl $S/kern/vnode_if.src - perl5 $S/kern/vnode_if.pl -c $S/kern/vnode_if.src - -vnode_if.h: $S/kern/vnode_if.pl $S/kern/vnode_if.src - perl5 $S/kern/vnode_if.pl -h $S/kern/vnode_if.src - -vnode_if.o: - ${NORMAL_C} +#vnode_if.c: $S/kern/vnode_if.pl $S/kern/vnode_if.src +# perl5 $S/kern/vnode_if.pl -c $S/kern/vnode_if.src +# +#vnode_if.h: $S/kern/vnode_if.pl $S/kern/vnode_if.src +# perl5 $S/kern/vnode_if.pl -h $S/kern/vnode_if.src +# +#vnode_if.o: +# ${NORMAL_C} .include "$S/conf/bsd.kern.mk" diff --git a/sys/conf/Makefile.amd64 b/sys/conf/Makefile.amd64 index 560d49fc20..0b8a333ea9 100644 --- a/sys/conf/Makefile.amd64 +++ b/sys/conf/Makefile.amd64 @@ -1,7 +1,7 @@ # Makefile.amd64 -- with config changes. # Copyright 1990 W. Jolitz # from: @(#)Makefile.i386 7.1 5/10/91 -# $DragonFly: src/sys/conf/Attic/Makefile.amd64,v 1.3 2004/05/21 10:47:45 hmp Exp $ +# $DragonFly: src/sys/conf/Attic/Makefile.amd64,v 1.4 2004/08/13 17:51:05 dillon Exp $ # # Makefile for DragonFly BSD # @@ -87,10 +87,10 @@ NORMAL_M= perl5 $S/kern/makeobjops.pl -c $<; \ ${CC} -c ${CFLAGS} ${PROF} ${.PREFIX}.c GEN_CFILES= $S/$M/$M/genassym.c -SYSTEM_CFILES= ioconf.c vnode_if.c config.c +SYSTEM_CFILES= ioconf.c config.c SYSTEM_SFILES= $S/$M/$M/locore.s SYSTEM_DEP= Makefile ${SYSTEM_OBJS} -SYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o config.o hack.So +SYSTEM_OBJS= locore.o ${OBJS} ioconf.o config.o hack.So SYSTEM_LD= @${LD} -Bdynamic -T $S/conf/ldscript.$M \ -export-dynamic -dynamic-linker /red/herring \ -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o @@ -136,7 +136,7 @@ ${FULLKERNEL}: ${SYSTEM_DEP} vers.o ${SYSTEM_LD_TAIL} .if !exists(.depend) -${SYSTEM_OBJS}: vnode_if.h ${BEFORE_DEPEND:M*.h} ${MFILES:T:S/.m$/.h/} +${SYSTEM_OBJS}: ${BEFORE_DEPEND:M*.h} ${MFILES:T:S/.m$/.h/} .endif .for mfile in ${MFILES} @@ -182,7 +182,7 @@ ${SYSTEM_OBJS} genassym.o vers.o: opt_global.h # The argument list can be very long, use make -V and xargs to # pass it to mkdep. -kernel-depend: assym.s vnode_if.h ${BEFORE_DEPEND} \ +kernel-depend: assym.s ${BEFORE_DEPEND} \ ${CFILES} ${SYSTEM_CFILES} ${GEN_CFILES} ${SFILES} \ ${SYSTEM_SFILES} ${MFILES:T:S/.m$/.h/} rm -f .newdep @@ -298,14 +298,14 @@ vers.c: $S/conf/newvers.sh $S/sys/param.h ${SYSTEM_DEP} vers.o: ${NORMAL_C} -vnode_if.c: $S/kern/vnode_if.pl $S/kern/vnode_if.src - perl5 $S/kern/vnode_if.pl -c $S/kern/vnode_if.src - -vnode_if.h: $S/kern/vnode_if.pl $S/kern/vnode_if.src - perl5 $S/kern/vnode_if.pl -h $S/kern/vnode_if.src - -vnode_if.o: - ${NORMAL_C} +#vnode_if.c: $S/kern/vnode_if.pl $S/kern/vnode_if.src +# perl5 $S/kern/vnode_if.pl -c $S/kern/vnode_if.src +# +#vnode_if.h: $S/kern/vnode_if.pl $S/kern/vnode_if.src +# perl5 $S/kern/vnode_if.pl -h $S/kern/vnode_if.src +# +#vnode_if.o: +# ${NORMAL_C} .include "$S/conf/bsd.kern.mk" diff --git a/sys/conf/Makefile.i386 b/sys/conf/Makefile.i386 index a42b9edc7e..2567bbe046 100644 --- a/sys/conf/Makefile.i386 +++ b/sys/conf/Makefile.i386 @@ -2,7 +2,7 @@ # Copyright 1990 W. Jolitz # from: @(#)Makefile.i386 7.1 5/10/91 # $FreeBSD: src/sys/conf/Makefile.i386,v 1.179.2.16 2002/11/18 11:26:49 ru Exp $ -# $DragonFly: src/sys/conf/Attic/Makefile.i386,v 1.15 2004/05/21 10:47:45 hmp Exp $ +# $DragonFly: src/sys/conf/Attic/Makefile.i386,v 1.16 2004/08/13 17:51:05 dillon Exp $ # # Makefile for DragonFly BSD # @@ -88,10 +88,10 @@ NORMAL_M= awk -f $S/tools/makeobjops.awk -- -c $<; \ ${CC} -c ${CFLAGS} ${PROF} ${.PREFIX}.c GEN_CFILES= $S/$M/$M/genassym.c -SYSTEM_CFILES= ioconf.c vnode_if.c config.c +SYSTEM_CFILES= ioconf.c config.c SYSTEM_SFILES= $S/$M/$M/locore.s SYSTEM_DEP= Makefile ${SYSTEM_OBJS} -SYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o config.o hack.So +SYSTEM_OBJS= locore.o ${OBJS} ioconf.o config.o hack.So SYSTEM_LD= @${LD} -Bdynamic -T $S/conf/ldscript.$M \ -export-dynamic -dynamic-linker /red/herring \ -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o @@ -137,7 +137,7 @@ ${FULLKERNEL}: ${SYSTEM_DEP} vers.o ${SYSTEM_LD_TAIL} .if !exists(.depend) -${SYSTEM_OBJS}: vnode_if.h ${BEFORE_DEPEND:M*.h} ${MFILES:T:S/.m$/.h/} +${SYSTEM_OBJS}: ${BEFORE_DEPEND:M*.h} ${MFILES:T:S/.m$/.h/} .endif .for mfile in ${MFILES} @@ -183,7 +183,7 @@ ${SYSTEM_OBJS} genassym.o vers.o: opt_global.h # The argument list can be very long, use make -V and xargs to # pass it to mkdep. -kernel-depend: assym.s vnode_if.h ${BEFORE_DEPEND} \ +kernel-depend: assym.s ${BEFORE_DEPEND} \ ${CFILES} ${SYSTEM_CFILES} ${GEN_CFILES} ${SFILES} \ ${SYSTEM_SFILES} ${MFILES:T:S/.m$/.h/} rm -f .newdep @@ -299,14 +299,14 @@ vers.c: $S/conf/newvers.sh $S/sys/param.h ${SYSTEM_DEP} vers.o: ${NORMAL_C} -vnode_if.c: $S/tools/vnode_if.awk $S/kern/vnode_if.src - awk -f $S/tools/vnode_if.awk -- -c $S/kern/vnode_if.src - -vnode_if.h: $S/tools/vnode_if.awk $S/kern/vnode_if.src - awk -f $S/tools/vnode_if.awk -- -h $S/kern/vnode_if.src - -vnode_if.o: - ${NORMAL_C} +#vnode_if.c: $S/tools/vnode_if.awk $S/kern/vnode_if.src +# awk -f $S/tools/vnode_if.awk -- -c $S/kern/vnode_if.src +# +#vnode_if.h: $S/tools/vnode_if.awk $S/kern/vnode_if.src +# awk -f $S/tools/vnode_if.awk -- -h $S/kern/vnode_if.src +# +#vnode_if.o: +# ${NORMAL_C} .include "$S/conf/bsd.kern.mk" diff --git a/sys/conf/Makefile.pc98 b/sys/conf/Makefile.pc98 index 525532010d..0a0f9ce7d5 100644 --- a/sys/conf/Makefile.pc98 +++ b/sys/conf/Makefile.pc98 @@ -4,7 +4,7 @@ # Copyright 1990 W. Jolitz # from: @(#)Makefile.i386 7.1 5/10/91 # $FreeBSD: src/sys/conf/Makefile.pc98,v 1.82.2.17 2002/11/18 11:26:49 ru Exp $ -# $DragonFly: src/sys/conf/Attic/Makefile.pc98,v 1.5 2004/05/21 10:47:45 hmp Exp $ +# $DragonFly: src/sys/conf/Attic/Makefile.pc98,v 1.6 2004/08/13 17:51:05 dillon Exp $ # # Makefile for DragonFly BSD # @@ -79,10 +79,10 @@ NORMAL_S= ${CC} -c ${ASM_CFLAGS} ${.IMPSRC} PROFILE_C= ${CC} -c ${CFLAGS} ${.IMPSRC} GEN_CFILES= $S/$M/$M/genassym.c -SYSTEM_CFILES= ioconf.c vnode_if.c config.c +SYSTEM_CFILES= ioconf.c config.c SYSTEM_SFILES= $S/$M/$M/locore.s SYSTEM_DEP= Makefile ${SYSTEM_OBJS} -SYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o config.o hack.So +SYSTEM_OBJS= locore.o ${OBJS} ioconf.o config.o hack.So SYSTEM_LD= @${LD} -Bdynamic -T $S/conf/ldscript.$M \ -export-dynamic -dynamic-linker /red/herring \ -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o @@ -128,7 +128,7 @@ ${FULLKERNEL}: ${SYSTEM_DEP} vers.o ${SYSTEM_LD_TAIL} .if !exists(.depend) -${SYSTEM_OBJS}: vnode_if.h ${BEFORE_DEPEND:M*.h} +${SYSTEM_OBJS}: ${BEFORE_DEPEND:M*.h} .endif kernel-clean: @@ -168,7 +168,7 @@ ${SYSTEM_OBJS} genassym.o vers.o: opt_global.h # The argument list can be very long, use make -V and xargs to # pass it to mkdep. -kernel-depend: assym.s vnode_if.h ${BEFORE_DEPEND} \ +kernel-depend: assym.s ${BEFORE_DEPEND} \ ${CFILES} ${SYSTEM_CFILES} ${GEN_CFILES} ${SFILES} ${SYSTEM_SFILES} rm -f .newdep ${MAKE} -V CFILES -V SYSTEM_CFILES -V GEN_CFILES | xargs \ @@ -282,14 +282,14 @@ vers.c: $S/conf/newvers.sh $S/sys/param.h ${SYSTEM_DEP} vers.o: ${NORMAL_C} -vnode_if.c: $S/kern/vnode_if.pl $S/kern/vnode_if.src - perl5 $S/kern/vnode_if.pl -c $S/kern/vnode_if.src - -vnode_if.h: $S/kern/vnode_if.pl $S/kern/vnode_if.src - perl5 $S/kern/vnode_if.pl -h $S/kern/vnode_if.src - -vnode_if.o: - ${NORMAL_C} +#vnode_if.c: $S/kern/vnode_if.pl $S/kern/vnode_if.src +# perl5 $S/kern/vnode_if.pl -c $S/kern/vnode_if.src +# +#vnode_if.h: $S/kern/vnode_if.pl $S/kern/vnode_if.src +# perl5 $S/kern/vnode_if.pl -h $S/kern/vnode_if.src +# +#vnode_if.o: +# ${NORMAL_C} .include "$S/conf/bsd.kern.mk" diff --git a/sys/conf/files b/sys/conf/files index 7a840d2226..d8a5fd4cdb 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -1,5 +1,5 @@ # $FreeBSD: src/sys/conf/files,v 1.340.2.137 2003/06/04 17:10:30 sam Exp $ -# $DragonFly: src/sys/conf/files,v 1.69 2004/08/03 07:16:14 joerg Exp $ +# $DragonFly: src/sys/conf/files,v 1.70 2004/08/13 17:51:05 dillon Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -720,6 +720,7 @@ kern/vfs_lookup.c standard kern/vfs_subr.c standard kern/vfs_syscalls.c standard kern/vfs_vnops.c standard +kern/vfs_vopops.c standard kern/kern_threads.c standard kern/vfs_aio.c standard vfs/deadfs/dead_vnops.c standard diff --git a/sys/dev/disk/ccd/Makefile b/sys/dev/disk/ccd/Makefile index 17d9bd1b85..65b7959214 100644 --- a/sys/dev/disk/ccd/Makefile +++ b/sys/dev/disk/ccd/Makefile @@ -1,9 +1,9 @@ # $FreeBSD: src/sys/modules/ccd/Makefile,v 1.9 1999/11/28 18:52:42 bde Exp $ -# $DragonFly: src/sys/dev/disk/ccd/Makefile,v 1.3 2003/08/15 08:32:29 dillon Exp $ +# $DragonFly: src/sys/dev/disk/ccd/Makefile,v 1.4 2004/08/13 17:51:05 dillon Exp $ .PATH: ${.CURDIR}/../../dev/ccd KMOD= ccd -SRCS= ccd.c use_ccd.h vnode_if.h +SRCS= ccd.c use_ccd.h NOMAN= NCCD?= 4 diff --git a/sys/dev/disk/vn/Makefile b/sys/dev/disk/vn/Makefile index 1c925c40e0..021be33943 100644 --- a/sys/dev/disk/vn/Makefile +++ b/sys/dev/disk/vn/Makefile @@ -1,9 +1,9 @@ # $FreeBSD: src/sys/modules/vn/Makefile,v 1.5.2.1 2001/07/24 09:49:43 dd Exp $ -# $DragonFly: src/sys/dev/disk/vn/Makefile,v 1.2 2003/06/17 04:28:47 dillon Exp $ +# $DragonFly: src/sys/dev/disk/vn/Makefile,v 1.3 2004/08/13 17:51:05 dillon Exp $ .PATH: ${.CURDIR}/../../dev/vn KMOD= vn -SRCS= vn.c vnode_if.h +SRCS= vn.c NOMAN= .include diff --git a/sys/dev/misc/nmdm/Makefile b/sys/dev/misc/nmdm/Makefile index 42adedace6..1f51e5bb81 100644 --- a/sys/dev/misc/nmdm/Makefile +++ b/sys/dev/misc/nmdm/Makefile @@ -1,11 +1,11 @@ # $FreeBSD: src/sys/modules/nmdm/Makefile,v 1.1.2.1 2001/08/11 00:54:15 mp Exp $ -# $DragonFly: src/sys/dev/misc/nmdm/Makefile,v 1.2 2003/06/17 04:28:46 dillon Exp $ +# $DragonFly: src/sys/dev/misc/nmdm/Makefile,v 1.3 2004/08/13 17:51:05 dillon Exp $ .PATH: ${.CURDIR}/../../dev/nmdm KMOD= nmdm SRCS= nmdm.c -SRCS+= opt_compat.h vnode_if.h +SRCS+= opt_compat.h opt_compat.h: echo "#define COMPAT_43 1" >opt_compat.h diff --git a/sys/dev/misc/snp/Makefile b/sys/dev/misc/snp/Makefile index 029a794235..ef879f1d91 100644 --- a/sys/dev/misc/snp/Makefile +++ b/sys/dev/misc/snp/Makefile @@ -1,9 +1,9 @@ # $FreeBSD: src/sys/modules/snp/Makefile,v 1.3.2.1 2002/03/11 01:24:44 dd Exp $ -# $DragonFly: src/sys/dev/misc/snp/Makefile,v 1.2 2003/06/17 04:28:46 dillon Exp $ +# $DragonFly: src/sys/dev/misc/snp/Makefile,v 1.3 2004/08/13 17:51:06 dillon Exp $ .PATH: ${.CURDIR}/../../dev/snp KMOD= snp -SRCS= snp.c vnode_if.h +SRCS= snp.c .include diff --git a/sys/dev/raid/vinum/Makefile b/sys/dev/raid/vinum/Makefile index 9236853d46..03be615228 100644 --- a/sys/dev/raid/vinum/Makefile +++ b/sys/dev/raid/vinum/Makefile @@ -1,5 +1,5 @@ # $FreeBSD: src/sys/modules/vinum/Makefile,v 1.17 2000/01/04 23:46:41 grog Exp $ -# $DragonFly: src/sys/dev/raid/vinum/Makefile,v 1.3 2004/01/31 06:56:42 dillon Exp $ +# $DragonFly: src/sys/dev/raid/vinum/Makefile,v 1.4 2004/08/13 17:51:06 dillon Exp $ .PATH: ${.CURDIR}/../../dev/vinum KMOD= vinum @@ -8,7 +8,7 @@ SRCS= opt_vinum.h request.h vinum.c vinumconfig.c vinumdaemon.c \ vinumext.h vinumhdr.h vinuminterrupt.c vinumio.c vinumio.h \ vinumioctl.c vinumkw.h vinumlock.c vinummemory.c vinumparser.c \ vinumraid5.c vinumrequest.c vinumrevive.c vinumstate.c \ - vinumstate.h vinumutil.c vinumvar.h vnode_if.h + vinumstate.h vinumutil.c vinumvar.h NOMAN= diff --git a/sys/dev/sound/usb/Makefile b/sys/dev/sound/usb/Makefile index 0e0d4e6612..6dcb805a26 100644 --- a/sys/dev/sound/usb/Makefile +++ b/sys/dev/sound/usb/Makefile @@ -1,12 +1,11 @@ # $FreeBSD: src/sys/modules/usb/Makefile,v 1.7 2000/01/28 11:26:40 bde Exp $ -# $DragonFly: src/sys/dev/sound/usb/Attic/Makefile,v 1.3 2004/01/31 06:56:42 dillon Exp $ +# $DragonFly: src/sys/dev/sound/usb/Attic/Makefile,v 1.4 2004/08/13 17:51:06 dillon Exp $ S = ${.CURDIR}/../.. .PATH: $S/dev/usb $S/pci KMOD = usb SRCS = bus_if.h device_if.h usb_if.h usb_if.c \ - vnode_if.h \ opt_usb.h \ hid.c hid.h usbhid.h \ uhub.c \ diff --git a/sys/dev/usbmisc/ubsa/Makefile b/sys/dev/usbmisc/ubsa/Makefile index bde3a467e3..6a8d4b8b57 100644 --- a/sys/dev/usbmisc/ubsa/Makefile +++ b/sys/dev/usbmisc/ubsa/Makefile @@ -1,10 +1,10 @@ # $FreeBSD: src/sys/modules/ubsa/Makefile,v 1.1.2.2 2003/01/14 20:04:22 kan Exp $ -# $DragonFly: src/sys/dev/usbmisc/ubsa/Makefile,v 1.3 2003/08/15 08:32:31 dillon Exp $ +# $DragonFly: src/sys/dev/usbmisc/ubsa/Makefile,v 1.4 2004/08/13 17:51:06 dillon Exp $ .PATH: ${.CURDIR}/../ucom KMOD= ubsa -SRCS= ubsa.c ucomvar.h opt_usb.h device_if.h bus_if.h vnode_if.h +SRCS= ubsa.c ucomvar.h opt_usb.h device_if.h bus_if.h NOMAN= KMODDEPS= ucom diff --git a/sys/dev/usbmisc/ucom/Makefile b/sys/dev/usbmisc/ucom/Makefile index ce984e9e62..cc43e9d6d4 100644 --- a/sys/dev/usbmisc/ucom/Makefile +++ b/sys/dev/usbmisc/ucom/Makefile @@ -1,11 +1,11 @@ # $FreeBSD: src/sys/modules/ucom/Makefile,v 1.1.2.1 2002/08/08 18:45:05 joe Exp $ -# $DragonFly: src/sys/dev/usbmisc/ucom/Makefile,v 1.2 2003/06/17 04:28:47 dillon Exp $ +# $DragonFly: src/sys/dev/usbmisc/ucom/Makefile,v 1.3 2004/08/13 17:51:06 dillon Exp $ S= ${.CURDIR}/../.. .PATH: $S/dev/usb KMOD= ucom -SRCS= ucom.c ucomvar.h opt_usb.h device_if.h bus_if.h vnode_if.h +SRCS= ucom.c ucomvar.h opt_usb.h device_if.h bus_if.h NOMAN= .include diff --git a/sys/dev/usbmisc/ufm/Makefile b/sys/dev/usbmisc/ufm/Makefile index cc3799859c..673156cc76 100644 --- a/sys/dev/usbmisc/ufm/Makefile +++ b/sys/dev/usbmisc/ufm/Makefile @@ -1,9 +1,9 @@ # $FreeBSD: src/sys/modules/ufm/Makefile,v 1.1.2.1 2002/03/04 04:01:36 alfred Exp $ -# $DragonFly: src/sys/dev/usbmisc/ufm/Makefile,v 1.3 2003/08/15 08:32:31 dillon Exp $ +# $DragonFly: src/sys/dev/usbmisc/ufm/Makefile,v 1.4 2004/08/13 17:51:06 dillon Exp $ .PATH: ${.CURDIR}/../../dev/usb ${.CURDIR}/../../../bus/usb KMOD= ufm -SRCS= bus_if.h device_if.h vnode_if.h opt_usb.h ufm.c dsbr100io.h +SRCS= bus_if.h device_if.h opt_usb.h ufm.c dsbr100io.h NOMAN= YES .include diff --git a/sys/dev/usbmisc/uftdi/Makefile b/sys/dev/usbmisc/uftdi/Makefile index 024aec2beb..7bd4632af9 100644 --- a/sys/dev/usbmisc/uftdi/Makefile +++ b/sys/dev/usbmisc/uftdi/Makefile @@ -1,11 +1,11 @@ # $FreeBSD: src/sys/modules/uftdi/Makefile,v 1.1.2.1 2002/11/21 01:28:18 ticso Exp $ -# $DragonFly: src/sys/dev/usbmisc/uftdi/Makefile,v 1.2 2003/06/17 04:28:47 dillon Exp $ +# $DragonFly: src/sys/dev/usbmisc/uftdi/Makefile,v 1.3 2004/08/13 17:51:06 dillon Exp $ S= ${.CURDIR}/../.. .PATH: $S/dev/usb KMOD= uftdi -SRCS= uftdi.c uftdireg.h opt_usb.h device_if.h bus_if.h vnode_if.h +SRCS= uftdi.c uftdireg.h opt_usb.h device_if.h bus_if.h NOMAN= .include diff --git a/sys/dev/usbmisc/ugen/Makefile b/sys/dev/usbmisc/ugen/Makefile index d5551f1ced..ae851d16f4 100644 --- a/sys/dev/usbmisc/ugen/Makefile +++ b/sys/dev/usbmisc/ugen/Makefile @@ -1,9 +1,9 @@ # $FreeBSD: src/sys/modules/ugen/Makefile,v 1.7 1999/11/28 18:53:28 bde Exp $ -# $DragonFly: src/sys/dev/usbmisc/ugen/Makefile,v 1.4 2004/07/08 03:53:54 dillon Exp $ +# $DragonFly: src/sys/dev/usbmisc/ugen/Makefile,v 1.5 2004/08/13 17:51:07 dillon Exp $ .PATH: ${.CURDIR}/../../dev/usb KMOD = ugen -SRCS = bus_if.h device_if.h vnode_if.h opt_usb.h ugen.c ugenbuf.c +SRCS = bus_if.h device_if.h opt_usb.h ugen.c ugenbuf.c NOMAN = .include diff --git a/sys/dev/usbmisc/uhid/Makefile b/sys/dev/usbmisc/uhid/Makefile index ac97719b98..c633177dab 100644 --- a/sys/dev/usbmisc/uhid/Makefile +++ b/sys/dev/usbmisc/uhid/Makefile @@ -1,9 +1,9 @@ # $FreeBSD: src/sys/modules/uhid/Makefile,v 1.7 1999/11/28 18:53:30 bde Exp $ -# $DragonFly: src/sys/dev/usbmisc/uhid/Makefile,v 1.3 2004/01/31 06:56:28 dillon Exp $ +# $DragonFly: src/sys/dev/usbmisc/uhid/Makefile,v 1.4 2004/08/13 17:51:07 dillon Exp $ .PATH: ${.CURDIR}/../../dev/usb KMOD = uhid -SRCS = bus_if.h device_if.h vnode_if.h opt_usb.h uhid.c +SRCS = bus_if.h device_if.h opt_usb.h uhid.c NOMAN = .include diff --git a/sys/dev/usbmisc/ukbd/Makefile b/sys/dev/usbmisc/ukbd/Makefile index 0bcc152329..01050b25e3 100644 --- a/sys/dev/usbmisc/ukbd/Makefile +++ b/sys/dev/usbmisc/ukbd/Makefile @@ -1,9 +1,9 @@ # $FreeBSD: src/sys/modules/ukbd/Makefile,v 1.10 2000/01/20 13:25:18 yokota Exp $ -# $DragonFly: src/sys/dev/usbmisc/ukbd/Makefile,v 1.3 2004/01/31 06:56:31 dillon Exp $ +# $DragonFly: src/sys/dev/usbmisc/ukbd/Makefile,v 1.4 2004/08/13 17:51:07 dillon Exp $ .PATH: ${.CURDIR}/../../dev/usb KMOD = ukbd -SRCS = bus_if.h device_if.h vnode_if.h \ +SRCS = bus_if.h device_if.h \ opt_usb.h opt_kbd.h opt_ukbd.h \ ukbd.c NOMAN = diff --git a/sys/dev/usbmisc/ulpt/Makefile b/sys/dev/usbmisc/ulpt/Makefile index 2115d991b4..f51c070e46 100644 --- a/sys/dev/usbmisc/ulpt/Makefile +++ b/sys/dev/usbmisc/ulpt/Makefile @@ -1,9 +1,9 @@ # $FreeBSD: src/sys/modules/ulpt/Makefile,v 1.7 1999/11/28 18:53:32 bde Exp $ -# $DragonFly: src/sys/dev/usbmisc/ulpt/Makefile,v 1.3 2004/01/31 06:56:32 dillon Exp $ +# $DragonFly: src/sys/dev/usbmisc/ulpt/Makefile,v 1.4 2004/08/13 17:51:07 dillon Exp $ .PATH: ${.CURDIR}/../../dev/usb KMOD = ulpt -SRCS = bus_if.h device_if.h vnode_if.h opt_usb.h ulpt.c +SRCS = bus_if.h device_if.h opt_usb.h ulpt.c NOMAN = .include diff --git a/sys/dev/usbmisc/umodem/Makefile b/sys/dev/usbmisc/umodem/Makefile index c0e507b963..b697dfd75e 100644 --- a/sys/dev/usbmisc/umodem/Makefile +++ b/sys/dev/usbmisc/umodem/Makefile @@ -1,9 +1,9 @@ # $FreeBSD: src/sys/modules/umodem/Makefile,v 1.7 1999/11/28 18:53:35 bde Exp $ -# $DragonFly: src/sys/dev/usbmisc/umodem/Makefile,v 1.3 2004/01/31 06:56:35 dillon Exp $ +# $DragonFly: src/sys/dev/usbmisc/umodem/Makefile,v 1.4 2004/08/13 17:51:07 dillon Exp $ .PATH: ${.CURDIR}/../../dev/usb KMOD = umodem -SRCS = bus_if.h device_if.h vnode_if.h opt_usb.h umodem.c +SRCS = bus_if.h device_if.h opt_usb.h umodem.c NOMAN = .include diff --git a/sys/dev/usbmisc/ums/Makefile b/sys/dev/usbmisc/ums/Makefile index 83a91a38f7..a52a0b489b 100644 --- a/sys/dev/usbmisc/ums/Makefile +++ b/sys/dev/usbmisc/ums/Makefile @@ -1,9 +1,9 @@ # $FreeBSD: src/sys/modules/ums/Makefile,v 1.7 1999/11/28 18:53:37 bde Exp $ -# $DragonFly: src/sys/dev/usbmisc/ums/Makefile,v 1.3 2004/01/31 06:56:35 dillon Exp $ +# $DragonFly: src/sys/dev/usbmisc/ums/Makefile,v 1.4 2004/08/13 17:51:07 dillon Exp $ .PATH: ${.CURDIR}/../../dev/usb KMOD = ums -SRCS = bus_if.h device_if.h vnode_if.h opt_usb.h ums.c +SRCS = bus_if.h device_if.h opt_usb.h ums.c NOMAN = .include diff --git a/sys/dev/usbmisc/uplcom/Makefile b/sys/dev/usbmisc/uplcom/Makefile index 25f2dd199b..eeed9a7d6b 100644 --- a/sys/dev/usbmisc/uplcom/Makefile +++ b/sys/dev/usbmisc/uplcom/Makefile @@ -1,10 +1,10 @@ # $FreeBSD: src/sys/modules/uplcom/Makefile,v 1.1.2.2 2002/08/11 20:05:20 joe Exp $ -# $DragonFly: src/sys/dev/usbmisc/uplcom/Makefile,v 1.3 2003/08/15 08:32:31 dillon Exp $ +# $DragonFly: src/sys/dev/usbmisc/uplcom/Makefile,v 1.4 2004/08/13 17:51:07 dillon Exp $ .PATH: ${.CURDIR}/../ucom KMOD= uplcom -SRCS= uplcom.c ucomvar.h opt_usb.h device_if.h bus_if.h vnode_if.h +SRCS= uplcom.c ucomvar.h opt_usb.h device_if.h bus_if.h NOMAN= KMODDEPS= ucom diff --git a/sys/dev/usbmisc/uscanner/Makefile b/sys/dev/usbmisc/uscanner/Makefile index b8431ef403..cb79e33ab4 100644 --- a/sys/dev/usbmisc/uscanner/Makefile +++ b/sys/dev/usbmisc/uscanner/Makefile @@ -1,9 +1,9 @@ # $FreeBSD: src/sys/modules/uscanner/Makefile,v 1.1.2.1 2000/10/31 23:16:08 n_hibma Exp $ -# $DragonFly: src/sys/dev/usbmisc/uscanner/Makefile,v 1.3 2004/01/31 06:56:36 dillon Exp $ +# $DragonFly: src/sys/dev/usbmisc/uscanner/Makefile,v 1.4 2004/08/13 17:51:07 dillon Exp $ .PATH: ${.CURDIR}/../../dev/usb KMOD = uscanner -SRCS = bus_if.h device_if.h vnode_if.h opt_usb.h uscanner.c +SRCS = bus_if.h device_if.h opt_usb.h uscanner.c NOMAN = CFLAGS += -g diff --git a/sys/dev/usbmisc/uvisor/Makefile b/sys/dev/usbmisc/uvisor/Makefile index e63142efc4..e49e6d81de 100644 --- a/sys/dev/usbmisc/uvisor/Makefile +++ b/sys/dev/usbmisc/uvisor/Makefile @@ -1,10 +1,10 @@ # $FreeBSD: src/sys/modules/uvisor/Makefile,v 1.1.2.2 2002/08/11 20:05:20 joe Exp $ -# $DragonFly: src/sys/dev/usbmisc/uvisor/Makefile,v 1.3 2003/08/15 08:32:31 dillon Exp $ +# $DragonFly: src/sys/dev/usbmisc/uvisor/Makefile,v 1.4 2004/08/13 17:51:07 dillon Exp $ .PATH: ${.CURDIR}/../ucom KMOD= uvisor -SRCS= uvisor.c ucomvar.h opt_usb.h device_if.h bus_if.h vnode_if.h +SRCS= uvisor.c ucomvar.h opt_usb.h device_if.h bus_if.h NOMAN= KMODDEPS= ucom diff --git a/sys/dev/usbmisc/uvscom/Makefile b/sys/dev/usbmisc/uvscom/Makefile index b0a43479e3..b31ee68a17 100644 --- a/sys/dev/usbmisc/uvscom/Makefile +++ b/sys/dev/usbmisc/uvscom/Makefile @@ -1,10 +1,10 @@ # $FreeBSD: src/sys/modules/uvscom/Makefile,v 1.1.2.2 2002/08/11 20:05:20 joe Exp $ -# $DragonFly: src/sys/dev/usbmisc/uvscom/Makefile,v 1.3 2003/08/15 08:32:31 dillon Exp $ +# $DragonFly: src/sys/dev/usbmisc/uvscom/Makefile,v 1.4 2004/08/13 17:51:08 dillon Exp $ .PATH: ${.CURDIR}/../ucom KMOD= uvscom -SRCS= uvscom.c ucomvar.h opt_usb.h device_if.h bus_if.h vnode_if.h +SRCS= uvscom.c ucomvar.h opt_usb.h device_if.h bus_if.h NOMAN= KMODDEPS= ucom diff --git a/sys/dev/video/bktr/bktr/Makefile b/sys/dev/video/bktr/bktr/Makefile index 9b13319ff6..d02aa333a0 100644 --- a/sys/dev/video/bktr/bktr/Makefile +++ b/sys/dev/video/bktr/bktr/Makefile @@ -1,13 +1,13 @@ # Makefile for the bktr Brooktree Bt848/Bt878 PCI video capture device # $FreeBSD: src/sys/modules/bktr/bktr/Makefile,v 1.1.2.3 2001/07/24 09:51:06 dd Exp $ -# $DragonFly: src/sys/dev/video/bktr/bktr/Makefile,v 1.4 2004/01/07 03:15:01 dillon Exp $ +# $DragonFly: src/sys/dev/video/bktr/bktr/Makefile,v 1.5 2004/08/13 17:51:08 dillon Exp $ .PATH: ${.CURDIR}/.. KMOD= bktr SRCS= bktr_core.c bktr_os.c bktr_audio.c bktr_tuner.c bktr_card.c \ use_bktr.h opt_bktr.h use_smbus.h bus_if.h device_if.h \ - pci_if.h vnode_if.h + pci_if.h CLEANFILES= use_bktr.h use_smbus.h KMODDEPS= bktr_mem diff --git a/sys/emulation/ibcs2/Makefile b/sys/emulation/ibcs2/Makefile index 2c6f20e434..37f4b0ae04 100644 --- a/sys/emulation/ibcs2/Makefile +++ b/sys/emulation/ibcs2/Makefile @@ -1,5 +1,5 @@ # $FreeBSD: src/sys/modules/ibcs2/Makefile,v 1.26.2.3 2002/08/07 16:31:56 ru Exp $ -# $DragonFly: src/sys/emulation/ibcs2/Attic/Makefile,v 1.3 2003/08/15 06:32:47 dillon Exp $ +# $DragonFly: src/sys/emulation/ibcs2/Attic/Makefile,v 1.4 2004/08/13 17:51:08 dillon Exp $ .PATH: ${.CURDIR}/../../emulation/ibcs2/i386 KMOD= ibcs2 @@ -8,7 +8,7 @@ SRCS= ibcs2_errno.c ibcs2_ipc.c ibcs2_stat.c ibcs2_misc.c \ ibcs2_socksys.c ibcs2_util.c ibcs2_xenix.c ibcs2_xenix_sysent.c \ ibcs2_isc.c ibcs2_isc_sysent.c \ ibcs2_msg.c ibcs2_other.c ibcs2_sysi86.c ibcs2_sysvec.c \ - vnode_if.h opt_spx_hack.h + opt_spx_hack.h MAN= ibcs2.8 CFLAGS+= -DCOMPAT_IBCS2 diff --git a/sys/emulation/ibcs2/coff/Makefile b/sys/emulation/ibcs2/coff/Makefile index 29a4e5b751..9c3afcf767 100644 --- a/sys/emulation/ibcs2/coff/Makefile +++ b/sys/emulation/ibcs2/coff/Makefile @@ -1,9 +1,9 @@ # $FreeBSD: src/sys/modules/coff/Makefile,v 1.10 1999/11/28 18:52:45 bde Exp $ -# $DragonFly: src/sys/emulation/ibcs2/coff/Attic/Makefile,v 1.2 2003/06/17 04:28:43 dillon Exp $ +# $DragonFly: src/sys/emulation/ibcs2/coff/Attic/Makefile,v 1.3 2004/08/13 17:51:08 dillon Exp $ .PATH: ${.CURDIR}/../../i386/ibcs2 KMOD= ibcs2_coff -SRCS= imgact_coff.c vnode_if.h +SRCS= imgact_coff.c NOMAN= CFLAGS+= -DCOMPAT_IBCS2 KMODDEPS= ibcs2 diff --git a/sys/emulation/linux/Makefile b/sys/emulation/linux/Makefile index 4962423c3e..8b2732f94a 100644 --- a/sys/emulation/linux/Makefile +++ b/sys/emulation/linux/Makefile @@ -1,5 +1,5 @@ # $FreeBSD: src/sys/modules/linux/Makefile,v 1.34.2.12 2003/01/02 20:41:34 kan Exp $ -# $DragonFly: src/sys/emulation/linux/Makefile,v 1.5 2004/02/22 12:11:00 joerg Exp $ +# $DragonFly: src/sys/emulation/linux/Makefile,v 1.6 2004/08/13 17:51:08 dillon Exp $ .PATH: ${.CURDIR}/../../emulation/linux ${.CURDIR}/../../emulation/linux/${MACHINE_ARCH} @@ -8,7 +8,7 @@ KMOD= linux SRCS= linux_dummy.c linux_file.c linux_getcwd.c linux_ioctl.c linux_ipc.c \ linux_machdep.c linux_mib.c linux_misc.c linux_signal.c linux_socket.c \ linux_stats.c linux_sysctl.c linux_sysent.c linux_sysvec.c \ - linux_util.c opt_compat.h opt_linux.h opt_vmpage.h vnode_if.h + linux_util.c opt_compat.h opt_linux.h opt_vmpage.h OBJS= linux_locore.o MAN= linux.8 diff --git a/sys/emulation/linux/i386/linprocfs/Makefile b/sys/emulation/linux/i386/linprocfs/Makefile index d0b9136a68..105c64f1db 100644 --- a/sys/emulation/linux/i386/linprocfs/Makefile +++ b/sys/emulation/linux/i386/linprocfs/Makefile @@ -1,9 +1,9 @@ # $FreeBSD: src/sys/modules/linprocfs/Makefile,v 1.1.2.3 2000/06/06 11:53:28 des Exp $ -# $DragonFly: src/sys/emulation/linux/i386/linprocfs/Makefile,v 1.5 2004/08/13 02:59:29 dillon Exp $ +# $DragonFly: src/sys/emulation/linux/i386/linprocfs/Makefile,v 1.6 2004/08/13 17:51:08 dillon Exp $ .PATH: ${.CURDIR}/../../../../emulation/linux/i386/linprocfs KMOD= linprocfs -SRCS= vnode_if.h linprocfs_misc.c linprocfs_subr.c \ +SRCS= linprocfs_misc.c linprocfs_subr.c \ linprocfs_vfsops.c linprocfs_vnops.c NOMAN= CFLAGS+= -DLINPROCFS diff --git a/sys/emulation/linux/i386/linprocfs/linprocfs.h b/sys/emulation/linux/i386/linprocfs/linprocfs.h index f5b0dcd2a7..fe9a2bdb9a 100644 --- a/sys/emulation/linux/i386/linprocfs/linprocfs.h +++ b/sys/emulation/linux/i386/linprocfs/linprocfs.h @@ -39,7 +39,7 @@ * @(#)procfs.h 8.9 (Berkeley) 5/14/95 * * $FreeBSD: src/sys/i386/linux/linprocfs/linprocfs.h,v 1.2.2.4 2001/06/25 19:46:47 pirzyk Exp $ - * $DragonFly: src/sys/emulation/linux/i386/linprocfs/linprocfs.h,v 1.6 2004/08/13 02:59:29 dillon Exp $ + * $DragonFly: src/sys/emulation/linux/i386/linprocfs/linprocfs.h,v 1.7 2004/08/13 17:51:08 dillon Exp $ */ /* @@ -142,7 +142,7 @@ int linprocfs_validfile (struct proc *); #define PROCFS_LOCKED 0x01 #define PROCFS_WANT 0x02 -extern vop_t **linprocfs_vnodeop_p; +extern struct vop_ops *linprocfs_vnode_vops; int linprocfs_root (struct mount *, struct vnode **); int linprocfs_rw (struct vop_read_args *); diff --git a/sys/emulation/linux/i386/linprocfs/linprocfs_subr.c b/sys/emulation/linux/i386/linprocfs/linprocfs_subr.c index d64eecdc4e..9ba8b179ba 100644 --- a/sys/emulation/linux/i386/linprocfs/linprocfs_subr.c +++ b/sys/emulation/linux/i386/linprocfs/linprocfs_subr.c @@ -39,7 +39,7 @@ * @(#)procfs_subr.c 8.6 (Berkeley) 5/14/95 * * $FreeBSD: src/sys/i386/linux/linprocfs/linprocfs_subr.c,v 1.3.2.4 2001/06/25 19:46:47 pirzyk Exp $ - * $DragonFly: src/sys/emulation/linux/i386/linprocfs/linprocfs_subr.c,v 1.9 2004/08/13 02:59:29 dillon Exp $ + * $DragonFly: src/sys/emulation/linux/i386/linprocfs/linprocfs_subr.c,v 1.10 2004/08/13 17:51:08 dillon Exp $ */ #include @@ -124,7 +124,7 @@ loop: */ MALLOC(pfs, struct pfsnode *, sizeof(struct pfsnode), M_TEMP, M_WAITOK); - if ((error = getnewvnode(VT_PROCFS, mp, linprocfs_vnodeop_p, vpp)) != 0) { + if ((error = getnewvnode(VT_PROCFS, mp, linprocfs_vnode_vops, vpp)) != 0) { FREE(pfs, M_TEMP); goto out; } diff --git a/sys/emulation/linux/i386/linprocfs/linprocfs_vnops.c b/sys/emulation/linux/i386/linprocfs/linprocfs_vnops.c index 866d064c74..cda57774fc 100644 --- a/sys/emulation/linux/i386/linprocfs/linprocfs_vnops.c +++ b/sys/emulation/linux/i386/linprocfs/linprocfs_vnops.c @@ -39,7 +39,7 @@ * @(#)procfs_vnops.c 8.18 (Berkeley) 5/21/95 * * $FreeBSD: src/sys/i386/linux/linprocfs/linprocfs_vnops.c,v 1.3.2.5 2001/08/12 14:29:19 rwatson Exp $ - * $DragonFly: src/sys/emulation/linux/i386/linprocfs/linprocfs_vnops.c,v 1.14 2004/08/13 02:59:29 dillon Exp $ + * $DragonFly: src/sys/emulation/linux/i386/linprocfs/linprocfs_vnops.c,v 1.15 2004/08/13 17:51:08 dillon Exp $ */ /* @@ -1017,37 +1017,37 @@ atopid(b, len) /* * procfs vnode operations. */ -vop_t **linprocfs_vnodeop_p; +struct vop_ops *linprocfs_vnode_vops; static struct vnodeopv_entry_desc linprocfs_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) vop_defaultop }, - { &vop_access_desc, (vop_t *) linprocfs_access }, - { &vop_advlock_desc, (vop_t *) linprocfs_badop }, - { &vop_bmap_desc, (vop_t *) linprocfs_bmap }, - { &vop_close_desc, (vop_t *) linprocfs_close }, - { &vop_create_desc, (vop_t *) linprocfs_badop }, - { &vop_getattr_desc, (vop_t *) linprocfs_getattr }, - { &vop_inactive_desc, (vop_t *) linprocfs_inactive }, - { &vop_link_desc, (vop_t *) linprocfs_badop }, - { &vop_lookup_desc, (vop_t *) linprocfs_lookup }, - { &vop_mkdir_desc, (vop_t *) linprocfs_badop }, - { &vop_mknod_desc, (vop_t *) linprocfs_badop }, - { &vop_open_desc, (vop_t *) linprocfs_open }, - { &vop_pathconf_desc, (vop_t *) vop_stdpathconf }, - { &vop_print_desc, (vop_t *) linprocfs_print }, - { &vop_read_desc, (vop_t *) linprocfs_rw }, - { &vop_readdir_desc, (vop_t *) linprocfs_readdir }, - { &vop_readlink_desc, (vop_t *) linprocfs_readlink }, - { &vop_reclaim_desc, (vop_t *) linprocfs_reclaim }, - { &vop_remove_desc, (vop_t *) linprocfs_badop }, - { &vop_rename_desc, (vop_t *) linprocfs_badop }, - { &vop_rmdir_desc, (vop_t *) linprocfs_badop }, - { &vop_setattr_desc, (vop_t *) linprocfs_setattr }, - { &vop_symlink_desc, (vop_t *) linprocfs_badop }, - { &vop_write_desc, (vop_t *) linprocfs_rw }, - { &vop_ioctl_desc, (vop_t *) linprocfs_ioctl }, + { &vop_default_desc, vop_defaultop }, + { &vop_access_desc, (void *) linprocfs_access }, + { &vop_advlock_desc, (void *) linprocfs_badop }, + { &vop_bmap_desc, (void *) linprocfs_bmap }, + { &vop_close_desc, (void *) linprocfs_close }, + { &vop_create_desc, (void *) linprocfs_badop }, + { &vop_getattr_desc, (void *) linprocfs_getattr }, + { &vop_inactive_desc, (void *) linprocfs_inactive }, + { &vop_link_desc, (void *) linprocfs_badop }, + { &vop_lookup_desc, (void *) linprocfs_lookup }, + { &vop_mkdir_desc, (void *) linprocfs_badop }, + { &vop_mknod_desc, (void *) linprocfs_badop }, + { &vop_open_desc, (void *) linprocfs_open }, + { &vop_pathconf_desc, (void *) vop_stdpathconf }, + { &vop_print_desc, (void *) linprocfs_print }, + { &vop_read_desc, (void *) linprocfs_rw }, + { &vop_readdir_desc, (void *) linprocfs_readdir }, + { &vop_readlink_desc, (void *) linprocfs_readlink }, + { &vop_reclaim_desc, (void *) linprocfs_reclaim }, + { &vop_remove_desc, (void *) linprocfs_badop }, + { &vop_rename_desc, (void *) linprocfs_badop }, + { &vop_rmdir_desc, (void *) linprocfs_badop }, + { &vop_setattr_desc, (void *) linprocfs_setattr }, + { &vop_symlink_desc, (void *) linprocfs_badop }, + { &vop_write_desc, (void *) linprocfs_rw }, + { &vop_ioctl_desc, (void *) linprocfs_ioctl }, { NULL, NULL } }; static struct vnodeopv_desc linprocfs_vnodeop_opv_desc = - { &linprocfs_vnodeop_p, linprocfs_vnodeop_entries }; + { &linprocfs_vnode_vops, linprocfs_vnodeop_entries }; VNODEOP_SET(linprocfs_vnodeop_opv_desc); diff --git a/sys/emulation/ndis/Makefile b/sys/emulation/ndis/Makefile index 8d42521138..dcebb4d1c6 100644 --- a/sys/emulation/ndis/Makefile +++ b/sys/emulation/ndis/Makefile @@ -1,9 +1,9 @@ -# $DragonFly: src/sys/emulation/ndis/Makefile,v 1.1 2004/07/29 20:51:33 dillon Exp $ +# $DragonFly: src/sys/emulation/ndis/Makefile,v 1.2 2004/08/13 17:51:08 dillon Exp $ # KMOD= ndis SRCS= subr_pe.c subr_ndis.c subr_hal.c subr_ntoskrnl.c kern_ndis.c -SRCS+= opt_bdg.h device_if.h bus_if.h pci_if.h vnode_if.h +SRCS+= opt_bdg.h device_if.h bus_if.h pci_if.h .include diff --git a/sys/emulation/svr4/Makefile b/sys/emulation/svr4/Makefile index 2cb7320455..cd8e08808e 100644 --- a/sys/emulation/svr4/Makefile +++ b/sys/emulation/svr4/Makefile @@ -1,7 +1,7 @@ # Makefile for syscall tables # # $FreeBSD: src/sys/svr4/Makefile,v 1.3 1999/09/01 00:32:18 newton Exp $ -# $DragonFly: src/sys/emulation/svr4/Attic/Makefile,v 1.8 2004/02/16 20:48:35 dillon Exp $ +# $DragonFly: src/sys/emulation/svr4/Attic/Makefile,v 1.9 2004/08/13 17:51:09 dillon Exp $ # This builds the module # @@ -10,7 +10,7 @@ ARCH= arch_svr4 KMOD= svr4 SRCS= svr4_sysent.c svr4_sysvec.c opt_compat.h opt_svr4.h opt_vmpage.h \ - vnode_if.h imgact_svr4.c svr4_signal.c svr4_fcntl.c svr4_misc.c \ + imgact_svr4.c svr4_signal.c svr4_fcntl.c svr4_misc.c \ svr4_ioctl.c svr4_stat.c svr4_filio.c svr4_ttold.c svr4_termios.c \ svr4_stream.c svr4_socket.c svr4_sockio.c svr4_machdep.c \ svr4_resource.c svr4_ipc.c diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c index 7109036267..887ed925eb 100644 --- a/sys/kern/vfs_default.c +++ b/sys/kern/vfs_default.c @@ -37,7 +37,7 @@ * * * $FreeBSD: src/sys/kern/vfs_default.c,v 1.28.2.7 2003/01/10 18:23:26 bde Exp $ - * $DragonFly: src/sys/kern/vfs_default.c,v 1.10 2004/05/19 22:52:58 dillon Exp $ + * $DragonFly: src/sys/kern/vfs_default.c,v 1.11 2004/08/13 17:51:09 dillon Exp $ */ #include @@ -71,40 +71,40 @@ static int vop_nostrategy (struct vop_strategy_args *); * */ -vop_t **default_vnodeop_p; +struct vop_ops *default_vnode_vops; static struct vnodeopv_entry_desc default_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) vop_eopnotsupp }, - { &vop_advlock_desc, (vop_t *) vop_einval }, - { &vop_bwrite_desc, (vop_t *) vop_stdbwrite }, - { &vop_close_desc, (vop_t *) vop_null }, - { &vop_createvobject_desc, (vop_t *) vop_stdcreatevobject }, - { &vop_destroyvobject_desc, (vop_t *) vop_stddestroyvobject }, - { &vop_fsync_desc, (vop_t *) vop_null }, - { &vop_getvobject_desc, (vop_t *) vop_stdgetvobject }, - { &vop_ioctl_desc, (vop_t *) vop_enotty }, - { &vop_islocked_desc, (vop_t *) vop_noislocked }, - { &vop_lease_desc, (vop_t *) vop_null }, - { &vop_lock_desc, (vop_t *) vop_nolock }, - { &vop_mmap_desc, (vop_t *) vop_einval }, - { &vop_lookup_desc, (vop_t *) vop_nolookup }, - { &vop_open_desc, (vop_t *) vop_null }, - { &vop_pathconf_desc, (vop_t *) vop_einval }, - { &vop_poll_desc, (vop_t *) vop_nopoll }, - { &vop_readlink_desc, (vop_t *) vop_einval }, - { &vop_reallocblks_desc, (vop_t *) vop_eopnotsupp }, - { &vop_revoke_desc, (vop_t *) vop_revoke }, - { &vop_strategy_desc, (vop_t *) vop_nostrategy }, - { &vop_unlock_desc, (vop_t *) vop_nounlock }, - { &vop_getacl_desc, (vop_t *) vop_eopnotsupp }, - { &vop_setacl_desc, (vop_t *) vop_eopnotsupp }, - { &vop_aclcheck_desc, (vop_t *) vop_eopnotsupp }, - { &vop_getextattr_desc, (vop_t *) vop_eopnotsupp }, - { &vop_setextattr_desc, (vop_t *) vop_eopnotsupp }, + { &vop_default_desc, vop_eopnotsupp }, + { &vop_advlock_desc, vop_einval }, + { &vop_bwrite_desc, (void *) vop_stdbwrite }, + { &vop_close_desc, vop_null }, + { &vop_createvobject_desc, (void *) vop_stdcreatevobject }, + { &vop_destroyvobject_desc, (void *) vop_stddestroyvobject }, + { &vop_fsync_desc, vop_null }, + { &vop_getvobject_desc, (void *) vop_stdgetvobject }, + { &vop_ioctl_desc, vop_enotty }, + { &vop_islocked_desc, (void *) vop_noislocked }, + { &vop_lease_desc, vop_null }, + { &vop_lock_desc, (void *) vop_nolock }, + { &vop_mmap_desc, vop_einval }, + { &vop_lookup_desc, (void *) vop_nolookup }, + { &vop_open_desc, vop_null }, + { &vop_pathconf_desc, vop_einval }, + { &vop_poll_desc, (void *) vop_nopoll }, + { &vop_readlink_desc, vop_einval }, + { &vop_reallocblks_desc, vop_eopnotsupp }, + { &vop_revoke_desc, (void *) vop_stdrevoke }, + { &vop_strategy_desc, (void *) vop_nostrategy }, + { &vop_unlock_desc, (void *) vop_nounlock }, + { &vop_getacl_desc, vop_eopnotsupp }, + { &vop_setacl_desc, vop_eopnotsupp }, + { &vop_aclcheck_desc, vop_eopnotsupp }, + { &vop_getextattr_desc, vop_eopnotsupp }, + { &vop_setextattr_desc, vop_eopnotsupp }, { NULL, NULL } }; static struct vnodeopv_desc default_vnodeop_opv_desc = - { &default_vnodeop_p, default_vnodeop_entries }; + { &default_vnode_vops, default_vnodeop_entries }; VNODEOP_SET(default_vnodeop_opv_desc); @@ -114,43 +114,37 @@ vop_eopnotsupp(struct vop_generic_args *ap) /* printf("vop_notsupp[%s]\n", ap->a_desc->vdesc_name); */ - return (EOPNOTSUPP); } int vop_ebadf(struct vop_generic_args *ap) { - return (EBADF); } int vop_enotty(struct vop_generic_args *ap) { - return (ENOTTY); } int vop_einval(struct vop_generic_args *ap) { - return (EINVAL); } int vop_null(struct vop_generic_args *ap) { - return (0); } int vop_defaultop(struct vop_generic_args *ap) { - - return (VOCALL(default_vnodeop_p, ap->a_desc->vdesc_offset, ap)); + return (VOCALL(default_vnode_vops, ap->a_desc->vdesc_offset, ap)); } int diff --git a/sys/kern/vfs_init.c b/sys/kern/vfs_init.c index 83950ae6e2..e9f7ff0edc 100644 --- a/sys/kern/vfs_init.c +++ b/sys/kern/vfs_init.c @@ -1,4 +1,37 @@ /* + * Copyright (c) 2003,2004 The DragonFly Project. All rights reserved. + * + * This code is derived from software contributed to The DragonFly Project + * by Matthew Dillon + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of The DragonFly Project nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific, prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * * Copyright (c) 1989, 1993 * The Regents of the University of California. All rights reserved. * @@ -37,10 +70,11 @@ * * @(#)vfs_init.c 8.3 (Berkeley) 1/4/94 * $FreeBSD: src/sys/kern/vfs_init.c,v 1.59 2002/04/30 18:44:32 dillon Exp $ - * $DragonFly: src/sys/kern/vfs_init.c,v 1.4 2004/03/16 18:42:35 hmp Exp $ + * $DragonFly: src/sys/kern/vfs_init.c,v 1.5 2004/08/13 17:51:09 dillon Exp $ + */ +/* + * Manage vnode VOP operations vectors */ - - #include #include #include @@ -50,7 +84,6 @@ #include #include - MALLOC_DEFINE(M_VNODE, "vnodes", "Dynamically allocated vnodes"); /* @@ -65,308 +98,116 @@ struct vm_zone *namei_zone; int maxvfsconf; struct vfsconf *vfsconf; -/* - * vfs_init.c - * - * Allocate and fill in operations vectors. - * - * An undocumented feature of this approach to defining operations is that - * there can be multiple entries in vfs_opv_descs for the same operations - * vector. This allows third parties to extend the set of operations - * supported by another layer in a binary compatibile way. For example, - * assume that NFS needed to be modified to support Ficus. NFS has an entry - * (probably nfs_vnopdeop_decls) declaring all the operations NFS supports by - * default. Ficus could add another entry (ficus_nfs_vnodeop_decl_entensions) - * listing those new operations Ficus adds to NFS, all without modifying the - * NFS code. (Of couse, the OTW NFS protocol still needs to be munged, but - * that is a(whole)nother story.) This is a feature. - */ - -/* Table of known vnodeop vectors (list of VFS vnode vectors) */ -static const struct vnodeopv_desc **vnodeopv_descs; -static int vnodeopv_num; - -/* Table of known descs (list of vnode op handlers "vop_access_desc") */ -static struct vnodeop_desc **vfs_op_descs; -static int *vfs_op_desc_refs; /* reference counts */ -static int num_op_descs; - -/* - * Allocate at least vfs_opv_numops number of VFS operation - * vectors. The vector is never freed or deallocted once - * it is initalised, so the vnodes might safely reference - * it through their v_op pointer without the vector changing - * suddenly from under them. - * - * Allow this number to be tuned at boot. - */ -static int vfs_opv_numops = 96; -TUNABLE_INT("vfs.opv_numops", &vfs_opv_numops); -SYSCTL_INT(_vfs, OID_AUTO, opv_numops, CTLFLAG_RD, &vfs_opv_numops, - 0, "Maximum number of operations in vop_t vector"); - -static __inline int -int_cmp(const void *a, const void *b) -{ - return(*(const int *)a - *(const int *)b); -} +static TAILQ_HEAD(, vnodeopv_node) vnodeopv_list; +static void vfs_recalc_vnodeops(void); /* - * Recalculate parts of the VFS operations vector (vfsops). + * Add a vnode operations (vnops) vector to the global list. */ -static void -vfs_opv_recalc(void) +void +vfs_add_vnodeops(const void *data) { - int i, j, k; - int *vfs_op_offsets; - vop_t ***opv_desc_vector_p; - vop_t **opv_desc_vector; - struct vnodeopv_entry_desc *opve_descp; - const struct vnodeopv_desc *opv; - - if (vfs_op_descs == NULL) - panic("vfs_opv_recalc called with null vfs_op_descs"); - - /* - * Allocate and initialize temporary array to store - * offsets. Sort it to put all uninitialized entries - * first and to make holes in existing offset sequence - * detectable. - */ - MALLOC(vfs_op_offsets, int *, - num_op_descs * sizeof(int), M_VNODE, M_WAITOK); - if (vfs_op_offsets == NULL) - panic("vfs_opv_recals: no memory"); - for (i = 0; i < num_op_descs; i++) - vfs_op_offsets[i] = vfs_op_descs[i]->vdesc_offset; - qsort(vfs_op_offsets, num_op_descs, sizeof(int), int_cmp); - - /* - * Run through and make sure all known descs have an offset. - * Use vfs_op_offsets to locate the holes in offset sequence - * and reuse them. - * - * vop_default_desc is at hardwired at offset 1, and offset - * 0 is a panic sanity check. - */ - j = k = 1; - for (i = 0; i < num_op_descs; i++) { - if (vfs_op_descs[i]->vdesc_offset != 0) - continue; - /* - * Look at two adjacent entries vfs_op_offsets[j - 1] and - * vfs_op_offsets[j] and see if we can fit a new offset - * number in between. If not, look at the next pair until - * hole is found or the end of the vfs_op_offsets vector is - * reached. j has been initialized to 1 above so that - * referencing (j-1)-th element is safe and the loop will - * never execute if num_op_descs is 1. For each new value s - * of i the j loop pick up from where previous iteration has - * left off. When the last hole has been consumed or if no - * hole has been found, we will start allocating new numbers - * starting from the biggest already available offset + 1. - */ - for (; j < num_op_descs; j++) { - if (vfs_op_offsets[j - 1] < k && vfs_op_offsets[j] > k) - break; - k = vfs_op_offsets[j] + 1; - } - vfs_op_descs[i]->vdesc_offset = k++; - } - FREE(vfs_op_offsets, M_VNODE); - - /* Panic if new VFSops will cause vector overflow */ - if (k > vfs_opv_numops) - panic("VFS: Ran out of vop_t vector entries. " - "%d entries required, only %d available.", - k, vfs_opv_numops); - - /* - * Allocate and fill in the vectors - */ - for (i = 0; i < vnodeopv_num; i++) { - opv = vnodeopv_descs[i]; - opv_desc_vector_p = opv->opv_desc_vector_p; - if (*opv_desc_vector_p == NULL) - MALLOC(*opv_desc_vector_p, vop_t **, - vfs_opv_numops * sizeof(vop_t *), M_VNODE, - M_WAITOK | M_ZERO); - if (*opv_desc_vector_p == NULL) - panic("no memory for vop_t ** vector"); - - /* Fill in, with slot 0 being to return EOPNOTSUPP */ - opv_desc_vector = *opv_desc_vector_p; - opv_desc_vector[0] = (vop_t *)vop_eopnotsupp; - for (j = 0; opv->opv_desc_ops[j].opve_op; j++) { - opve_descp = &(opv->opv_desc_ops[j]); - opv_desc_vector[opve_descp->opve_op->vdesc_offset] = - opve_descp->opve_impl; - } - - /* Replace unfilled routines with their default (slot 1). */ - opv_desc_vector = *(opv->opv_desc_vector_p); - if (opv_desc_vector[1] == NULL) - panic("vfs_opv_recalc: vector without a default."); - for (j = 0; j < vfs_opv_numops; j++) - if (opv_desc_vector[j] == NULL) - opv_desc_vector[j] = opv_desc_vector[1]; + struct vnodeopv_node *node; + struct vop_ops *vops; + + node = malloc(sizeof(struct vnodeopv_node), M_VNODE, M_ZERO|M_WAITOK); + node->vdesc = data; + if ((vops = *node->vdesc->opv_desc_vector) == NULL) { + vops = malloc(sizeof(struct vop_ops), M_VNODE, M_ZERO|M_WAITOK); + *node->vdesc->opv_desc_vector = vops; } + ++vops->vv_refs; + TAILQ_INSERT_TAIL(&vnodeopv_list, node, entry); + vfs_recalc_vnodeops(); } /* - * Add a vnode operations (vnops) vector to the global list. + * Unlink previously added vnode operations vector. */ void -vfs_add_vnodeops(const void *data) +vfs_rm_vnodeops(const void *data) { - const struct vnodeopv_desc *opv; - const struct vnodeopv_desc **newopv; - struct vnodeop_desc **newop; - int *newref; - struct vnodeop_desc *desc; - int i, j; + struct vnodeopv_node *node; + struct vop_ops *vops; - opv = (const struct vnodeopv_desc *)data; - MALLOC(newopv, const struct vnodeopv_desc **, - (vnodeopv_num + 1) * sizeof(*newopv), M_VNODE, M_WAITOK); - if (newopv == NULL) - panic("vfs_add_vnodeops: no memory"); - if (vnodeopv_descs) { - bcopy(vnodeopv_descs, newopv, vnodeopv_num * sizeof(*newopv)); - FREE(vnodeopv_descs, M_VNODE); + TAILQ_FOREACH(node, &vnodeopv_list, entry) { + if ((const void *)node->vdesc == data) + break; } - newopv[vnodeopv_num] = opv; - vnodeopv_descs = newopv; - vnodeopv_num++; - - /* See if we have turned up a new vnode op desc */ - for (i = 0; (desc = opv->opv_desc_ops[i].opve_op); i++) { - for (j = 0; j < num_op_descs; j++) { - if (desc == vfs_op_descs[j]) { - /* found it, increase reference count */ - vfs_op_desc_refs[j]++; - break; - } - } - if (j == num_op_descs) { - /* not found, new entry */ - MALLOC(newop, struct vnodeop_desc **, - (num_op_descs + 1) * sizeof(*newop), - M_VNODE, M_WAITOK); - if (newop == NULL) - panic("vfs_add_vnodeops: no memory for desc"); - /* new reference count (for unload) */ - MALLOC(newref, int *, - (num_op_descs + 1) * sizeof(*newref), - M_VNODE, M_WAITOK); - if (newref == NULL) - panic("vfs_add_vnodeops: no memory for refs"); - if (vfs_op_descs) { - bcopy(vfs_op_descs, newop, - num_op_descs * sizeof(*newop)); - FREE(vfs_op_descs, M_VNODE); - } - if (vfs_op_desc_refs) { - bcopy(vfs_op_desc_refs, newref, - num_op_descs * sizeof(*newref)); - FREE(vfs_op_desc_refs, M_VNODE); - } - newop[num_op_descs] = desc; - newref[num_op_descs] = 1; - vfs_op_descs = newop; - vfs_op_desc_refs = newref; - num_op_descs++; - } + if (node == NULL) { + printf("vfs_rm_vnodeops: unable to find vnodeopv_desc: %p\n", + data); + return; + } + TAILQ_REMOVE(&vnodeopv_list, node, entry); + vops = *node->vdesc->opv_desc_vector; + KKASSERT(vops != NULL && vops->vv_refs > 0); + if (--vops->vv_refs == 0) { + *node->vdesc->opv_desc_vector = NULL; + free(vops, M_VNODE); } - vfs_opv_recalc(); + free(node, M_VNODE); + vfs_recalc_vnodeops(); } /* - * Unlink previously added vnode operations vector. + * Recalculate VFS operations vectors */ -void -vfs_rm_vnodeops(const void *data) +static void +vfs_recalc_vnodeops(void) { - const struct vnodeopv_desc *opv; - const struct vnodeopv_desc **newopv; - struct vnodeop_desc **newop; - int *newref; - vop_t **opv_desc_vector; - struct vnodeop_desc *desc; - int i, j, k; + struct vnodeopv_node *node; + struct vnodeopv_entry_desc *desc; + struct vop_ops *vops; + struct vop_ops *vnew; + int off; - opv = (const struct vnodeopv_desc *)data; - /* Lower ref counts on descs in the table and release if zero */ - for (i = 0; (desc = opv->opv_desc_ops[i].opve_op); i++) { - for (j = 0; j < num_op_descs; j++) { - if (desc == vfs_op_descs[j]) { - /* found it, decrease reference count */ - vfs_op_desc_refs[j]--; - break; - } + /* + * Because vop_ops may be active we can't just blow them away, we + * have to generate new vop_ops and then copy them into the running + * vop_ops. Any missing entries will be assigned to the default + * entry. If the default entry itself is missing it will be assigned + * to vop_eopnotsupp. + */ + TAILQ_FOREACH(node, &vnodeopv_list, entry) { + vops = *node->vdesc->opv_desc_vector; + if ((vnew = vops->vv_new) == NULL) { + vnew = malloc(sizeof(struct vop_ops), + M_VNODE, M_ZERO|M_WAITOK); + vops->vv_new = vnew; + vnew->vop_default = vop_eopnotsupp; + } + for (desc = node->vdesc->opv_desc_ops; desc->opve_op; ++desc) { + off = desc->opve_op->vdesc_offset; + *(void **)((char *)vnew + off) = desc->opve_func; } - for (j = 0; j < num_op_descs; j++) { - if (vfs_op_desc_refs[j] > 0) - continue; - if (vfs_op_desc_refs[j] < 0) - panic("vfs_remove_vnodeops: negative refcnt"); - /* Entry is going away - replace it with defaultop */ - for (k = 0; k < vnodeopv_num; k++) { - opv_desc_vector = - *(vnodeopv_descs[k]->opv_desc_vector_p); - if (opv_desc_vector != NULL) - opv_desc_vector[desc->vdesc_offset] = - opv_desc_vector[1]; - } - MALLOC(newop, struct vnodeop_desc **, - (num_op_descs - 1) * sizeof(*newop), - M_VNODE, M_WAITOK); - if (newop == NULL) - panic("vfs_remove_vnodeops: no memory for desc"); - /* new reference count (for unload) */ - MALLOC(newref, int *, - (num_op_descs - 1) * sizeof(*newref), - M_VNODE, M_WAITOK); - if (newref == NULL) - panic("vfs_remove_vnodeops: no memory for refs"); - for (k = j; k < (num_op_descs - 1); k++) { - vfs_op_descs[k] = vfs_op_descs[k + 1]; - vfs_op_desc_refs[k] = vfs_op_desc_refs[k + 1]; - } - bcopy(vfs_op_descs, newop, - (num_op_descs - 1) * sizeof(*newop)); - bcopy(vfs_op_desc_refs, newref, - (num_op_descs - 1) * sizeof(*newref)); - FREE(vfs_op_descs, M_VNODE); - FREE(vfs_op_desc_refs, M_VNODE); - vfs_op_descs = newop; - vfs_op_desc_refs = newref; - num_op_descs--; + for (off = __offsetof(struct vop_ops, vop_ops_first_field); + off <= __offsetof(struct vop_ops, vop_ops_last_field); + off += sizeof(void **) + ) { + if (*(void **)((char *)vnew + off) == NULL) + *(void **)((char *)vnew + off) = vnew->vop_default; } } - for (i = 0; i < vnodeopv_num; i++) { - if (vnodeopv_descs[i] == opv) { - for (j = i; j < (vnodeopv_num - 1); j++) - vnodeopv_descs[j] = vnodeopv_descs[j + 1]; - break; + /* + * Copy the temporary vops into the running configuration and then + * delete them. + */ + TAILQ_FOREACH(node, &vnodeopv_list, entry) { + vops = *node->vdesc->opv_desc_vector; + if ((vnew = vops->vv_new) == NULL) + continue; + for (off = __offsetof(struct vop_ops, vop_ops_first_field); + off <= __offsetof(struct vop_ops, vop_ops_last_field); + off += sizeof(void **) + ) { + *(void **)((char *)vops + off) = + *(void **)((char *)vnew + off); } + vops->vv_new = NULL; + free(vnew, M_VNODE); } - if (i == vnodeopv_num) - panic("vfs_remove_vnodeops: opv not found"); - opv_desc_vector = *(opv->opv_desc_vector_p); - if (opv_desc_vector != NULL) - FREE(opv_desc_vector, M_VNODE); - MALLOC(newopv, const struct vnodeopv_desc **, - (vnodeopv_num - 1) * sizeof(*newopv), M_VNODE, M_WAITOK); - if (newopv == NULL) - panic("vfs_remove_vnodeops: no memory"); - bcopy(vnodeopv_descs, newopv, (vnodeopv_num - 1) * sizeof(*newopv)); - FREE(vnodeopv_descs, M_VNODE); - vnodeopv_descs = newopv; - vnodeopv_num--; - - vfs_opv_recalc(); } /* @@ -381,7 +222,7 @@ struct vattr va_null; static void vfsinit(void *dummy) { - + TAILQ_INIT(&vnodeopv_list); namei_zone = zinit("NAMEI", MAXPATHLEN, 0, 0, 2); /* diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index cf4e3f68c8..8d648c87f2 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -37,7 +37,7 @@ * * @(#)vfs_subr.c 8.31 (Berkeley) 5/26/95 * $FreeBSD: src/sys/kern/vfs_subr.c,v 1.249.2.30 2003/04/04 20:35:57 tegge Exp $ - * $DragonFly: src/sys/kern/vfs_subr.c,v 1.35 2004/07/10 16:29:45 dillon Exp $ + * $DragonFly: src/sys/kern/vfs_subr.c,v 1.36 2004/08/13 17:51:09 dillon Exp $ */ /* @@ -619,14 +619,14 @@ SYSINIT(vnlru, SI_SUB_KTHREAD_UPDATE, SI_ORDER_FIRST, kproc_start, &vnlru_kp) /* * Routines having to do with the management of the vnode table. */ -extern vop_t **dead_vnodeop_p; +extern struct vop_ops *dead_vnode_vops; /* * Return the next vnode from the free list. */ int getnewvnode(enum vtagtype tag, struct mount *mp, - vop_t **vops, struct vnode **vpp) + struct vop_ops *vops, struct vnode **vpp) { int s; struct thread *td = curthread; /* XXX */ @@ -802,7 +802,7 @@ getnewvnode(enum vtagtype tag, struct mount *mp, TAILQ_INIT(&vp->v_dirtyblkhd); vp->v_type = VNON; vp->v_tag = tag; - vp->v_op = vops; + vp->v_vops = vops; *vpp = vp; vp->v_usecount = 1; vp->v_data = NULL; @@ -1522,7 +1522,7 @@ bdevvp(dev_t dev, struct vnode **vpp) *vpp = NULLVP; return (ENXIO); } - error = getnewvnode(VT_NON, (struct mount *)0, spec_vnodeop_p, &nvp); + error = getnewvnode(VT_NON, (struct mount *)0, spec_vnode_vops, &nvp); if (error) { *vpp = NULLVP; return (error); @@ -1992,7 +1992,7 @@ vflush_scan(struct mount *mp, struct vnode *vp, vgonel(vp, vlock, info->td); } else { vclean(vp, vlock, 0, info->td); - vp->v_op = spec_vnodeop_p; + vp->v_vops = spec_vnode_vops; insmntque(vp, (struct mount *) 0); } return(0); @@ -2094,7 +2094,7 @@ vclean(struct vnode *vp, lwkt_tokref_t vlock, int flags, struct thread *td) /* * Done with purge, notify sleepers of the grim news. */ - vp->v_op = dead_vnodeop_p; + vp->v_vops = dead_vnode_vops; vn_pollgone(vp); vp->v_tag = VT_NON; vp->v_flag &= ~VXLOCK; @@ -2113,7 +2113,7 @@ vclean(struct vnode *vp, lwkt_tokref_t vlock, int flags, struct thread *td) * revoke { struct vnode *a_vp, int a_flags } */ int -vop_revoke(struct vop_revoke_args *ap) +vop_stdrevoke(struct vop_revoke_args *ap) { struct vnode *vp, *vq; lwkt_tokref ilock; @@ -3075,21 +3075,21 @@ static int sync_reclaim (struct vop_reclaim_args *); static int sync_print (struct vop_print_args *); #define sync_islocked ((int(*) (struct vop_islocked_args *))vop_noislocked) -static vop_t **sync_vnodeop_p; +static struct vop_ops *sync_vnode_vops; static struct vnodeopv_entry_desc sync_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) vop_eopnotsupp }, - { &vop_close_desc, (vop_t *) sync_close }, /* close */ - { &vop_fsync_desc, (vop_t *) sync_fsync }, /* fsync */ - { &vop_inactive_desc, (vop_t *) sync_inactive }, /* inactive */ - { &vop_reclaim_desc, (vop_t *) sync_reclaim }, /* reclaim */ - { &vop_lock_desc, (vop_t *) sync_lock }, /* lock */ - { &vop_unlock_desc, (vop_t *) sync_unlock }, /* unlock */ - { &vop_print_desc, (vop_t *) sync_print }, /* print */ - { &vop_islocked_desc, (vop_t *) sync_islocked }, /* islocked */ + { &vop_default_desc, vop_eopnotsupp }, + { &vop_close_desc, (void *) sync_close }, /* close */ + { &vop_fsync_desc, (void *) sync_fsync }, /* fsync */ + { &vop_inactive_desc, (void *) sync_inactive }, /* inactive */ + { &vop_reclaim_desc, (void *) sync_reclaim }, /* reclaim */ + { &vop_lock_desc, (void *) sync_lock }, /* lock */ + { &vop_unlock_desc, (void *) sync_unlock }, /* unlock */ + { &vop_print_desc, (void *) sync_print }, /* print */ + { &vop_islocked_desc, (void *) sync_islocked }, /* islocked */ { NULL, NULL } }; static struct vnodeopv_desc sync_vnodeop_opv_desc = - { &sync_vnodeop_p, sync_vnodeop_entries }; + { &sync_vnode_vops, sync_vnodeop_entries }; VNODEOP_SET(sync_vnodeop_opv_desc); @@ -3109,7 +3109,7 @@ vfs_allocate_syncvnode(struct mount *mp) int error; /* Allocate a new vnode */ - if ((error = getnewvnode(VT_VFS, mp, sync_vnodeop_p, &vp)) != 0) { + if ((error = getnewvnode(VT_VFS, mp, sync_vnode_vops, &vp)) != 0) { mp->mnt_syncer = NULL; return (error); } diff --git a/sys/kern/vfs_vopops.c b/sys/kern/vfs_vopops.c new file mode 100644 index 0000000000..72e4300975 --- /dev/null +++ b/sys/kern/vfs_vopops.c @@ -0,0 +1,947 @@ +/* + * + * Copyright (c) 2004 The DragonFly Project. All rights reserved. + * + * This code is derived from software contributed to The DragonFly Project + * by Matthew Dillon + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of The DragonFly Project nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific, prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $DragonFly: src/sys/kern/vfs_vopops.c,v 1.1 2004/08/13 17:51:09 dillon Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#define VOFFNAME(name) __CONCAT(__CONCAT(vop_,name),_vp_offsets) +#define VDESCNAME(name) __CONCAT(__CONCAT(vop_,name),_desc) +#define VARGSSTRUCT(name) struct __CONCAT(__CONCAT(vop_,name),_args) + +#define VNODEOP_DESC_INIT(name, flags, vpoffs, vpp, cred, proc, comp) \ + struct vnodeop_desc VDESCNAME(name) = { \ + __offsetof(struct vop_ops, __CONCAT(vop_, name)), \ + #name, flags, vpoffs, vpp, cred, proc, comp } + +#define VNODEOP_DESC_INIT_SIMPLE(name) \ + VNODEOP_DESC_INIT(name, 0, NULL, \ + VDESC_NO_OFFSET, \ + VDESC_NO_OFFSET, \ + VDESC_NO_OFFSET, \ + VDESC_NO_OFFSET) + +#define VNODEOP_DESC_INIT_VP(name) \ + static int VOFFNAME(name)[] = { \ + __offsetof(VARGSSTRUCT(name), a_vp), \ + VDESC_NO_OFFSET }; \ + VNODEOP_DESC_INIT(name, 0, VOFFNAME(name), \ + VDESC_NO_OFFSET, \ + VDESC_NO_OFFSET, \ + VDESC_NO_OFFSET, \ + VDESC_NO_OFFSET) + +#define VNODEOP_DESC_INIT_VP_VPP(name) \ + static int VOFFNAME(name)[] = { \ + __offsetof(VARGSSTRUCT(name), a_vp), \ + VDESC_NO_OFFSET }; \ + VNODEOP_DESC_INIT(name, 0, VOFFNAME(name), \ + __offsetof(VARGSSTRUCT(name), a_vpp), \ + VDESC_NO_OFFSET, \ + VDESC_NO_OFFSET, \ + VDESC_NO_OFFSET) + +#define VNODEOP_DESC_INIT_VP_CRED(name) \ + static int VOFFNAME(name)[] = { \ + __offsetof(VARGSSTRUCT(name), a_vp), \ + VDESC_NO_OFFSET }; \ + VNODEOP_DESC_INIT(name, 0, VOFFNAME(name), \ + VDESC_NO_OFFSET, \ + __offsetof(VARGSSTRUCT(name), a_cred), \ + VDESC_NO_OFFSET, \ + VDESC_NO_OFFSET) + +#define VNODEOP_DESC_INIT_DVP_VPP_CNP(name) \ + static int VOFFNAME(name)[] = { \ + __offsetof(VARGSSTRUCT(name), a_dvp), \ + VDESC_NO_OFFSET }; \ + VNODEOP_DESC_INIT(name, 0, VOFFNAME(name), \ + __offsetof(VARGSSTRUCT(name), a_vpp), \ + VDESC_NO_OFFSET, \ + VDESC_NO_OFFSET, \ + __offsetof(VARGSSTRUCT(name), a_cnp)) + +#define VNODEOP_DESC_INIT_DVP_CNP(name) \ + static int VOFFNAME(name)[] = { \ + __offsetof(VARGSSTRUCT(name), a_dvp), \ + VDESC_NO_OFFSET }; \ + VNODEOP_DESC_INIT(name, 0, VOFFNAME(name), \ + VDESC_NO_OFFSET, \ + VDESC_NO_OFFSET, \ + VDESC_NO_OFFSET, \ + __offsetof(VARGSSTRUCT(name), a_cnp)) + +#define VNODEOP_DESC_INIT_DVP_VP_CNP(name) \ + static int VOFFNAME(name)[] = { \ + __offsetof(VARGSSTRUCT(name), a_dvp), \ + __offsetof(VARGSSTRUCT(name), a_vp), \ + VDESC_NO_OFFSET }; \ + VNODEOP_DESC_INIT(name, 0, VOFFNAME(name), \ + VDESC_NO_OFFSET, \ + VDESC_NO_OFFSET, \ + VDESC_NO_OFFSET, \ + __offsetof(VARGSSTRUCT(name), a_cnp)) + +#define VNODEOP_DESC_INIT_TDVP_VP_CNP(name) \ + static int VOFFNAME(name)[] = { \ + __offsetof(VARGSSTRUCT(name), a_tdvp), \ + __offsetof(VARGSSTRUCT(name), a_vp), \ + VDESC_NO_OFFSET }; \ + VNODEOP_DESC_INIT(name, 0, VOFFNAME(name), \ + VDESC_NO_OFFSET, \ + VDESC_NO_OFFSET, \ + VDESC_NO_OFFSET, \ + __offsetof(VARGSSTRUCT(name), a_cnp)) + +VNODEOP_DESC_INIT_SIMPLE(default); +VNODEOP_DESC_INIT_VP(islocked); +VNODEOP_DESC_INIT_DVP_VPP_CNP(lookup); +VNODEOP_DESC_INIT_DVP_VPP_CNP(cachedlookup); +VNODEOP_DESC_INIT_DVP_VPP_CNP(create); +VNODEOP_DESC_INIT_DVP_CNP(whiteout); +VNODEOP_DESC_INIT_DVP_VPP_CNP(mknod); +VNODEOP_DESC_INIT_VP_CRED(open); +VNODEOP_DESC_INIT_VP(close); +VNODEOP_DESC_INIT_VP_CRED(access); +VNODEOP_DESC_INIT_VP(getattr); +VNODEOP_DESC_INIT_VP_CRED(setattr); +VNODEOP_DESC_INIT_VP_CRED(read); +VNODEOP_DESC_INIT_VP_CRED(write); +VNODEOP_DESC_INIT_VP_CRED(lease); +VNODEOP_DESC_INIT_VP_CRED(ioctl); +VNODEOP_DESC_INIT_VP_CRED(poll); +VNODEOP_DESC_INIT_VP(kqfilter); +VNODEOP_DESC_INIT_VP(revoke); +VNODEOP_DESC_INIT_VP_CRED(mmap); +VNODEOP_DESC_INIT_VP(fsync); +VNODEOP_DESC_INIT_DVP_VP_CNP(remove); +VNODEOP_DESC_INIT_TDVP_VP_CNP(link); + +static int VOFFNAME(rename)[] = { + __offsetof(VARGSSTRUCT(rename), a_fdvp), + __offsetof(VARGSSTRUCT(rename), a_fvp), + __offsetof(VARGSSTRUCT(rename), a_tdvp), + __offsetof(VARGSSTRUCT(rename), a_tvp), + VDESC_NO_OFFSET +}; +VNODEOP_DESC_INIT(rename, + VDESC_VP0_WILLRELE|VDESC_VP1_WILLRELE| + VDESC_VP2_WILLRELE|VDESC_VP3_WILLRELE, + VOFFNAME(rename), + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + __offsetof(VARGSSTRUCT(rename), a_fcnp)); +VNODEOP_DESC_INIT_DVP_VPP_CNP(mkdir); +VNODEOP_DESC_INIT_DVP_VP_CNP(rmdir); +VNODEOP_DESC_INIT_DVP_VPP_CNP(symlink); +VNODEOP_DESC_INIT_VP_CRED(readdir); +VNODEOP_DESC_INIT_VP_CRED(readlink); +VNODEOP_DESC_INIT_VP(inactive); +VNODEOP_DESC_INIT_VP(reclaim); +VNODEOP_DESC_INIT_VP(lock); +VNODEOP_DESC_INIT_VP(unlock); +VNODEOP_DESC_INIT_VP_VPP(bmap); +VNODEOP_DESC_INIT_VP(strategy); +VNODEOP_DESC_INIT_VP(print); +VNODEOP_DESC_INIT_VP(pathconf); +VNODEOP_DESC_INIT_VP(advlock); +VNODEOP_DESC_INIT_VP_CRED(balloc); +VNODEOP_DESC_INIT_VP(reallocblks); +VNODEOP_DESC_INIT_VP(getpages); +VNODEOP_DESC_INIT_VP(putpages); +VNODEOP_DESC_INIT_VP(freeblks); +VNODEOP_DESC_INIT_VP(bwrite); +VNODEOP_DESC_INIT_VP_CRED(getacl); +VNODEOP_DESC_INIT_VP_CRED(setacl); +VNODEOP_DESC_INIT_VP_CRED(aclcheck); +VNODEOP_DESC_INIT_VP_CRED(getextattr); +VNODEOP_DESC_INIT_VP_CRED(setextattr); +VNODEOP_DESC_INIT_VP(createvobject); +VNODEOP_DESC_INIT_VP(destroyvobject); +VNODEOP_DESC_INIT_VP(getvobject); + +int +vop_islocked(struct vnode *vp, struct thread *td) +{ + struct vop_islocked_args ap; + + ap.a_head.a_desc = &vop_islocked_desc; + ap.a_vp = vp; + ap.a_td = td; + return(vp->v_vops->vop_islocked(&ap)); +} + +int +vop_lookup(struct vnode *dvp, struct namecache *par, + struct vnode **vpp, struct namecache **ncpp, + struct componentname *cnp) +{ + struct vop_lookup_args ap; + + ap.a_head.a_desc = &vop_lookup_desc; + ap.a_dvp = dvp; + ap.a_par = par; + ap.a_vpp = vpp; + ap.a_ncpp = ncpp; + ap.a_cnp = cnp; + return(dvp->v_vops->vop_lookup(&ap)); +} + +int +vop_cachedlookup(struct vnode *dvp, struct namecache *par, + struct vnode **vpp, struct namecache **ncpp, + struct componentname *cnp) +{ + struct vop_cachedlookup_args ap; + + ap.a_head.a_desc = &vop_cachedlookup_desc; + ap.a_dvp = dvp; + ap.a_par = par; + ap.a_vpp = vpp; + ap.a_ncpp = ncpp; + ap.a_cnp = cnp; + return(dvp->v_vops->vop_cachedlookup(&ap)); +} + +int +vop_create(struct vnode *dvp, struct namecache *par, + struct vnode **vpp, struct componentname *cnp, + struct vattr *vap) +{ + struct vop_create_args ap; + + ap.a_head.a_desc = &vop_create_desc; + ap.a_dvp = dvp; + ap.a_par = par; + ap.a_vpp = vpp; + ap.a_cnp = cnp; + ap.a_vap = vap; + return(dvp->v_vops->vop_create(&ap)); +} + +int +vop_whiteout(struct vnode *dvp, struct namecache *par, + struct componentname *cnp, int flags) +{ + struct vop_whiteout_args ap; + + ap.a_head.a_desc = &vop_whiteout_desc; + ap.a_dvp = dvp; + ap.a_par = par; + ap.a_cnp = cnp; + ap.a_flags = flags; + return(dvp->v_vops->vop_whiteout(&ap)); +} + +int +vop_mknod(struct vnode *dvp, struct namecache *par, + struct vnode **vpp, struct componentname *cnp, + struct vattr *vap) +{ + struct vop_mknod_args ap; + + ap.a_head.a_desc = &vop_mknod_desc; + ap.a_dvp = dvp; + ap.a_par = par; + ap.a_vpp = vpp; + ap.a_cnp = cnp; + ap.a_vap = vap; + return(dvp->v_vops->vop_mknod(&ap)); +} + +int +vop_open(struct vnode *vp, int mode, struct ucred *cred, + struct thread *td) +{ + struct vop_open_args ap; + + ap.a_head.a_desc = &vop_open_desc; + ap.a_vp = vp; + ap.a_mode = mode; + ap.a_cred = cred; + ap.a_td = td; + return(vp->v_vops->vop_open(&ap)); +} + +int +vop_close(struct vnode *vp, int fflag, struct thread *td) +{ + struct vop_close_args ap; + + ap.a_head.a_desc = &vop_close_desc; + ap.a_vp = vp; + ap.a_fflag = fflag; + ap.a_td = td; + return(vp->v_vops->vop_close(&ap)); +} + +int +vop_access(struct vnode *vp, int mode, struct ucred *cred, + struct thread *td) +{ + struct vop_access_args ap; + + ap.a_head.a_desc = &vop_access_desc; + ap.a_vp = vp; + ap.a_mode = mode; + ap.a_cred = cred; + ap.a_td = td; + return(vp->v_vops->vop_access(&ap)); +} + +int +vop_getattr(struct vnode *vp, struct vattr *vap, + struct thread *td) +{ + struct vop_getattr_args ap; + + ap.a_head.a_desc = &vop_getattr_desc; + ap.a_vp = vp; + ap.a_vap = vap; + ap.a_td = td; + return(vp->v_vops->vop_getattr(&ap)); +} + +int +vop_setattr(struct vnode *vp, struct vattr *vap, + struct ucred *cred, struct thread *td) +{ + struct vop_setattr_args ap; + + ap.a_head.a_desc = &vop_setattr_desc; + ap.a_vp = vp; + ap.a_vap = vap; + ap.a_cred = cred; + ap.a_td = td; + return(vp->v_vops->vop_setattr(&ap)); +} + +int +vop_read(struct vnode *vp, struct uio *uio, int ioflag, + struct ucred *cred) +{ + struct vop_read_args ap; + + ap.a_head.a_desc = &vop_read_desc; + ap.a_vp = vp; + ap.a_uio = uio; + ap.a_ioflag = ioflag; + ap.a_cred = cred; + return(vp->v_vops->vop_read(&ap)); +} + +int +vop_write(struct vnode *vp, struct uio *uio, int ioflag, + struct ucred *cred) +{ + struct vop_write_args ap; + + ap.a_head.a_desc = &vop_write_desc; + ap.a_vp = vp; + ap.a_uio = uio; + ap.a_ioflag = ioflag; + ap.a_cred = cred; + return(vp->v_vops->vop_write(&ap)); +} + +int +vop_lease(struct vnode *vp, struct thread *td, + struct ucred *cred, int flag) +{ + struct vop_lease_args ap; + + ap.a_head.a_desc = &vop_lease_desc; + ap.a_vp = vp; + ap.a_td = td; + ap.a_cred = cred; + ap.a_flag = flag; + return(vp->v_vops->vop_lease(&ap)); +} + +int +vop_ioctl(struct vnode *vp, u_long command, caddr_t data, + int fflag, struct ucred *cred, + struct thread *td) +{ + struct vop_ioctl_args ap; + + ap.a_head.a_desc = &vop_ioctl_desc; + ap.a_vp = vp; + ap.a_command = command; + ap.a_data = data; + ap.a_fflag = fflag; + ap.a_cred = cred; + ap.a_td = td; + return(vp->v_vops->vop_ioctl(&ap)); +} + +int +vop_poll(struct vnode *vp, int events, struct ucred *cred, + struct thread *td) +{ + struct vop_poll_args ap; + + ap.a_head.a_desc = &vop_poll_desc; + ap.a_vp = vp; + ap.a_events = events; + ap.a_cred = cred; + ap.a_td = td; + return(vp->v_vops->vop_poll(&ap)); +} + +int +vop_kqfilter(struct vnode *vp, struct knote *kn) +{ + struct vop_kqfilter_args ap; + + ap.a_head.a_desc = &vop_kqfilter_desc; + ap.a_vp = vp; + ap.a_kn = kn; + return(vp->v_vops->vop_kqfilter(&ap)); +} + +int +vop_revoke(struct vnode *vp, int flags) +{ + struct vop_revoke_args ap; + + ap.a_head.a_desc = &vop_revoke_desc; + ap.a_vp = vp; + ap.a_flags = flags; + return(vp->v_vops->vop_revoke(&ap)); +} + +int +vop_mmap(struct vnode *vp, int fflags, struct ucred *cred, + struct thread *td) +{ + struct vop_mmap_args ap; + + ap.a_head.a_desc = &vop_mmap_desc; + ap.a_vp = vp; + ap.a_fflags = fflags; + ap.a_cred = cred; + ap.a_td = td; + return(vp->v_vops->vop_mmap(&ap)); +} + +int +vop_fsync(struct vnode *vp, int waitfor, struct thread *td) +{ + struct vop_fsync_args ap; + + ap.a_head.a_desc = &vop_fsync_desc; + ap.a_vp = vp; + ap.a_waitfor = waitfor; + ap.a_td = td; + return(vp->v_vops->vop_fsync(&ap)); +} + +int +vop_remove(struct vnode *dvp, struct namecache *par, + struct vnode *vp, struct componentname *cnp) +{ + struct vop_remove_args ap; + + ap.a_head.a_desc = &vop_remove_desc; + ap.a_dvp = dvp; + ap.a_par = par; + ap.a_vp = vp; + ap.a_cnp = cnp; + return(dvp->v_vops->vop_remove(&ap)); +} + +int +vop_link(struct vnode *tdvp, struct namecache *par, + struct vnode *vp, struct componentname *cnp) +{ + struct vop_link_args ap; + + ap.a_head.a_desc = &vop_link_desc; + ap.a_tdvp = tdvp; + ap.a_par = par; + ap.a_vp = vp; + ap.a_cnp = cnp; + return(tdvp->v_vops->vop_link(&ap)); +} + +int +vop_rename(struct vnode *fdvp, struct namecache *fpar, + struct vnode *fvp, struct componentname *fcnp, + struct vnode *tdvp, struct namecache *tpar, + struct vnode *tvp, struct componentname *tcnp) +{ + struct vop_rename_args ap; + + ap.a_head.a_desc = &vop_rename_desc; + ap.a_fdvp = fdvp; + ap.a_fpar = fpar; + ap.a_fvp = fvp; + ap.a_fcnp = fcnp; + ap.a_tdvp = tdvp; + ap.a_tpar = tpar; + ap.a_tvp = tvp; + ap.a_tcnp = tcnp; + return(fdvp->v_vops->vop_rename(&ap)); +} + +int +vop_mkdir(struct vnode *dvp, struct namecache *par, + struct vnode **vpp, struct componentname *cnp, + struct vattr *vap) +{ + struct vop_mkdir_args ap; + + ap.a_head.a_desc = &vop_mkdir_desc; + ap.a_dvp = dvp; + ap.a_par = par; + ap.a_vpp = vpp; + ap.a_cnp = cnp; + ap.a_vap = vap; + return(dvp->v_vops->vop_mkdir(&ap)); +} + +int +vop_rmdir(struct vnode *dvp, struct namecache *par, + struct vnode *vp, struct componentname *cnp) +{ + struct vop_rmdir_args ap; + + ap.a_head.a_desc = &vop_rmdir_desc; + ap.a_dvp = dvp; + ap.a_par = par; + ap.a_vp = vp; + ap.a_cnp = cnp; + return(dvp->v_vops->vop_rmdir(&ap)); +} + +int +vop_symlink(struct vnode *dvp, struct namecache *par, + struct vnode **vpp, struct componentname *cnp, + struct vattr *vap, char *target) +{ + struct vop_symlink_args ap; + + ap.a_head.a_desc = &vop_symlink_desc; + ap.a_dvp = dvp; + ap.a_par = par; + ap.a_vpp = vpp; + ap.a_cnp = cnp; + ap.a_vap = vap; + ap.a_target = target; + return(dvp->v_vops->vop_symlink(&ap)); +} + +int +vop_readdir(struct vnode *vp, struct uio *uio, + struct ucred *cred, int *eofflag, + int *ncookies, u_long **cookies) +{ + struct vop_readdir_args ap; + + ap.a_head.a_desc = &vop_readdir_desc; + ap.a_vp = vp; + ap.a_uio = uio; + ap.a_cred = cred; + ap.a_eofflag = eofflag; + ap.a_ncookies = ncookies; + ap.a_cookies = cookies; + return(vp->v_vops->vop_readdir(&ap)); +} + +int +vop_readlink(struct vnode *vp, struct uio *uio, + struct ucred *cred) +{ + struct vop_readlink_args ap; + + ap.a_head.a_desc = &vop_readlink_desc; + ap.a_vp = vp; + ap.a_uio = uio; + ap.a_cred = cred; + return(vp->v_vops->vop_readlink(&ap)); +} + +int +vop_inactive(struct vnode *vp, struct thread *td) +{ + struct vop_inactive_args ap; + + ap.a_head.a_desc = &vop_inactive_desc; + ap.a_vp = vp; + ap.a_td = td; + return(vp->v_vops->vop_inactive(&ap)); +} + +int +vop_reclaim(struct vnode *vp, struct thread *td) +{ + struct vop_reclaim_args ap; + + ap.a_head.a_desc = &vop_reclaim_desc; + ap.a_vp = vp; + ap.a_td = td; + return(vp->v_vops->vop_reclaim(&ap)); +} + +int +vop_lock(struct vnode *vp, struct lwkt_tokref *vlock, + int flags, struct thread *td) +{ + struct vop_lock_args ap; + + ap.a_head.a_desc = &vop_lock_desc; + ap.a_vp = vp; + ap.a_vlock = vlock; + ap.a_flags = flags; + ap.a_td = td; + return(vp->v_vops->vop_lock(&ap)); +} + +int +vop_unlock(struct vnode *vp, struct lwkt_tokref *vlock, + int flags, struct thread *td) +{ + struct vop_unlock_args ap; + + ap.a_head.a_desc = &vop_unlock_desc; + ap.a_vp = vp; + ap.a_vlock = vlock; + ap.a_flags = flags; + ap.a_td = td; + return(vp->v_vops->vop_unlock(&ap)); +} + +int +vop_bmap(struct vnode *vp, daddr_t bn, struct vnode **vpp, + daddr_t *bnp, int *runp, int *runb) +{ + struct vop_bmap_args ap; + + ap.a_head.a_desc = &vop_bmap_desc; + ap.a_vp = vp; + ap.a_bn = bn; + ap.a_vpp = vpp; + ap.a_bnp = bnp; + ap.a_runp = runp; + ap.a_runb = runb; + return(vp->v_vops->vop_bmap(&ap)); +} + +int +vop_strategy(struct vnode *vp, struct buf *bp) +{ + struct vop_strategy_args ap; + + ap.a_head.a_desc = &vop_strategy_desc; + ap.a_vp = vp; + ap.a_bp = bp; + return(vp->v_vops->vop_strategy(&ap)); +} + +int +vop_print(struct vnode *vp) +{ + struct vop_print_args ap; + + ap.a_head.a_desc = &vop_print_desc; + ap.a_vp = vp; + return(vp->v_vops->vop_print(&ap)); +} + +int +vop_pathconf(struct vnode *vp, int name, + register_t *retval) +{ + struct vop_pathconf_args ap; + + ap.a_head.a_desc = &vop_pathconf_desc; + ap.a_vp = vp; + ap.a_name = name; + ap.a_retval = retval; + return(vp->v_vops->vop_pathconf(&ap)); +} + +int +vop_advlock(struct vnode *vp, caddr_t id, int op, + struct flock *fl, int flags) +{ + struct vop_advlock_args ap; + + ap.a_head.a_desc = &vop_advlock_desc; + ap.a_vp = vp; + ap.a_id = id; + ap.a_op = op; + ap.a_fl = fl; + ap.a_flags = flags; + return(vp->v_vops->vop_advlock(&ap)); +} + +int +vop_balloc(struct vnode *vp, off_t startoffset, + int size, struct ucred *cred, int flags, + struct buf **bpp) +{ + struct vop_balloc_args ap; + + ap.a_head.a_desc = &vop_balloc_desc; + ap.a_vp = vp; + ap.a_startoffset = startoffset; + ap.a_size = size; + ap.a_cred = cred; + ap.a_flags = flags; + ap.a_bpp = bpp; + return(vp->v_vops->vop_balloc(&ap)); +} + +int +vop_reallocblks(struct vnode *vp, + struct cluster_save *buflist) +{ + struct vop_reallocblks_args ap; + + ap.a_head.a_desc = &vop_reallocblks_desc; + ap.a_vp = vp; + ap.a_buflist = buflist; + return(vp->v_vops->vop_reallocblks(&ap)); +} + +int +vop_getpages(struct vnode *vp, vm_page_t *m, int count, + int reqpage, vm_ooffset_t offset) +{ + struct vop_getpages_args ap; + + ap.a_head.a_desc = &vop_getpages_desc; + ap.a_vp = vp; + ap.a_m = m; + ap.a_count = count; + ap.a_reqpage = reqpage; + ap.a_offset = offset; + return(vp->v_vops->vop_getpages(&ap)); +} + +int +vop_putpages(struct vnode *vp, vm_page_t *m, int count, + int sync, int *rtvals, + vm_ooffset_t offset) +{ + struct vop_putpages_args ap; + + ap.a_head.a_desc = &vop_putpages_desc; + ap.a_vp = vp; + ap.a_m = m; + ap.a_count = count; + ap.a_sync = sync; + ap.a_rtvals = rtvals; + ap.a_offset = offset; + return(vp->v_vops->vop_putpages(&ap)); +} + +int +vop_freeblks(struct vnode *vp, daddr_t addr, + daddr_t length) +{ + struct vop_freeblks_args ap; + + ap.a_head.a_desc = &vop_freeblks_desc; + ap.a_vp = vp; + ap.a_addr = addr; + ap.a_length = length; + return(vp->v_vops->vop_freeblks(&ap)); +} + +int +vop_bwrite(struct vnode *vp, struct buf *bp) +{ + struct vop_bwrite_args ap; + + ap.a_head.a_desc = &vop_bwrite_desc; + ap.a_vp = vp; + ap.a_bp = bp; + return(vp->v_vops->vop_bwrite(&ap)); +} + +int +vop_getacl(struct vnode *vp, acl_type_t type, + struct acl *aclp, struct ucred *cred, + struct thread *td) +{ + struct vop_getacl_args ap; + + ap.a_head.a_desc = &vop_getacl_desc; + ap.a_vp = vp; + ap.a_type = type; + ap.a_aclp = aclp; + ap.a_cred = cred; + ap.a_td = td; + return(vp->v_vops->vop_getacl(&ap)); +} + +int +vop_setacl(struct vnode *vp, acl_type_t type, + struct acl *aclp, struct ucred *cred, + struct thread *td) +{ + struct vop_setacl_args ap; + + ap.a_head.a_desc = &vop_setacl_desc; + ap.a_vp = vp; + ap.a_type = type; + ap.a_aclp = aclp; + ap.a_cred = cred; + ap.a_td = td; + return(vp->v_vops->vop_setacl(&ap)); +} + +int +vop_aclcheck(struct vnode *vp, acl_type_t type, + struct acl *aclp, struct ucred *cred, + struct thread *td) +{ + struct vop_aclcheck_args ap; + + ap.a_head.a_desc = &vop_aclcheck_desc; + ap.a_vp = vp; + ap.a_type = type; + ap.a_aclp = aclp; + ap.a_cred = cred; + ap.a_td = td; + return(vp->v_vops->vop_aclcheck(&ap)); +} + +int +vop_getextattr(struct vnode *vp, char *name, + struct uio *uio, struct ucred *cred, + struct thread *td) +{ + struct vop_getextattr_args ap; + + ap.a_head.a_desc = &vop_getextattr_desc; + ap.a_vp = vp; + ap.a_name = name; + ap.a_uio = uio; + ap.a_cred = cred; + ap.a_td = td; + return(vp->v_vops->vop_getextattr(&ap)); +} + +int +vop_setextattr(struct vnode *vp, char *name, + struct uio *uio, struct ucred *cred, + struct thread *td) +{ + struct vop_setextattr_args ap; + + ap.a_head.a_desc = &vop_setextattr_desc; + ap.a_vp = vp; + ap.a_name = name; + ap.a_uio = uio; + ap.a_cred = cred; + ap.a_td = td; + return(vp->v_vops->vop_setextattr(&ap)); +} + +int +vop_createvobject(struct vnode *vp, struct thread *td) +{ + struct vop_createvobject_args ap; + + ap.a_head.a_desc = &vop_createvobject_desc; + ap.a_vp = vp; + ap.a_td = td; + return(vp->v_vops->vop_createvobject(&ap)); +} + +int +vop_destroyvobject(struct vnode *vp) +{ + struct vop_destroyvobject_args ap; + + ap.a_head.a_desc = &vop_destroyvobject_desc; + ap.a_vp = vp; + return(vp->v_vops->vop_destroyvobject(&ap)); +} + +int +vop_getvobject(struct vnode *vp, struct vm_object **objpp) +{ + struct vop_getvobject_args ap; + + ap.a_head.a_desc = &vop_getvobject_desc; + ap.a_vp = vp; + ap.a_objpp = objpp; + return(vp->v_vops->vop_getvobject(&ap)); +} + diff --git a/sys/kern/vnode_if.src b/sys/kern/vnode_if.src deleted file mode 100644 index fd3af3fbc7..0000000000 --- a/sys/kern/vnode_if.src +++ /dev/null @@ -1,586 +0,0 @@ -# -# Copyright (c) 1992, 1993 -# The Regents of the University of California. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# 3. All advertising materials mentioning features or use of this software -# must display the following acknowledgement: -# This product includes software developed by the University of -# California, Berkeley and its contributors. -# 4. Neither the name of the University nor the names of its contributors -# may be used to endorse or promote products derived from this software -# without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# @(#)vnode_if.src 8.12 (Berkeley) 5/14/95 -# $FreeBSD: src/sys/kern/vnode_if.src,v 1.29.2.3 2001/05/18 09:58:45 bp Exp $ -# $DragonFly: src/sys/kern/Attic/vnode_if.src,v 1.6 2004/03/01 06:33:17 dillon Exp $ -# - -# -# Above each of the vop descriptors is a specification of the locking -# protocol used by each vop call. The first column is the name of -# the variable, the remaining three columns are in, out and error -# respectively. The "in" column defines the lock state on input, -# the "out" column defines the state on succesful return, and the -# "error" column defines the locking state on error exit. -# -# The locking value can take the following values: -# L: locked; not converted to type of lock. -# A: any lock type. -# S: locked with shared lock. -# E: locked with exclusive lock for this process. -# O: locked with exclusive lock for other process. -# U: unlocked. -# -: not applicable. vnode does not yet (or no longer) exists. -# =: the same on input and output, may be either L or U. -# X: locked if not nil. -# - -# -#% islocked vp = = = -# -vop_islocked { - IN struct vnode *vp; - IN struct thread *td; -}; - -# -#% lookup dvp L ? ? -#% lookup vpp - L - -# -# XXX - the lookup locking protocol defies simple description and depends -# on the flags and operation fields in the (cnp) structure. Note -# especially that *vpp may equal dvp and both may be locked. -# -vop_lookup { - IN struct vnode *dvp; - IN struct namecache *par; - INOUT struct vnode **vpp; - INOUT struct namecache **ncpp; - IN struct componentname *cnp; -}; - -# -#% cachedlookup dvp L ? ? -#% cachedlookup vpp - L - -# -# This must be an exact copy of lookup. See kern/vfs_cache.c for details. -# -vop_cachedlookup { - IN struct vnode *dvp; - IN struct namecache *par; - INOUT struct vnode **vpp; - INOUT struct namecache **ncpp; - IN struct componentname *cnp; -}; - -# -#% create dvp L L L -#% create vpp - L - -# -vop_create { - IN struct vnode *dvp; - IN struct namecache *par; - OUT struct vnode **vpp; - IN struct componentname *cnp; - IN struct vattr *vap; -}; - -# -#% whiteout dvp L L L -# -vop_whiteout { - IN struct vnode *dvp; - IN struct namecache *par; - IN struct componentname *cnp; - IN int flags; -}; - -# -#% mknod dvp L L L -#% mknod vpp - X - -# -vop_mknod { - IN struct vnode *dvp; - IN struct namecache *par; - OUT struct vnode **vpp; - IN struct componentname *cnp; - IN struct vattr *vap; -}; - -# -#% open vp L L L -# -vop_open { - IN struct vnode *vp; - IN int mode; - IN struct ucred *cred; - IN struct thread *td; -}; - -# -#% close vp U U U -# -vop_close { - IN struct vnode *vp; - IN int fflag; - IN struct thread *td; -}; - -# -#% access vp L L L -# -vop_access { - IN struct vnode *vp; - IN int mode; - IN struct ucred *cred; - IN struct thread *td; -}; - -# -#% getattr vp = = = -# -vop_getattr { - IN struct vnode *vp; - OUT struct vattr *vap; - IN struct thread *td; -}; - -# -#% setattr vp L L L -# -vop_setattr { - IN struct vnode *vp; - IN struct vattr *vap; - IN struct ucred *cred; - IN struct thread *td; -}; - -# -#% read vp L L L -# -vop_read { - IN struct vnode *vp; - INOUT struct uio *uio; - IN int ioflag; - IN struct ucred *cred; -}; - -# -#% write vp L L L -# -vop_write { - IN struct vnode *vp; - INOUT struct uio *uio; - IN int ioflag; - IN struct ucred *cred; -}; - -# -#% lease vp = = = -# -vop_lease { - IN struct vnode *vp; - IN struct thread *td; - IN struct ucred *cred; - IN int flag; -}; - -# -#% ioctl vp U U U -# -vop_ioctl { - IN struct vnode *vp; - IN u_long command; - IN caddr_t data; - IN int fflag; - IN struct ucred *cred; - IN struct thread *td; -}; - -# -#% poll vp U U U -# -vop_poll { - IN struct vnode *vp; - IN int events; - IN struct ucred *cred; - IN struct thread *td; -}; - -# -#% kqfilter vp U U U -# -vop_kqfilter { - IN struct vnode *vp; - IN struct knote *kn; -}; - -# -#% revoke vp U U U -# -vop_revoke { - IN struct vnode *vp; - IN int flags; -}; - -# -# XXX - not used -# -vop_mmap { - IN struct vnode *vp; - IN int fflags; - IN struct ucred *cred; - IN struct thread *td; -}; - -# -#% fsync vp L L L -# -vop_fsync { - IN struct vnode *vp; - IN int waitfor; - IN struct thread *td; -}; - -# -#% remove dvp L L L -#% remove vp L L L -# -vop_remove { - IN struct vnode *dvp; - IN struct namecache *par; - IN struct vnode *vp; - IN struct componentname *cnp; -}; - -# -#% link tdvp L L L -#% link vp U U U -# -vop_link { - IN struct vnode *tdvp; - IN struct namecache *par; - IN struct vnode *vp; - IN struct componentname *cnp; -}; - -# -#% rename fdvp U U U -#% rename fvp U U U -#% rename tdvp L U U -#% rename tvp X U U -# -vop_rename { - IN WILLRELE struct vnode *fdvp; - IN struct namecache *fpar; - IN WILLRELE struct vnode *fvp; - IN struct componentname *fcnp; - IN WILLRELE struct vnode *tdvp; - IN struct namecache *tpar; - IN WILLRELE struct vnode *tvp; - IN struct componentname *tcnp; -}; - -# -#% mkdir dvp L L L -#% mkdir vpp - L - -# -vop_mkdir { - IN struct vnode *dvp; - IN struct namecache *par; - OUT struct vnode **vpp; - IN struct componentname *cnp; - IN struct vattr *vap; -}; - -# -#% rmdir dvp L L L -#% rmdir vp L L L -# -vop_rmdir { - IN struct vnode *dvp; - IN struct namecache *par; - IN struct vnode *vp; - IN struct componentname *cnp; -}; - -# -#% symlink dvp L L L -#% symlink vpp - U - -# -vop_symlink { - IN struct vnode *dvp; - IN struct namecache *par; - OUT struct vnode **vpp; - IN struct componentname *cnp; - IN struct vattr *vap; - IN char *target; -}; - -# -#% readdir vp L L L -# -vop_readdir { - IN struct vnode *vp; - INOUT struct uio *uio; - IN struct ucred *cred; - INOUT int *eofflag; - OUT int *ncookies; - INOUT u_long **cookies; -}; - -# -#% readlink vp L L L -# -vop_readlink { - IN struct vnode *vp; - INOUT struct uio *uio; - IN struct ucred *cred; -}; - -# -#% inactive vp L U U -# -vop_inactive { - IN struct vnode *vp; - IN struct thread *td; -}; - -# -#% reclaim vp U U U -# -vop_reclaim { - IN struct vnode *vp; - IN struct thread *td; -}; - -# -#% lock vp ? ? ? -# -vop_lock { - IN struct vnode *vp; - IN struct lwkt_tokref *vlock; - IN int flags; - IN struct thread *td; -}; - -# -#% unlock vp L U L -# -vop_unlock { - IN struct vnode *vp; - IN struct lwkt_tokref *vlock; - IN int flags; - IN struct thread *td; -}; - -# -#% bmap vp L L L -#% bmap vpp - U - -# -vop_bmap { - IN struct vnode *vp; - IN daddr_t bn; - OUT struct vnode **vpp; - IN daddr_t *bnp; - OUT int *runp; - OUT int *runb; -}; - -# -#% strategy vp L L L -# -vop_strategy { - IN struct vnode *vp; - IN struct buf *bp; -}; - -# -#% print vp = = = -# -vop_print { - IN struct vnode *vp; -}; - -# -#% pathconf vp L L L -# -vop_pathconf { - IN struct vnode *vp; - IN int name; - OUT register_t *retval; -}; - -# -#% advlock vp U U U -# -vop_advlock { - IN struct vnode *vp; - IN caddr_t id; - IN int op; - IN struct flock *fl; - 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 -# -vop_reallocblks { - IN struct vnode *vp; - IN struct cluster_save *buflist; -}; - -# -#% getpages vp L L L -# -vop_getpages { - IN struct vnode *vp; - IN vm_page_t *m; - IN int count; - IN int reqpage; - IN vm_ooffset_t offset; -}; - -# -#% putpages vp L L L -# -vop_putpages { - IN struct vnode *vp; - IN vm_page_t *m; - IN int count; - IN int sync; - IN int *rtvals; - IN vm_ooffset_t offset; -}; - -# -#% freeblks vp - - - -# -# This call is used by the filesystem to release blocks back to -# device-driver. This is useful if the driver has a lengthy -# erase handling or similar. -# - -vop_freeblks { - IN struct vnode *vp; - IN daddr_t addr; - IN daddr_t length; -}; - -# -#% bwrite vp L L L -# -vop_bwrite { - IN struct vnode *vp; - IN struct buf *bp; -}; - -# -#% getacl vp = = = -# -vop_getacl { - IN struct vnode *vp; - IN acl_type_t type; - OUT struct acl *aclp; - IN struct ucred *cred; - IN struct thread *td; -}; - -# -#% setacl vp L L L -# -vop_setacl { - IN struct vnode *vp; - IN acl_type_t type; - IN struct acl *aclp; - IN struct ucred *cred; - IN struct thread *td; -}; - -# -#% aclcheck vp = = = -# -vop_aclcheck { - IN struct vnode *vp; - IN acl_type_t type; - IN struct acl *aclp; - IN struct ucred *cred; - IN struct thread *td; -}; - -# -#% getextattr vp L L L -# -vop_getextattr { - IN struct vnode *vp; - IN char *name; - INOUT struct uio *uio; - IN struct ucred *cred; - IN struct thread *td; -}; - -# -#% setextattr vp L L L -# -vop_setextattr { - IN struct vnode *vp; - IN char *name; - INOUT struct uio *uio; - IN struct ucred *cred; - IN struct thread *td; -}; - -# -#% createvobject vp L L L -# -vop_createvobject { - IN struct vnode *vp; - IN struct thread *td; -}; - -# -#% destroyvobject vp L L L -# -vop_destroyvobject { - IN struct vnode *vp; -}; - -# -#% getvobject vp L L L -# -vop_getvobject { - IN struct vnode *vp; - OUT struct vm_object **objpp; -}; diff --git a/sys/net/ppp_layer/Makefile b/sys/net/ppp_layer/Makefile index aa2bb0ac91..c41558fbd0 100644 --- a/sys/net/ppp_layer/Makefile +++ b/sys/net/ppp_layer/Makefile @@ -1,10 +1,10 @@ # $FreeBSD: src/sys/modules/if_ppp/Makefile,v 1.21 1999/11/28 18:52:51 bde Exp $ -# $DragonFly: src/sys/net/ppp_layer/Makefile,v 1.4 2003/09/10 21:35:42 rob Exp $ +# $DragonFly: src/sys/net/ppp_layer/Makefile,v 1.5 2004/08/13 17:51:09 dillon Exp $ .PATH: ${.CURDIR}/../ppp ${.CURDIR}/.. KMOD= if_ppp SRCS= if_ppp.c ppp_tty.c slcompress.c \ - use_ppp.h opt_inet.h opt_ipx.h opt_ppp.h vnode_if.h + use_ppp.h opt_inet.h opt_ipx.h opt_ppp.h NOMAN= NPPP?= 2 diff --git a/sys/net/tap/Makefile b/sys/net/tap/Makefile index 95d683aa0e..36ab10785c 100644 --- a/sys/net/tap/Makefile +++ b/sys/net/tap/Makefile @@ -4,13 +4,13 @@ # kernel_dir - kernel source root directory (/usr/src/sys) # # $FreeBSD: src/sys/modules/if_tap/Makefile,v 1.1.2.2 2001/07/24 09:49:42 dd Exp $ -# $DragonFly: src/sys/net/tap/Makefile,v 1.2 2003/06/17 04:28:44 dillon Exp $ +# $DragonFly: src/sys/net/tap/Makefile,v 1.3 2004/08/13 17:51:09 dillon Exp $ .PATH: ${.CURDIR}/../../net KMOD= if_tap -SRCS= if_tap.c opt_inet.h vnode_if.h +SRCS= if_tap.c opt_inet.h -CLEANFILES+= opt_inet.h vnode_if.h +CLEANFILES+= opt_inet.h opt_inet.h: echo "#define INET 1" > opt_inet.h diff --git a/sys/net/tun/Makefile b/sys/net/tun/Makefile index 7dba610a8f..243399fff8 100644 --- a/sys/net/tun/Makefile +++ b/sys/net/tun/Makefile @@ -1,9 +1,9 @@ # $FreeBSD: src/sys/modules/if_tun/Makefile,v 1.19.2.1 2001/07/24 09:49:42 dd Exp $ -# $DragonFly: src/sys/net/tun/Makefile,v 1.4 2003/09/16 09:14:40 hsu Exp $ +# $DragonFly: src/sys/net/tun/Makefile,v 1.5 2004/08/13 17:51:09 dillon Exp $ .PATH: ${.CURDIR}/../../net KMOD= if_tun -SRCS= if_tun.c vnode_if.h opt_inet.h opt_inet6.h opt_atalk.h opt_ipx.h +SRCS= if_tun.c opt_inet.h opt_inet6.h opt_atalk.h opt_ipx.h NOMAN= NBPF?= 1 diff --git a/sys/sys/vfsops.h b/sys/sys/vfsops.h new file mode 100644 index 0000000000..e1225f82e1 --- /dev/null +++ b/sys/sys/vfsops.h @@ -0,0 +1,895 @@ +/* + * Copyright (c) 2004 The DragonFly Project. All rights reserved. + * + * This code is derived from software contributed to The DragonFly Project + * by Matthew Dillon + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of The DragonFly Project nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific, prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $DragonFly: src/sys/sys/vfsops.h,v 1.1 2004/08/13 17:51:10 dillon Exp $ + */ + +/* + * The vopops structure vectors all access to a filesystem. It contains a + * fixed set of vectors which are 'compiled' by the vnodeopv_entry_desc + * array that is typically declared in "vfs/blah/blah_vnops.c". + * + * In DragonFly the ultimate goal is to thread the VFS, which means that + * the dispatch functions will eventually be called from the context of + * a management thread rather then directly called by a process. This + * requires us to divorce direct process dependancies (in particular ioctl + * and UIO's). In addition, it is our intention to implement kernel + * level cache management and coherency in the vop_*() interfacing + * layer. + * + * The number of management threads will depend on the VFS. The idea is + * to give a high performance VFS such as UFS at least one thread per cpu, + * and a low performance VFS such as CD9660 perhaps just one thread period. + * Blocking issues within the management thread are up to the VFS itself, + * but DragonFly will introduce a layer above the VFS to handle cacheable + * requests without having to enter the VFS (e.g. by making attribute + * and VM object information a permanent fixture of the vnode structure + * and accessing them directly). + * + * THE VOPOPS VECTORS SHOULD NEVER BE CALLED DIRECTLY! Instead always use + * the kernel helper procedures vop_*() to call a vopop. The kernel + * helper procedure will be responsible for handling the DragonFly messaging + * conversion when it occurs. + */ + +#ifndef _SYS_VOPOPS_H_ +#define _SYS_VOPOPS_H_ + +struct vnode; +struct thread; +struct namecache; +struct componentname; +struct vattr; +struct ucred; +struct uio; +struct knote; +struct vm_object; +struct vm_page; + +struct vop_generic_args { + struct vnodeop_desc *a_desc; +}; + +struct vop_islocked_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct thread *a_td; +}; + +struct vop_lookup_args { + struct vop_generic_args a_head; + struct vnode *a_dvp; + struct namecache *a_par; + struct vnode **a_vpp; + struct namecache **a_ncpp; + struct componentname *a_cnp; +}; + +struct vop_cachedlookup_args { + struct vop_generic_args a_head; + struct vnode *a_dvp; + struct namecache *a_par; + struct vnode **a_vpp; + struct namecache **a_ncpp; + struct componentname *a_cnp; +}; + +struct vop_create_args { + struct vop_generic_args a_head; + struct vnode *a_dvp; + struct namecache *a_par; + struct vnode **a_vpp; + struct componentname *a_cnp; + struct vattr *a_vap; +}; + +struct vop_whiteout_args { + struct vop_generic_args a_head; + struct vnode *a_dvp; + struct namecache *a_par; + struct componentname *a_cnp; + int a_flags; +}; + +struct vop_mknod_args { + struct vop_generic_args a_head; + struct vnode *a_dvp; + struct namecache *a_par; + struct vnode **a_vpp; + struct componentname *a_cnp; + struct vattr *a_vap; +}; + +struct vop_open_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + int a_mode; + struct ucred *a_cred; + struct thread *a_td; +}; + +struct vop_close_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + int a_fflag; + struct thread *a_td; +}; + +struct vop_access_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + int a_mode; + struct ucred *a_cred; + struct thread *a_td; +}; + +struct vop_getattr_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct vattr *a_vap; + struct thread *a_td; +}; + +struct vop_setattr_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct vattr *a_vap; + struct ucred *a_cred; + struct thread *a_td; +}; + +struct vop_read_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct uio *a_uio; + int a_ioflag; + struct ucred *a_cred; +}; + +struct vop_write_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct uio *a_uio; + int a_ioflag; + struct ucred *a_cred; +}; + +struct vop_lease_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct thread *a_td; + struct ucred *a_cred; + int a_flag; +}; + +struct vop_ioctl_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + u_long a_command; + caddr_t a_data; + int a_fflag; + struct ucred *a_cred; + struct thread *a_td; +}; + +struct vop_poll_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + int a_events; + struct ucred *a_cred; + struct thread *a_td; +}; + +struct vop_kqfilter_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct knote *a_kn; +}; + +struct vop_revoke_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + int a_flags; +}; + +struct vop_mmap_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + int a_fflags; + struct ucred *a_cred; + struct thread *a_td; +}; + +struct vop_fsync_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + int a_waitfor; + struct thread *a_td; +}; + +struct vop_remove_args { + struct vop_generic_args a_head; + struct vnode *a_dvp; + struct namecache *a_par; + struct vnode *a_vp; + struct componentname *a_cnp; +}; + +struct vop_link_args { + struct vop_generic_args a_head; + struct vnode *a_tdvp; + struct namecache *a_par; + struct vnode *a_vp; + struct componentname *a_cnp; +}; + +struct vop_rename_args { + struct vop_generic_args a_head; + struct vnode *a_fdvp; + struct namecache *a_fpar; + struct vnode *a_fvp; + struct componentname *a_fcnp; + struct vnode *a_tdvp; + struct namecache *a_tpar; + struct vnode *a_tvp; + struct componentname *a_tcnp; +}; + +struct vop_mkdir_args { + struct vop_generic_args a_head; + struct vnode *a_dvp; + struct namecache *a_par; + struct vnode **a_vpp; + struct componentname *a_cnp; + struct vattr *a_vap; +}; + +struct vop_rmdir_args { + struct vop_generic_args a_head; + struct vnode *a_dvp; + struct namecache *a_par; + struct vnode *a_vp; + struct componentname *a_cnp; +}; + +struct vop_symlink_args { + struct vop_generic_args a_head; + struct vnode *a_dvp; + struct namecache *a_par; + struct vnode **a_vpp; + struct componentname *a_cnp; + struct vattr *a_vap; + char *a_target; +}; + +struct vop_readdir_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct uio *a_uio; + struct ucred *a_cred; + int *a_eofflag; + int *a_ncookies; + u_long **a_cookies; +}; + +struct vop_readlink_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct uio *a_uio; + struct ucred *a_cred; +}; + +struct vop_inactive_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct thread *a_td; +}; + +struct vop_reclaim_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct thread *a_td; +}; + +struct vop_lock_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct lwkt_tokref *a_vlock; + int a_flags; + struct thread *a_td; +}; + +struct vop_unlock_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct lwkt_tokref *a_vlock; + int a_flags; + struct thread *a_td; +}; + +struct vop_bmap_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + daddr_t a_bn; + struct vnode **a_vpp; + daddr_t *a_bnp; + int *a_runp; + int *a_runb; +}; + +struct vop_strategy_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct buf *a_bp; +}; + +struct vop_print_args { + struct vop_generic_args a_head; + struct vnode *a_vp; +}; + +struct vop_pathconf_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + int a_name; + register_t *a_retval; +}; + +struct vop_advlock_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + caddr_t a_id; + int a_op; + struct flock *a_fl; + int a_flags; +}; + +struct vop_balloc_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + off_t a_startoffset; + int a_size; + struct ucred *a_cred; + int a_flags; + struct buf **a_bpp; +}; + +struct vop_reallocblks_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct cluster_save *a_buflist; +}; + +struct vop_getpages_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct vm_page **a_m; + int a_count; + int a_reqpage; + vm_ooffset_t a_offset; +}; + +struct vop_putpages_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct vm_page **a_m; + int a_count; + int a_sync; + int *a_rtvals; + vm_ooffset_t a_offset; +}; + +struct vop_freeblks_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + daddr_t a_addr; + daddr_t a_length; +}; + +struct vop_bwrite_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct buf *a_bp; +}; + +struct vop_getacl_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + acl_type_t a_type; + struct acl *a_aclp; + struct ucred *a_cred; + struct thread *a_td; +}; + +struct vop_setacl_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + acl_type_t a_type; + struct acl *a_aclp; + struct ucred *a_cred; + struct thread *a_td; +}; + +struct vop_aclcheck_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + acl_type_t a_type; + struct acl *a_aclp; + struct ucred *a_cred; + struct thread *a_td; +}; + +struct vop_getextattr_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + char *a_name; + struct uio *a_uio; + struct ucred *a_cred; + struct thread *a_td; +}; + +struct vop_setextattr_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + char *a_name; + struct uio *a_uio; + struct ucred *a_cred; + struct thread *a_td; +}; + +struct vop_createvobject_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct thread *a_td; +}; + +struct vop_destroyvobject_args { + struct vop_generic_args a_head; + struct vnode *a_vp; +}; + +struct vop_getvobject_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct vm_object **a_objpp; +}; + +/* + * This structure is the post-compiled VOP operations vector and should only + * be used by kern/vfs_vopops.c. + */ +struct vop_ops { + int vv_refs; + struct vop_ops *vv_new; +#define vop_ops_first_field vop_default + int (*vop_default)(struct vop_generic_args *); + int (*vop_islocked)(struct vop_islocked_args *); + int (*vop_lookup)(struct vop_lookup_args *); + int (*vop_cachedlookup)(struct vop_cachedlookup_args *); + int (*vop_create)(struct vop_create_args *); + int (*vop_whiteout)(struct vop_whiteout_args *); + int (*vop_mknod)(struct vop_mknod_args *); + int (*vop_open)(struct vop_open_args *); + int (*vop_close)(struct vop_close_args *); + int (*vop_access)(struct vop_access_args *); + int (*vop_getattr)(struct vop_getattr_args *); + int (*vop_setattr)(struct vop_setattr_args *); + int (*vop_read)(struct vop_read_args *); + int (*vop_write)(struct vop_write_args *); + int (*vop_lease)(struct vop_lease_args *); + int (*vop_ioctl)(struct vop_ioctl_args *); + int (*vop_poll)(struct vop_poll_args *); + int (*vop_kqfilter)(struct vop_kqfilter_args *); + int (*vop_revoke)(struct vop_revoke_args *); + int (*vop_mmap)(struct vop_mmap_args *); + int (*vop_fsync)(struct vop_fsync_args *); + int (*vop_remove)(struct vop_remove_args *); + int (*vop_link)(struct vop_link_args *); + int (*vop_rename)(struct vop_rename_args *); + int (*vop_mkdir)(struct vop_mkdir_args *); + int (*vop_rmdir)(struct vop_rmdir_args *); + int (*vop_symlink)(struct vop_symlink_args *); + int (*vop_readdir)(struct vop_readdir_args *); + int (*vop_readlink)(struct vop_readlink_args *); + int (*vop_inactive)(struct vop_inactive_args *); + int (*vop_reclaim)(struct vop_reclaim_args *); + int (*vop_lock)(struct vop_lock_args *); + int (*vop_unlock)(struct vop_unlock_args *); + int (*vop_bmap)(struct vop_bmap_args *); + int (*vop_strategy)(struct vop_strategy_args *); + int (*vop_print)(struct vop_print_args *); + int (*vop_pathconf)(struct vop_pathconf_args *); + int (*vop_advlock)(struct vop_advlock_args *); + int (*vop_balloc)(struct vop_balloc_args *); + int (*vop_reallocblks)(struct vop_reallocblks_args *); + int (*vop_getpages)(struct vop_getpages_args *); + int (*vop_putpages)(struct vop_putpages_args *); + int (*vop_freeblks)(struct vop_freeblks_args *); + int (*vop_bwrite)(struct vop_bwrite_args *); + int (*vop_getacl)(struct vop_getacl_args *); + int (*vop_setacl)(struct vop_setacl_args *); + int (*vop_aclcheck)(struct vop_aclcheck_args *); + int (*vop_getextattr)(struct vop_getextattr_args *); + int (*vop_setextattr)(struct vop_setextattr_args *); + int (*vop_createvobject)(struct vop_createvobject_args *); + int (*vop_destroyvobject)(struct vop_destroyvobject_args *); + int (*vop_getvobject)(struct vop_getvobject_args *); +#define vop_ops_last_field vop_getvobject +}; + +/* + * Kernel VOP arguments union, suitable for malloc / embedding in other + * structures. The vop_args_union can hold any VOP call argument structure. + * Note that vu_head is broken out. + */ +union vop_args_union { + struct vop_generic_args vu_head; + struct vop_generic_args vu_default; + struct vop_islocked_args vu_islocked; + struct vop_lookup_args vu_lookup; + struct vop_cachedlookup_args vu_cachedlookup; + struct vop_create_args vu_create; + struct vop_whiteout_args vu_whiteout; + struct vop_mknod_args vu_mknod; + struct vop_open_args vu_open; + struct vop_close_args vu_close; + struct vop_access_args vu_access; + struct vop_getattr_args vu_getattr; + struct vop_setattr_args vu_setattr; + struct vop_read_args vu_read; + struct vop_write_args vu_write; + struct vop_lease_args vu_lease; + struct vop_ioctl_args vu_ioctl; + struct vop_poll_args vu_poll; + struct vop_kqfilter_args vu_kqfilter; + struct vop_revoke_args vu_revoke; + struct vop_mmap_args vu_mmap; + struct vop_fsync_args vu_fsync; + struct vop_remove_args vu_remove; + struct vop_link_args vu_link; + struct vop_rename_args vu_rename; + struct vop_mkdir_args vu_mkdir; + struct vop_rmdir_args vu_rmdir; + struct vop_symlink_args vu_symlink; + struct vop_readdir_args vu_readdir; + struct vop_readlink_args vu_readlink; + struct vop_inactive_args vu_inactive; + struct vop_reclaim_args vu_reclaim; + struct vop_lock_args vu_lock; + struct vop_unlock_args vu_unlock; + struct vop_bmap_args vu_bmap; + struct vop_strategy_args vu_strategy; + struct vop_print_args vu_print; + struct vop_pathconf_args vu_pathconf; + struct vop_advlock_args vu_advlock; + struct vop_balloc_args vu_balloc; + struct vop_reallocblks_args vu_reallocblks; + struct vop_getpages_args vu_getpages; + struct vop_putpages_args vu_putpages; + struct vop_freeblks_args vu_freeblks; + struct vop_bwrite_args vu_bwrite; + struct vop_getacl_args vu_getacl; + struct vop_setacl_args vu_setacl; + struct vop_aclcheck_args vu_aclcheck; + struct vop_getextattr_args vu_getextattr; + struct vop_setextattr_args vu_setextattr; + struct vop_createvobject_args vu_createvobject; + struct vop_destroyvobject_args vu_destroyvobject; + struct vop_getvobject_args vu_getvobject; +}; + +#ifdef _KERNEL + +/* + * Kernel VOP call wrappers. These wrappers are responsible for wrapping + * the arguments in the appropriate VOP arguments structure, sending the + * message, and waiting for a reply. All kernel and VFS code should generally + * call these wrappers rather then attempt to call the operations vector + * routine directly in order to allow DragonFly to properly wrap the operation + * in a message and dispatch it to the correct thread. + */ +int vop_islocked(struct vnode *vp, struct thread *td); +int vop_lookup(struct vnode *dvp, struct namecache *par, + struct vnode **vpp, struct namecache **ncpp, + struct componentname *cnp); +int vop_cachedlookup(struct vnode *dvp, struct namecache *par, + struct vnode **vpp, struct namecache **ncpp, + struct componentname *cnp); +int vop_create(struct vnode *dvp, struct namecache *par, + struct vnode **vpp, struct componentname *cnp, + struct vattr *vap); +int vop_whiteout(struct vnode *dvp, struct namecache *par, + struct componentname *cnp, int flags); +int vop_mknod(struct vnode *dvp, struct namecache *par, + struct vnode **vpp, struct componentname *cnp, + struct vattr *vap); +int vop_open(struct vnode *vp, int mode, struct ucred *cred, + struct thread *td); +int vop_close(struct vnode *vp, int fflag, struct thread *td); +int vop_access(struct vnode *vp, int mode, struct ucred *cred, + struct thread *td); +int vop_getattr(struct vnode *vp, struct vattr *vap, + struct thread *td); +int vop_setattr(struct vnode *vp, struct vattr *vap, + struct ucred *cred, struct thread *td); +int vop_read(struct vnode *vp, struct uio *uio, int ioflag, + struct ucred *cred); +int vop_write(struct vnode *vp, struct uio *uio, int ioflag, + struct ucred *cred); +int vop_lease(struct vnode *vp, struct thread *td, + struct ucred *cred, int flag); +int vop_ioctl(struct vnode *vp, u_long command, caddr_t data, + int fflag, struct ucred *cred, + struct thread *td); +int vop_poll(struct vnode *vp, int events, struct ucred *cred, + struct thread *td); +int vop_kqfilter(struct vnode *vp, struct knote *kn); +int vop_revoke(struct vnode *vp, int flags); +int vop_mmap(struct vnode *vp, int fflags, struct ucred *cred, + struct thread *td); +int vop_fsync(struct vnode *vp, int waitfor, struct thread *td); +int vop_remove(struct vnode *dvp, struct namecache *par, + struct vnode *vp, struct componentname *cnp); +int vop_link(struct vnode *tdvp, struct namecache *par, + struct vnode *vp, struct componentname *cnp); +int vop_rename(struct vnode *fdvp, struct namecache *fpar, + struct vnode *fvp, struct componentname *fcnp, + struct vnode *tdvp, struct namecache *tpar, + struct vnode *tvp, struct componentname *tcnp); +int vop_mkdir(struct vnode *dvp, struct namecache *par, + struct vnode **vpp, struct componentname *cnp, + struct vattr *vap); +int vop_rmdir(struct vnode *dvp, struct namecache *par, + struct vnode *vp, struct componentname *cnp); +int vop_symlink(struct vnode *dvp, struct namecache *par, + struct vnode **vpp, struct componentname *cnp, + struct vattr *vap, char *target); +int vop_readdir(struct vnode *vp, struct uio *uio, + struct ucred *cred, int *eofflag, + int *ncookies, u_long **cookies); +int vop_readlink(struct vnode *vp, struct uio *uio, + struct ucred *cred); +int vop_inactive(struct vnode *vp, struct thread *td); +int vop_reclaim(struct vnode *vp, struct thread *td); +int vop_lock(struct vnode *vp, struct lwkt_tokref *vlock, + int flags, struct thread *td); +int vop_unlock(struct vnode *vp, struct lwkt_tokref *vlock, + int flags, struct thread *td); +int vop_bmap(struct vnode *vp, daddr_t bn, struct vnode **vpp, + daddr_t *bnp, int *runp, int *runb); +int vop_strategy(struct vnode *vp, struct buf *bp); +int vop_print(struct vnode *vp); +int vop_pathconf(struct vnode *vp, int name, + register_t *retval); +int vop_advlock(struct vnode *vp, caddr_t id, int op, + struct flock *fl, int flags); +int vop_balloc(struct vnode *vp, off_t startoffset, + int size, struct ucred *cred, int flags, + struct buf **bpp); +int vop_reallocblks(struct vnode *vp, + struct cluster_save *buflist); +int vop_getpages(struct vnode *vp, struct vm_page **m, int count, + int reqpage, vm_ooffset_t offset); +int vop_putpages(struct vnode *vp, struct vm_page **m, int count, + int sync, int *rtvals, + vm_ooffset_t offset); +int vop_freeblks(struct vnode *vp, daddr_t addr, + daddr_t length); +int vop_bwrite(struct vnode *vp, struct buf *bp); +int vop_getacl(struct vnode *vp, acl_type_t type, + struct acl *aclp, struct ucred *cred, + struct thread *td); +int vop_setacl(struct vnode *vp, acl_type_t type, + struct acl *aclp, struct ucred *cred, + struct thread *td); +int vop_aclcheck(struct vnode *vp, acl_type_t type, + struct acl *aclp, struct ucred *cred, + struct thread *td); +int vop_getextattr(struct vnode *vp, char *name, + struct uio *uio, struct ucred *cred, + struct thread *td); +int vop_setextattr(struct vnode *vp, char *name, + struct uio *uio, struct ucred *cred, + struct thread *td); +int vop_createvobject(struct vnode *vp, struct thread *td); +int vop_destroyvobject(struct vnode *vp); +int vop_getvobject(struct vnode *vp, struct vm_object **objpp); + +/* + * VOP operations descriptor. This is used by the vopops compiler + * to convert VFS vector arrays (typically in vfs/blah/blah_vnops.c) + * into a vop_ops operations vector. + */ +extern struct vnodeop_desc vop_default_desc; +extern struct vnodeop_desc vop_islocked_desc; +extern struct vnodeop_desc vop_lookup_desc; +extern struct vnodeop_desc vop_cachedlookup_desc; +extern struct vnodeop_desc vop_create_desc; +extern struct vnodeop_desc vop_whiteout_desc; +extern struct vnodeop_desc vop_mknod_desc; +extern struct vnodeop_desc vop_open_desc; +extern struct vnodeop_desc vop_close_desc; +extern struct vnodeop_desc vop_access_desc; +extern struct vnodeop_desc vop_getattr_desc; +extern struct vnodeop_desc vop_setattr_desc; +extern struct vnodeop_desc vop_read_desc; +extern struct vnodeop_desc vop_write_desc; +extern struct vnodeop_desc vop_lease_desc; +extern struct vnodeop_desc vop_ioctl_desc; +extern struct vnodeop_desc vop_poll_desc; +extern struct vnodeop_desc vop_kqfilter_desc; +extern struct vnodeop_desc vop_revoke_desc; +extern struct vnodeop_desc vop_mmap_desc; +extern struct vnodeop_desc vop_fsync_desc; +extern struct vnodeop_desc vop_remove_desc; +extern struct vnodeop_desc vop_link_desc; +extern struct vnodeop_desc vop_rename_desc; +extern struct vnodeop_desc vop_mkdir_desc; +extern struct vnodeop_desc vop_rmdir_desc; +extern struct vnodeop_desc vop_symlink_desc; +extern struct vnodeop_desc vop_readdir_desc; +extern struct vnodeop_desc vop_readlink_desc; +extern struct vnodeop_desc vop_inactive_desc; +extern struct vnodeop_desc vop_reclaim_desc; +extern struct vnodeop_desc vop_lock_desc; +extern struct vnodeop_desc vop_unlock_desc; +extern struct vnodeop_desc vop_bmap_desc; +extern struct vnodeop_desc vop_strategy_desc; +extern struct vnodeop_desc vop_print_desc; +extern struct vnodeop_desc vop_pathconf_desc; +extern struct vnodeop_desc vop_advlock_desc; +extern struct vnodeop_desc vop_balloc_desc; +extern struct vnodeop_desc vop_reallocblks_desc; +extern struct vnodeop_desc vop_getpages_desc; +extern struct vnodeop_desc vop_putpages_desc; +extern struct vnodeop_desc vop_freeblks_desc; +extern struct vnodeop_desc vop_bwrite_desc; +extern struct vnodeop_desc vop_getacl_desc; +extern struct vnodeop_desc vop_setacl_desc; +extern struct vnodeop_desc vop_aclcheck_desc; +extern struct vnodeop_desc vop_getextattr_desc; +extern struct vnodeop_desc vop_setextattr_desc; +extern struct vnodeop_desc vop_createvobject_desc; +extern struct vnodeop_desc vop_destroyvobject_desc; +extern struct vnodeop_desc vop_getvobject_desc; + +#endif + +/* + * VOP_ macro compatibility. Remove these as we get rid of the VOP macros. + */ +#define VOP_ISLOCKED(vp, td) \ + vop_islocked(vp, td) +#define VOP_LOOKUP(dvp, par, vpp, ncpp, cnp) \ + vop_lookup(dvp, par, vpp, ncpp, cnp) +#define VOP_CACHEDLOOKUP(dvp, par, vpp, ncpp, cnp) \ + vop_cachedlookup(dvp, par, vpp, ncpp, cnp) +#define VOP_CREATE(dvp, par, vpp, cnp, vap) \ + vop_create(dvp, par, vpp, cnp, vap) +#define VOP_WHITEOUT(dvp, par, cnp, flags) \ + vop_whiteout(dvp, par, cnp, flags) +#define VOP_MKNOD(dvp, par, vpp, cnp, vap) \ + vop_mknod(dvp, par, vpp, cnp, vap) +#define VOP_OPEN(vp, mode, cred, td) \ + vop_open(vp, mode, cred, td) +#define VOP_CLOSE(vp, fflag, td) \ + vop_close(vp, fflag, td) +#define VOP_ACCESS(vp, mode, cred, td) \ + vop_access(vp, mode, cred, td) +#define VOP_GETATTR(vp, vap, td) \ + vop_getattr(vp, vap, td) +#define VOP_SETATTR(vp, vap, cred, td) \ + vop_setattr(vp, vap, cred, td) +#define VOP_READ(vp, uio, ioflag, cred) \ + vop_read(vp, uio, ioflag, cred) +#define VOP_WRITE(vp, uio, ioflag, cred) \ + vop_write(vp, uio, ioflag, cred) +#define VOP_LEASE(vp, td, cred, flag) \ + vop_lease(vp, td, cred, flag) +#define VOP_IOCTL(vp, command, data, fflag, cred, td) \ + vop_ioctl(vp, command, data, fflag, cred, td) +#define VOP_POLL(vp, events, cred, td) \ + vop_poll(vp, events, cred, td) +#define VOP_KQFILTER(vp, kn) \ + vop_kqfilter(vp, kn) +#define VOP_REVOKE(vp, flags) \ + vop_revoke(vp, flags) +#define VOP_MMAP(vp, fflags, cred, td) \ + vop_mmap(vp, fflags, cred, td) +#define VOP_FSYNC(vp, waitfor, td) \ + vop_fsync(vp, waitfor, td) +#define VOP_REMOVE(dvp, par, vp, cnp) \ + vop_remove(dvp, par, vp, cnp) +#define VOP_LINK(tdvp, par, vp, cnp) \ + vop_link(tdvp, par, vp, cnp) +#define VOP_RENAME(fdvp, fpar, fvp, fcnp, tdvp, tpar, tvp, tcnp) \ + vop_rename(fdvp, fpar, fvp, fcnp, tdvp, tpar, tvp, tcnp) +#define VOP_MKDIR(dvp, par, vpp, cnp, vap) \ + vop_mkdir(dvp, par, vpp, cnp, vap) +#define VOP_RMDIR(dvp, par, vp, cnp) \ + vop_rmdir(dvp, par, vp, cnp) +#define VOP_SYMLINK(dvp, par, vpp, cnp, vap, target) \ + vop_symlink(dvp, par, vpp, cnp, vap, target) +#define VOP_READDIR(vp, uio, cred, eofflag, ncookies, cookies) \ + vop_readdir(vp, uio, cred, eofflag, ncookies, cookies) +#define VOP_READLINK(vp, uio, cred) \ + vop_readlink(vp, uio, cred) +#define VOP_INACTIVE(vp, td) \ + vop_inactive(vp, td) +#define VOP_RECLAIM(vp, td) \ + vop_reclaim(vp, td) +#define VOP_LOCK(vp, vlock, flags, td) \ + vop_lock(vp, vlock, flags, td) +#define VOP_UNLOCK(vp, vlock, flags, td) \ + vop_unlock(vp, vlock, flags, td) +#define VOP_BMAP(vp, bn, vpp, bnp, runp, runb) \ + vop_bmap(vp, bn, vpp, bnp, runp, runb) +#define VOP_STRATEGY(vp, bp) \ + vop_strategy(vp, bp) +#define VOP_PRINT(vp) \ + vop_print(vp) +#define VOP_PATHCONF(vp, name, retval) \ + vop_pathconf(vp, name, retval) +#define VOP_ADVLOCK(vp, id, op, fl, flags) \ + vop_advlock(vp, id, op, fl, flags) +#define VOP_BALLOC(vp, offset, size, cred, flags, bpp) \ + vop_balloc(vp, offset, size, cred, flags, bpp) +#define VOP_REALLOCBLKS(vp, buflist) \ + vop_reallocblks(vp, buflist) +#define VOP_GETPAGES(vp, m, count, reqpage, off) \ + vop_getpages(vp, m, count, reqpage, off) +#define VOP_PUTPAGES(vp, m, count, sync, rtvals, off) \ + vop_putpages(vp, m, count, sync, rtvals, off) +#define VOP_FREEBLKS(vp, addr, length) \ + vop_freeblks(vp, addr, length) +#define VOP_BWRITE(vp, bp) \ + vop_bwrite(vp, bp) +#define VOP_GETACL(vp, type, aclp, cred, td) \ + vop_getacl(vp, type, aclp, cred, td) +#define VOP_SETACL(vp, type, aclp, cred, td) \ + vop_setacl(vp, type, aclp, cred, td) +#define VOP_ACLCHECK(vp, type, aclp, cred, td) \ + vop_aclcheck(vp, type, aclp, cred, td) +#define VOP_GETEXTATTR(vp, name, uio, cred, td) \ + vop_getextattr(vp, name, uio, cred, td) +#define VOP_SETEXTATTR(vp, name, uio, cred, td) \ + vop_setextattr(vp, name, uio, cred, td) +#define VOP_CREATEVOBJECT(vp, td) \ + vop_createvobject(vp, td) +#define VOP_DESTROYVOBJECT(vp) \ + vop_destroyvobject(vp) +#define VOP_GETVOBJECT(vp, objpp) \ + vop_getvobject(vp, objpp) + +#endif + diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h index ad1d2fec55..7071dc5d06 100644 --- a/sys/sys/vnode.h +++ b/sys/sys/vnode.h @@ -32,7 +32,7 @@ * * @(#)vnode.h 8.7 (Berkeley) 2/4/94 * $FreeBSD: src/sys/sys/vnode.h,v 1.111.2.19 2002/12/29 18:19:53 dillon Exp $ - * $DragonFly: src/sys/sys/vnode.h,v 1.18 2004/06/03 18:09:33 hmp Exp $ + * $DragonFly: src/sys/sys/vnode.h,v 1.19 2004/08/13 17:51:10 dillon Exp $ */ #ifndef _SYS_VNODE_H_ @@ -44,10 +44,10 @@ #include #include #include - #if defined(_KERNEL) || defined(_KERNEL_STRUCTURES) #include #endif +#include #include @@ -80,8 +80,6 @@ enum vtagtype { */ TAILQ_HEAD(buflists, buf); -typedef int vop_t (void *); - /* * Reading or writing any of these items requires holding the appropriate lock. * v_freelist is locked by the global vnode_free_list token. @@ -101,7 +99,7 @@ struct vnode { int v_opencount; /* number of explicit opens */ u_long v_id; /* capability identifier */ struct mount *v_mount; /* ptr to vfs we are in */ - vop_t **v_op; /* vnode operations vector */ + struct vop_ops *v_vops; TAILQ_ENTRY(vnode) v_freelist; /* vnode freelist */ TAILQ_ENTRY(vnode) v_nmntvnodes; /* vnodes for mount point */ struct buflists v_cleanblkhd; /* clean blocklist head */ @@ -359,12 +357,6 @@ struct vnodeop_desc { int vdesc_cred_offset; /* cred location, if any */ int vdesc_proc_offset; /* proc location, if any */ int vdesc_componentname_offset; /* if any */ - /* - * Finally, we've got a list of private data (about each operation) - * for each transport layer. (Support to manage this list is not - * yet part of BSD.) - */ - caddr_t *vdesc_transports; }; #ifdef _KERNEL @@ -394,28 +386,25 @@ extern struct lwkt_token mntvnode_token; /* - * This structure is used to configure the new vnodeops vector. + * This structure is used to configure the new vnodeops vector. The entry + * descriptor describes a patricular VOP function while the operations + * vector descriptor recursively describes arrays of entry descriptors. */ struct vnodeopv_entry_desc { - struct vnodeop_desc *opve_op; /* which operation this is */ - vop_t *opve_impl; /* code implementing this operation */ + struct vnodeop_desc *opve_op; + int (*opve_func)(struct vop_generic_args *ap); }; + struct vnodeopv_desc { - /* ptr to the ptr to the vector where op should go */ - vop_t ***opv_desc_vector_p; + struct vop_ops **opv_desc_vector; /* vect to allocate/fill*/ struct vnodeopv_entry_desc *opv_desc_ops; /* null terminated list */ }; -/* - * A generic structure. - * This can be used by bypass routines to identify generic arguments. - */ -struct vop_generic_args { - struct vnodeop_desc *a_desc; - /* other random data follows, presumably */ +struct vnodeopv_node { + TAILQ_ENTRY(vnodeopv_node) entry; + const struct vnodeopv_desc *vdesc; }; - #ifdef DEBUG_VFS_LOCKS /* * Macros to aid in tracing VFS locking problems. Not totally @@ -484,12 +473,15 @@ void assert_vop_unlocked(struct vnode *vp, const char *str); * vclean changes the ops vector and then wants to call ops with the old * vector. */ -#define VOCALL(OPSV,OFF,AP) (( *((OPSV)[(OFF)])) (AP)) + +typedef int (*vocall_func_t)(struct vop_generic_args *); + +#define VOCALL(vops,off,ap) (*(vocall_func_t *)((char *)(vops)+(off)))(ap) /* * This call works for vnodes in the kernel. */ -#define VCALL(VP,OFF,AP) VOCALL((VP)->v_op,(OFF),(AP)) +#define VCALL(VP,OFF,AP) VOCALL((VP)->v_vops,(OFF),(AP)) #define VDESC(OP) (& __CONCAT(OP,_desc)) #define VOFFSET(OP) (VDESC(OP)->vdesc_offset) @@ -507,11 +499,6 @@ vn_canvmio(struct vnode *vp) return(FALSE); } -/* - * Finally, include the default set of vnode operations. - */ -#include "vnode_if.h" - /* * Public vnode manipulation functions. */ @@ -538,7 +525,7 @@ int bdevvp (dev_t dev, struct vnode **vpp); void cvtstat (struct stat *st, struct ostat *ost); void cvtnstat (struct stat *sb, struct nstat *nsb); int getnewvnode (enum vtagtype tag, - struct mount *mp, vop_t **vops, struct vnode **vpp); + struct mount *mp, struct vop_ops *vops, struct vnode **vpp); int lease_check (struct vop_lease_args *ap); int spec_vnoperate (struct vop_generic_args *); int speedup_syncer (void); @@ -591,17 +578,17 @@ int vfs_object_create (struct vnode *vp, struct thread *td); void vfs_timestamp (struct timespec *); int vn_writechk (struct vnode *vp); int vop_stdbwrite (struct vop_bwrite_args *ap); -int vop_stdislocked (struct vop_islocked_args *); -int vop_stdlock (struct vop_lock_args *); -int vop_stdunlock (struct vop_unlock_args *); -int vop_noislocked (struct vop_islocked_args *); -int vop_nolock (struct vop_lock_args *); -int vop_nopoll (struct vop_poll_args *); -int vop_nounlock (struct vop_unlock_args *); -int vop_stdpathconf (struct vop_pathconf_args *); -int vop_stdpoll (struct vop_poll_args *); -int vop_revoke (struct vop_revoke_args *); -int vop_sharedlock (struct vop_lock_args *); +int vop_stdislocked (struct vop_islocked_args *ap); +int vop_stdlock (struct vop_lock_args *ap); +int vop_stdunlock (struct vop_unlock_args *ap); +int vop_noislocked (struct vop_islocked_args *ap); +int vop_nolock (struct vop_lock_args *ap); +int vop_nopoll (struct vop_poll_args *ap); +int vop_nounlock (struct vop_unlock_args *ap); +int vop_stdpathconf (struct vop_pathconf_args *ap); +int vop_stdpoll (struct vop_poll_args *ap); +int vop_stdrevoke (struct vop_revoke_args *ap); +int vop_sharedlock (struct vop_lock_args *ap); int vop_eopnotsupp (struct vop_generic_args *ap); int vop_ebadf (struct vop_generic_args *ap); int vop_einval (struct vop_generic_args *ap); @@ -617,8 +604,8 @@ void vput (struct vnode *vp); void vrele (struct vnode *vp); void vref (struct vnode *vp); -extern vop_t **default_vnodeop_p; -extern vop_t **spec_vnodeop_p; +extern struct vop_ops *default_vnode_vops; +extern struct vop_ops *spec_vnode_vops; #endif /* _KERNEL */ diff --git a/sys/sys/vopops.h b/sys/sys/vopops.h new file mode 100644 index 0000000000..81e48e4fab --- /dev/null +++ b/sys/sys/vopops.h @@ -0,0 +1,895 @@ +/* + * Copyright (c) 2004 The DragonFly Project. All rights reserved. + * + * This code is derived from software contributed to The DragonFly Project + * by Matthew Dillon + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of The DragonFly Project nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific, prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $DragonFly: src/sys/sys/Attic/vopops.h,v 1.1 2004/08/13 17:51:10 dillon Exp $ + */ + +/* + * The vopops structure vectors all access to a filesystem. It contains a + * fixed set of vectors which are 'compiled' by the vnodeopv_entry_desc + * array that is typically declared in "vfs/blah/blah_vnops.c". + * + * In DragonFly the ultimate goal is to thread the VFS, which means that + * the dispatch functions will eventually be called from the context of + * a management thread rather then directly called by a process. This + * requires us to divorce direct process dependancies (in particular ioctl + * and UIO's). In addition, it is our intention to implement kernel + * level cache management and coherency in the vop_*() interfacing + * layer. + * + * The number of management threads will depend on the VFS. The idea is + * to give a high performance VFS such as UFS at least one thread per cpu, + * and a low performance VFS such as CD9660 perhaps just one thread period. + * Blocking issues within the management thread are up to the VFS itself, + * but DragonFly will introduce a layer above the VFS to handle cacheable + * requests without having to enter the VFS (e.g. by making attribute + * and VM object information a permanent fixture of the vnode structure + * and accessing them directly). + * + * THE VOPOPS VECTORS SHOULD NEVER BE CALLED DIRECTLY! Instead always use + * the kernel helper procedures vop_*() to call a vopop. The kernel + * helper procedure will be responsible for handling the DragonFly messaging + * conversion when it occurs. + */ + +#ifndef _SYS_VOPOPS_H_ +#define _SYS_VOPOPS_H_ + +struct vnode; +struct thread; +struct namecache; +struct componentname; +struct vattr; +struct ucred; +struct uio; +struct knote; +struct vm_object; +struct vm_page; + +struct vop_generic_args { + struct vnodeop_desc *a_desc; +}; + +struct vop_islocked_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct thread *a_td; +}; + +struct vop_lookup_args { + struct vop_generic_args a_head; + struct vnode *a_dvp; + struct namecache *a_par; + struct vnode **a_vpp; + struct namecache **a_ncpp; + struct componentname *a_cnp; +}; + +struct vop_cachedlookup_args { + struct vop_generic_args a_head; + struct vnode *a_dvp; + struct namecache *a_par; + struct vnode **a_vpp; + struct namecache **a_ncpp; + struct componentname *a_cnp; +}; + +struct vop_create_args { + struct vop_generic_args a_head; + struct vnode *a_dvp; + struct namecache *a_par; + struct vnode **a_vpp; + struct componentname *a_cnp; + struct vattr *a_vap; +}; + +struct vop_whiteout_args { + struct vop_generic_args a_head; + struct vnode *a_dvp; + struct namecache *a_par; + struct componentname *a_cnp; + int a_flags; +}; + +struct vop_mknod_args { + struct vop_generic_args a_head; + struct vnode *a_dvp; + struct namecache *a_par; + struct vnode **a_vpp; + struct componentname *a_cnp; + struct vattr *a_vap; +}; + +struct vop_open_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + int a_mode; + struct ucred *a_cred; + struct thread *a_td; +}; + +struct vop_close_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + int a_fflag; + struct thread *a_td; +}; + +struct vop_access_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + int a_mode; + struct ucred *a_cred; + struct thread *a_td; +}; + +struct vop_getattr_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct vattr *a_vap; + struct thread *a_td; +}; + +struct vop_setattr_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct vattr *a_vap; + struct ucred *a_cred; + struct thread *a_td; +}; + +struct vop_read_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct uio *a_uio; + int a_ioflag; + struct ucred *a_cred; +}; + +struct vop_write_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct uio *a_uio; + int a_ioflag; + struct ucred *a_cred; +}; + +struct vop_lease_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct thread *a_td; + struct ucred *a_cred; + int a_flag; +}; + +struct vop_ioctl_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + u_long a_command; + caddr_t a_data; + int a_fflag; + struct ucred *a_cred; + struct thread *a_td; +}; + +struct vop_poll_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + int a_events; + struct ucred *a_cred; + struct thread *a_td; +}; + +struct vop_kqfilter_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct knote *a_kn; +}; + +struct vop_revoke_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + int a_flags; +}; + +struct vop_mmap_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + int a_fflags; + struct ucred *a_cred; + struct thread *a_td; +}; + +struct vop_fsync_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + int a_waitfor; + struct thread *a_td; +}; + +struct vop_remove_args { + struct vop_generic_args a_head; + struct vnode *a_dvp; + struct namecache *a_par; + struct vnode *a_vp; + struct componentname *a_cnp; +}; + +struct vop_link_args { + struct vop_generic_args a_head; + struct vnode *a_tdvp; + struct namecache *a_par; + struct vnode *a_vp; + struct componentname *a_cnp; +}; + +struct vop_rename_args { + struct vop_generic_args a_head; + struct vnode *a_fdvp; + struct namecache *a_fpar; + struct vnode *a_fvp; + struct componentname *a_fcnp; + struct vnode *a_tdvp; + struct namecache *a_tpar; + struct vnode *a_tvp; + struct componentname *a_tcnp; +}; + +struct vop_mkdir_args { + struct vop_generic_args a_head; + struct vnode *a_dvp; + struct namecache *a_par; + struct vnode **a_vpp; + struct componentname *a_cnp; + struct vattr *a_vap; +}; + +struct vop_rmdir_args { + struct vop_generic_args a_head; + struct vnode *a_dvp; + struct namecache *a_par; + struct vnode *a_vp; + struct componentname *a_cnp; +}; + +struct vop_symlink_args { + struct vop_generic_args a_head; + struct vnode *a_dvp; + struct namecache *a_par; + struct vnode **a_vpp; + struct componentname *a_cnp; + struct vattr *a_vap; + char *a_target; +}; + +struct vop_readdir_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct uio *a_uio; + struct ucred *a_cred; + int *a_eofflag; + int *a_ncookies; + u_long **a_cookies; +}; + +struct vop_readlink_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct uio *a_uio; + struct ucred *a_cred; +}; + +struct vop_inactive_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct thread *a_td; +}; + +struct vop_reclaim_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct thread *a_td; +}; + +struct vop_lock_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct lwkt_tokref *a_vlock; + int a_flags; + struct thread *a_td; +}; + +struct vop_unlock_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct lwkt_tokref *a_vlock; + int a_flags; + struct thread *a_td; +}; + +struct vop_bmap_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + daddr_t a_bn; + struct vnode **a_vpp; + daddr_t *a_bnp; + int *a_runp; + int *a_runb; +}; + +struct vop_strategy_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct buf *a_bp; +}; + +struct vop_print_args { + struct vop_generic_args a_head; + struct vnode *a_vp; +}; + +struct vop_pathconf_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + int a_name; + register_t *a_retval; +}; + +struct vop_advlock_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + caddr_t a_id; + int a_op; + struct flock *a_fl; + int a_flags; +}; + +struct vop_balloc_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + off_t a_startoffset; + int a_size; + struct ucred *a_cred; + int a_flags; + struct buf **a_bpp; +}; + +struct vop_reallocblks_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct cluster_save *a_buflist; +}; + +struct vop_getpages_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct vm_page **a_m; + int a_count; + int a_reqpage; + vm_ooffset_t a_offset; +}; + +struct vop_putpages_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct vm_page **a_m; + int a_count; + int a_sync; + int *a_rtvals; + vm_ooffset_t a_offset; +}; + +struct vop_freeblks_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + daddr_t a_addr; + daddr_t a_length; +}; + +struct vop_bwrite_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct buf *a_bp; +}; + +struct vop_getacl_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + acl_type_t a_type; + struct acl *a_aclp; + struct ucred *a_cred; + struct thread *a_td; +}; + +struct vop_setacl_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + acl_type_t a_type; + struct acl *a_aclp; + struct ucred *a_cred; + struct thread *a_td; +}; + +struct vop_aclcheck_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + acl_type_t a_type; + struct acl *a_aclp; + struct ucred *a_cred; + struct thread *a_td; +}; + +struct vop_getextattr_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + char *a_name; + struct uio *a_uio; + struct ucred *a_cred; + struct thread *a_td; +}; + +struct vop_setextattr_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + char *a_name; + struct uio *a_uio; + struct ucred *a_cred; + struct thread *a_td; +}; + +struct vop_createvobject_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct thread *a_td; +}; + +struct vop_destroyvobject_args { + struct vop_generic_args a_head; + struct vnode *a_vp; +}; + +struct vop_getvobject_args { + struct vop_generic_args a_head; + struct vnode *a_vp; + struct vm_object **a_objpp; +}; + +/* + * This structure is the post-compiled VOP operations vector and should only + * be used by kern/vfs_vopops.c. + */ +struct vop_ops { + int vv_refs; + struct vop_ops *vv_new; +#define vop_ops_first_field vop_default + int (*vop_default)(struct vop_generic_args *); + int (*vop_islocked)(struct vop_islocked_args *); + int (*vop_lookup)(struct vop_lookup_args *); + int (*vop_cachedlookup)(struct vop_cachedlookup_args *); + int (*vop_create)(struct vop_create_args *); + int (*vop_whiteout)(struct vop_whiteout_args *); + int (*vop_mknod)(struct vop_mknod_args *); + int (*vop_open)(struct vop_open_args *); + int (*vop_close)(struct vop_close_args *); + int (*vop_access)(struct vop_access_args *); + int (*vop_getattr)(struct vop_getattr_args *); + int (*vop_setattr)(struct vop_setattr_args *); + int (*vop_read)(struct vop_read_args *); + int (*vop_write)(struct vop_write_args *); + int (*vop_lease)(struct vop_lease_args *); + int (*vop_ioctl)(struct vop_ioctl_args *); + int (*vop_poll)(struct vop_poll_args *); + int (*vop_kqfilter)(struct vop_kqfilter_args *); + int (*vop_revoke)(struct vop_revoke_args *); + int (*vop_mmap)(struct vop_mmap_args *); + int (*vop_fsync)(struct vop_fsync_args *); + int (*vop_remove)(struct vop_remove_args *); + int (*vop_link)(struct vop_link_args *); + int (*vop_rename)(struct vop_rename_args *); + int (*vop_mkdir)(struct vop_mkdir_args *); + int (*vop_rmdir)(struct vop_rmdir_args *); + int (*vop_symlink)(struct vop_symlink_args *); + int (*vop_readdir)(struct vop_readdir_args *); + int (*vop_readlink)(struct vop_readlink_args *); + int (*vop_inactive)(struct vop_inactive_args *); + int (*vop_reclaim)(struct vop_reclaim_args *); + int (*vop_lock)(struct vop_lock_args *); + int (*vop_unlock)(struct vop_unlock_args *); + int (*vop_bmap)(struct vop_bmap_args *); + int (*vop_strategy)(struct vop_strategy_args *); + int (*vop_print)(struct vop_print_args *); + int (*vop_pathconf)(struct vop_pathconf_args *); + int (*vop_advlock)(struct vop_advlock_args *); + int (*vop_balloc)(struct vop_balloc_args *); + int (*vop_reallocblks)(struct vop_reallocblks_args *); + int (*vop_getpages)(struct vop_getpages_args *); + int (*vop_putpages)(struct vop_putpages_args *); + int (*vop_freeblks)(struct vop_freeblks_args *); + int (*vop_bwrite)(struct vop_bwrite_args *); + int (*vop_getacl)(struct vop_getacl_args *); + int (*vop_setacl)(struct vop_setacl_args *); + int (*vop_aclcheck)(struct vop_aclcheck_args *); + int (*vop_getextattr)(struct vop_getextattr_args *); + int (*vop_setextattr)(struct vop_setextattr_args *); + int (*vop_createvobject)(struct vop_createvobject_args *); + int (*vop_destroyvobject)(struct vop_destroyvobject_args *); + int (*vop_getvobject)(struct vop_getvobject_args *); +#define vop_ops_last_field vop_getvobject +}; + +/* + * Kernel VOP arguments union, suitable for malloc / embedding in other + * structures. The vop_args_union can hold any VOP call argument structure. + * Note that vu_head is broken out. + */ +union vop_args_union { + struct vop_generic_args vu_head; + struct vop_generic_args vu_default; + struct vop_islocked_args vu_islocked; + struct vop_lookup_args vu_lookup; + struct vop_cachedlookup_args vu_cachedlookup; + struct vop_create_args vu_create; + struct vop_whiteout_args vu_whiteout; + struct vop_mknod_args vu_mknod; + struct vop_open_args vu_open; + struct vop_close_args vu_close; + struct vop_access_args vu_access; + struct vop_getattr_args vu_getattr; + struct vop_setattr_args vu_setattr; + struct vop_read_args vu_read; + struct vop_write_args vu_write; + struct vop_lease_args vu_lease; + struct vop_ioctl_args vu_ioctl; + struct vop_poll_args vu_poll; + struct vop_kqfilter_args vu_kqfilter; + struct vop_revoke_args vu_revoke; + struct vop_mmap_args vu_mmap; + struct vop_fsync_args vu_fsync; + struct vop_remove_args vu_remove; + struct vop_link_args vu_link; + struct vop_rename_args vu_rename; + struct vop_mkdir_args vu_mkdir; + struct vop_rmdir_args vu_rmdir; + struct vop_symlink_args vu_symlink; + struct vop_readdir_args vu_readdir; + struct vop_readlink_args vu_readlink; + struct vop_inactive_args vu_inactive; + struct vop_reclaim_args vu_reclaim; + struct vop_lock_args vu_lock; + struct vop_unlock_args vu_unlock; + struct vop_bmap_args vu_bmap; + struct vop_strategy_args vu_strategy; + struct vop_print_args vu_print; + struct vop_pathconf_args vu_pathconf; + struct vop_advlock_args vu_advlock; + struct vop_balloc_args vu_balloc; + struct vop_reallocblks_args vu_reallocblks; + struct vop_getpages_args vu_getpages; + struct vop_putpages_args vu_putpages; + struct vop_freeblks_args vu_freeblks; + struct vop_bwrite_args vu_bwrite; + struct vop_getacl_args vu_getacl; + struct vop_setacl_args vu_setacl; + struct vop_aclcheck_args vu_aclcheck; + struct vop_getextattr_args vu_getextattr; + struct vop_setextattr_args vu_setextattr; + struct vop_createvobject_args vu_createvobject; + struct vop_destroyvobject_args vu_destroyvobject; + struct vop_getvobject_args vu_getvobject; +}; + +#ifdef _KERNEL + +/* + * Kernel VOP call wrappers. These wrappers are responsible for wrapping + * the arguments in the appropriate VOP arguments structure, sending the + * message, and waiting for a reply. All kernel and VFS code should generally + * call these wrappers rather then attempt to call the operations vector + * routine directly in order to allow DragonFly to properly wrap the operation + * in a message and dispatch it to the correct thread. + */ +int vop_islocked(struct vnode *vp, struct thread *td); +int vop_lookup(struct vnode *dvp, struct namecache *par, + struct vnode **vpp, struct namecache **ncpp, + struct componentname *cnp); +int vop_cachedlookup(struct vnode *dvp, struct namecache *par, + struct vnode **vpp, struct namecache **ncpp, + struct componentname *cnp); +int vop_create(struct vnode *dvp, struct namecache *par, + struct vnode **vpp, struct componentname *cnp, + struct vattr *vap); +int vop_whiteout(struct vnode *dvp, struct namecache *par, + struct componentname *cnp, int flags); +int vop_mknod(struct vnode *dvp, struct namecache *par, + struct vnode **vpp, struct componentname *cnp, + struct vattr *vap); +int vop_open(struct vnode *vp, int mode, struct ucred *cred, + struct thread *td); +int vop_close(struct vnode *vp, int fflag, struct thread *td); +int vop_access(struct vnode *vp, int mode, struct ucred *cred, + struct thread *td); +int vop_getattr(struct vnode *vp, struct vattr *vap, + struct thread *td); +int vop_setattr(struct vnode *vp, struct vattr *vap, + struct ucred *cred, struct thread *td); +int vop_read(struct vnode *vp, struct uio *uio, int ioflag, + struct ucred *cred); +int vop_write(struct vnode *vp, struct uio *uio, int ioflag, + struct ucred *cred); +int vop_lease(struct vnode *vp, struct thread *td, + struct ucred *cred, int flag); +int vop_ioctl(struct vnode *vp, u_long command, caddr_t data, + int fflag, struct ucred *cred, + struct thread *td); +int vop_poll(struct vnode *vp, int events, struct ucred *cred, + struct thread *td); +int vop_kqfilter(struct vnode *vp, struct knote *kn); +int vop_revoke(struct vnode *vp, int flags); +int vop_mmap(struct vnode *vp, int fflags, struct ucred *cred, + struct thread *td); +int vop_fsync(struct vnode *vp, int waitfor, struct thread *td); +int vop_remove(struct vnode *dvp, struct namecache *par, + struct vnode *vp, struct componentname *cnp); +int vop_link(struct vnode *tdvp, struct namecache *par, + struct vnode *vp, struct componentname *cnp); +int vop_rename(struct vnode *fdvp, struct namecache *fpar, + struct vnode *fvp, struct componentname *fcnp, + struct vnode *tdvp, struct namecache *tpar, + struct vnode *tvp, struct componentname *tcnp); +int vop_mkdir(struct vnode *dvp, struct namecache *par, + struct vnode **vpp, struct componentname *cnp, + struct vattr *vap); +int vop_rmdir(struct vnode *dvp, struct namecache *par, + struct vnode *vp, struct componentname *cnp); +int vop_symlink(struct vnode *dvp, struct namecache *par, + struct vnode **vpp, struct componentname *cnp, + struct vattr *vap, char *target); +int vop_readdir(struct vnode *vp, struct uio *uio, + struct ucred *cred, int *eofflag, + int *ncookies, u_long **cookies); +int vop_readlink(struct vnode *vp, struct uio *uio, + struct ucred *cred); +int vop_inactive(struct vnode *vp, struct thread *td); +int vop_reclaim(struct vnode *vp, struct thread *td); +int vop_lock(struct vnode *vp, struct lwkt_tokref *vlock, + int flags, struct thread *td); +int vop_unlock(struct vnode *vp, struct lwkt_tokref *vlock, + int flags, struct thread *td); +int vop_bmap(struct vnode *vp, daddr_t bn, struct vnode **vpp, + daddr_t *bnp, int *runp, int *runb); +int vop_strategy(struct vnode *vp, struct buf *bp); +int vop_print(struct vnode *vp); +int vop_pathconf(struct vnode *vp, int name, + register_t *retval); +int vop_advlock(struct vnode *vp, caddr_t id, int op, + struct flock *fl, int flags); +int vop_balloc(struct vnode *vp, off_t startoffset, + int size, struct ucred *cred, int flags, + struct buf **bpp); +int vop_reallocblks(struct vnode *vp, + struct cluster_save *buflist); +int vop_getpages(struct vnode *vp, struct vm_page **m, int count, + int reqpage, vm_ooffset_t offset); +int vop_putpages(struct vnode *vp, struct vm_page **m, int count, + int sync, int *rtvals, + vm_ooffset_t offset); +int vop_freeblks(struct vnode *vp, daddr_t addr, + daddr_t length); +int vop_bwrite(struct vnode *vp, struct buf *bp); +int vop_getacl(struct vnode *vp, acl_type_t type, + struct acl *aclp, struct ucred *cred, + struct thread *td); +int vop_setacl(struct vnode *vp, acl_type_t type, + struct acl *aclp, struct ucred *cred, + struct thread *td); +int vop_aclcheck(struct vnode *vp, acl_type_t type, + struct acl *aclp, struct ucred *cred, + struct thread *td); +int vop_getextattr(struct vnode *vp, char *name, + struct uio *uio, struct ucred *cred, + struct thread *td); +int vop_setextattr(struct vnode *vp, char *name, + struct uio *uio, struct ucred *cred, + struct thread *td); +int vop_createvobject(struct vnode *vp, struct thread *td); +int vop_destroyvobject(struct vnode *vp); +int vop_getvobject(struct vnode *vp, struct vm_object **objpp); + +/* + * VOP operations descriptor. This is used by the vopops compiler + * to convert VFS vector arrays (typically in vfs/blah/blah_vnops.c) + * into a vop_ops operations vector. + */ +extern struct vnodeop_desc vop_default_desc; +extern struct vnodeop_desc vop_islocked_desc; +extern struct vnodeop_desc vop_lookup_desc; +extern struct vnodeop_desc vop_cachedlookup_desc; +extern struct vnodeop_desc vop_create_desc; +extern struct vnodeop_desc vop_whiteout_desc; +extern struct vnodeop_desc vop_mknod_desc; +extern struct vnodeop_desc vop_open_desc; +extern struct vnodeop_desc vop_close_desc; +extern struct vnodeop_desc vop_access_desc; +extern struct vnodeop_desc vop_getattr_desc; +extern struct vnodeop_desc vop_setattr_desc; +extern struct vnodeop_desc vop_read_desc; +extern struct vnodeop_desc vop_write_desc; +extern struct vnodeop_desc vop_lease_desc; +extern struct vnodeop_desc vop_ioctl_desc; +extern struct vnodeop_desc vop_poll_desc; +extern struct vnodeop_desc vop_kqfilter_desc; +extern struct vnodeop_desc vop_revoke_desc; +extern struct vnodeop_desc vop_mmap_desc; +extern struct vnodeop_desc vop_fsync_desc; +extern struct vnodeop_desc vop_remove_desc; +extern struct vnodeop_desc vop_link_desc; +extern struct vnodeop_desc vop_rename_desc; +extern struct vnodeop_desc vop_mkdir_desc; +extern struct vnodeop_desc vop_rmdir_desc; +extern struct vnodeop_desc vop_symlink_desc; +extern struct vnodeop_desc vop_readdir_desc; +extern struct vnodeop_desc vop_readlink_desc; +extern struct vnodeop_desc vop_inactive_desc; +extern struct vnodeop_desc vop_reclaim_desc; +extern struct vnodeop_desc vop_lock_desc; +extern struct vnodeop_desc vop_unlock_desc; +extern struct vnodeop_desc vop_bmap_desc; +extern struct vnodeop_desc vop_strategy_desc; +extern struct vnodeop_desc vop_print_desc; +extern struct vnodeop_desc vop_pathconf_desc; +extern struct vnodeop_desc vop_advlock_desc; +extern struct vnodeop_desc vop_balloc_desc; +extern struct vnodeop_desc vop_reallocblks_desc; +extern struct vnodeop_desc vop_getpages_desc; +extern struct vnodeop_desc vop_putpages_desc; +extern struct vnodeop_desc vop_freeblks_desc; +extern struct vnodeop_desc vop_bwrite_desc; +extern struct vnodeop_desc vop_getacl_desc; +extern struct vnodeop_desc vop_setacl_desc; +extern struct vnodeop_desc vop_aclcheck_desc; +extern struct vnodeop_desc vop_getextattr_desc; +extern struct vnodeop_desc vop_setextattr_desc; +extern struct vnodeop_desc vop_createvobject_desc; +extern struct vnodeop_desc vop_destroyvobject_desc; +extern struct vnodeop_desc vop_getvobject_desc; + +#endif + +/* + * VOP_ macro compatibility. Remove these as we get rid of the VOP macros. + */ +#define VOP_ISLOCKED(vp, td) \ + vop_islocked(vp, td) +#define VOP_LOOKUP(dvp, par, vpp, ncpp, cnp) \ + vop_lookup(dvp, par, vpp, ncpp, cnp) +#define VOP_CACHEDLOOKUP(dvp, par, vpp, ncpp, cnp) \ + vop_cachedlookup(dvp, par, vpp, ncpp, cnp) +#define VOP_CREATE(dvp, par, vpp, cnp, vap) \ + vop_create(dvp, par, vpp, cnp, vap) +#define VOP_WHITEOUT(dvp, par, cnp, flags) \ + vop_whiteout(dvp, par, cnp, flags) +#define VOP_MKNOD(dvp, par, vpp, cnp, vap) \ + vop_mknod(dvp, par, vpp, cnp, vap) +#define VOP_OPEN(vp, mode, cred, td) \ + vop_open(vp, mode, cred, td) +#define VOP_CLOSE(vp, fflag, td) \ + vop_close(vp, fflag, td) +#define VOP_ACCESS(vp, mode, cred, td) \ + vop_access(vp, mode, cred, td) +#define VOP_GETATTR(vp, vap, td) \ + vop_getattr(vp, vap, td) +#define VOP_SETATTR(vp, vap, cred, td) \ + vop_setattr(vp, vap, cred, td) +#define VOP_READ(vp, uio, ioflag, cred) \ + vop_read(vp, uio, ioflag, cred) +#define VOP_WRITE(vp, uio, ioflag, cred) \ + vop_write(vp, uio, ioflag, cred) +#define VOP_LEASE(vp, td, cred, flag) \ + vop_lease(vp, td, cred, flag) +#define VOP_IOCTL(vp, command, data, fflag, cred, td) \ + vop_ioctl(vp, command, data, fflag, cred, td) +#define VOP_POLL(vp, events, cred, td) \ + vop_poll(vp, events, cred, td) +#define VOP_KQFILTER(vp, kn) \ + vop_kqfilter(vp, kn) +#define VOP_REVOKE(vp, flags) \ + vop_revoke(vp, flags) +#define VOP_MMAP(vp, fflags, cred, td) \ + vop_mmap(vp, fflags, cred, td) +#define VOP_FSYNC(vp, waitfor, td) \ + vop_fsync(vp, waitfor, td) +#define VOP_REMOVE(dvp, par, vp, cnp) \ + vop_remove(dvp, par, vp, cnp) +#define VOP_LINK(tdvp, par, vp, cnp) \ + vop_link(tdvp, par, vp, cnp) +#define VOP_RENAME(fdvp, fpar, fvp, fcnp, tdvp, tpar, tvp, tcnp) \ + vop_rename(fdvp, fpar, fvp, fcnp, tdvp, tpar, tvp, tcnp) +#define VOP_MKDIR(dvp, par, vpp, cnp, vap) \ + vop_mkdir(dvp, par, vpp, cnp, vap) +#define VOP_RMDIR(dvp, par, vp, cnp) \ + vop_rmdir(dvp, par, vp, cnp) +#define VOP_SYMLINK(dvp, par, vpp, cnp, vap, target) \ + vop_symlink(dvp, par, vpp, cnp, vap, target) +#define VOP_READDIR(vp, uio, cred, eofflag, ncookies, cookies) \ + vop_readdir(vp, uio, cred, eofflag, ncookies, cookies) +#define VOP_READLINK(vp, uio, cred) \ + vop_readlink(vp, uio, cred) +#define VOP_INACTIVE(vp, td) \ + vop_inactive(vp, td) +#define VOP_RECLAIM(vp, td) \ + vop_reclaim(vp, td) +#define VOP_LOCK(vp, vlock, flags, td) \ + vop_lock(vp, vlock, flags, td) +#define VOP_UNLOCK(vp, vlock, flags, td) \ + vop_unlock(vp, vlock, flags, td) +#define VOP_BMAP(vp, bn, vpp, bnp, runp, runb) \ + vop_bmap(vp, bn, vpp, bnp, runp, runb) +#define VOP_STRATEGY(vp, bp) \ + vop_strategy(vp, bp) +#define VOP_PRINT(vp) \ + vop_print(vp) +#define VOP_PATHCONF(vp, name, retval) \ + vop_pathconf(vp, name, retval) +#define VOP_ADVLOCK(vp, id, op, fl, flags) \ + vop_advlock(vp, id, op, fl, flags) +#define VOP_BALLOC(vp, offset, size, cred, flags, bpp) \ + vop_balloc(vp, offset, size, cred, flags, bpp) +#define VOP_REALLOCBLKS(vp, buflist) \ + vop_reallocblks(vp, buflist) +#define VOP_GETPAGES(vp, m, count, reqpage, off) \ + vop_getpages(vp, m, count, reqpage, off) +#define VOP_PUTPAGES(vp, m, count, sync, rtvals, off) \ + vop_putpages(vp, m, count, sync, rtvals, off) +#define VOP_FREEBLKS(vp, addr, length) \ + vop_freeblks(vp, addr, length) +#define VOP_BWRITE(vp, bp) \ + vop_bwrite(vp, bp) +#define VOP_GETACL(vp, type, aclp, cred, td) \ + vop_getacl(vp, type, aclp, cred, td) +#define VOP_SETACL(vp, type, aclp, cred, td) \ + vop_setacl(vp, type, aclp, cred, td) +#define VOP_ACLCHECK(vp, type, aclp, cred, td) \ + vop_aclcheck(vp, type, aclp, cred, td) +#define VOP_GETEXTATTR(vp, name, uio, cred, td) \ + vop_getextattr(vp, name, uio, cred, td) +#define VOP_SETEXTATTR(vp, name, uio, cred, td) \ + vop_setextattr(vp, name, uio, cred, td) +#define VOP_CREATEVOBJECT(vp, td) \ + vop_createvobject(vp, td) +#define VOP_DESTROYVOBJECT(vp) \ + vop_destroyvobject(vp) +#define VOP_GETVOBJECT(vp, objpp) \ + vop_getvobject(vp, objpp) + +#endif + diff --git a/sys/vfs/coda/Makefile b/sys/vfs/coda/Makefile index 4a00738768..a9abed6083 100644 --- a/sys/vfs/coda/Makefile +++ b/sys/vfs/coda/Makefile @@ -1,9 +1,8 @@ # $FreeBSD: src/sys/modules/coda/Makefile,v 1.7.2.1 2001/07/24 09:49:42 dd Exp $ -# $DragonFly: src/sys/vfs/coda/Attic/Makefile,v 1.3 2003/08/15 07:26:14 dillon Exp $ +# $DragonFly: src/sys/vfs/coda/Attic/Makefile,v 1.4 2004/08/13 17:51:10 dillon Exp $ KMOD= coda -SRCS= vnode_if.h \ - coda_fbsd.c coda_namecache.c coda_psdev.c coda_subr.c \ +SRCS= coda_fbsd.c coda_namecache.c coda_psdev.c coda_subr.c \ coda_venus.c coda_vfsops.c coda_vnops.c use_vcoda.h NOMAN= diff --git a/sys/vfs/coda/coda_vnops.c b/sys/vfs/coda/coda_vnops.c index 3b28e368a2..2627f989b8 100644 --- a/sys/vfs/coda/coda_vnops.c +++ b/sys/vfs/coda/coda_vnops.c @@ -28,7 +28,7 @@ * * @(#) src/sys/coda/coda_vnops.c,v 1.1.1.1 1998/08/29 21:14:52 rvb Exp $ * $FreeBSD: src/sys/coda/coda_vnops.c,v 1.22.2.1 2001/06/29 16:26:22 shafeeq Exp $ - * $DragonFly: src/sys/vfs/coda/Attic/coda_vnops.c,v 1.16 2004/07/26 15:59:48 joerg Exp $ + * $DragonFly: src/sys/vfs/coda/Attic/coda_vnops.c,v 1.17 2004/08/13 17:51:10 dillon Exp $ * */ @@ -82,7 +82,7 @@ int coda_attr_cache = 1; /* Set to cache attributes in the kernel */ int coda_symlink_cache = 1; /* Set to cache symbolic link information */ int coda_access_cache = 1; /* Set to handle some access checks directly */ -int (**coda_vnodeop_p)(void *); +struct vop_ops *coda_vnode_vops; /* structure to keep track of vfs calls */ @@ -112,46 +112,46 @@ static int coda_lockdebug = 0; /* Definition of the vnode operation vector */ struct vnodeopv_entry_desc coda_vnodeop_entries[] = { - { &vop_default_desc, coda_vop_error }, - { &vop_lookup_desc, coda_lookup }, /* lookup */ - { &vop_create_desc, coda_create }, /* create */ - { &vop_mknod_desc, coda_vop_error }, /* mknod */ - { &vop_open_desc, coda_open }, /* open */ - { &vop_close_desc, coda_close }, /* close */ - { &vop_access_desc, coda_access }, /* access */ - { &vop_getattr_desc, coda_getattr }, /* getattr */ - { &vop_setattr_desc, coda_setattr }, /* setattr */ - { &vop_read_desc, coda_read }, /* read */ - { &vop_write_desc, coda_write }, /* write */ - { &vop_ioctl_desc, coda_ioctl }, /* ioctl */ - { &vop_mmap_desc, coda_vop_error }, /* mmap */ - { &vop_fsync_desc, coda_fsync }, /* fsync */ - { &vop_remove_desc, coda_remove }, /* remove */ - { &vop_link_desc, coda_link }, /* link */ - { &vop_rename_desc, coda_rename }, /* rename */ - { &vop_mkdir_desc, coda_mkdir }, /* mkdir */ - { &vop_rmdir_desc, coda_rmdir }, /* rmdir */ - { &vop_symlink_desc, coda_symlink }, /* symlink */ - { &vop_readdir_desc, coda_readdir }, /* readdir */ - { &vop_readlink_desc, coda_readlink }, /* readlink */ - { &vop_inactive_desc, coda_inactive }, /* inactive */ - { &vop_reclaim_desc, coda_reclaim }, /* reclaim */ - { &vop_lock_desc, coda_lock }, /* lock */ - { &vop_unlock_desc, coda_unlock }, /* unlock */ - { &vop_bmap_desc, coda_bmap }, /* bmap */ - { &vop_strategy_desc, coda_strategy }, /* strategy */ - { &vop_print_desc, coda_vop_error }, /* print */ - { &vop_islocked_desc, coda_islocked }, /* islocked */ - { &vop_pathconf_desc, coda_vop_error }, /* pathconf */ - { &vop_advlock_desc, coda_vop_nop }, /* advlock */ - { &vop_bwrite_desc, coda_vop_error }, /* bwrite */ - { &vop_lease_desc, coda_vop_nop }, /* lease */ - { &vop_poll_desc, (vop_t *) vop_stdpoll }, - { &vop_getpages_desc, coda_fbsd_getpages }, /* pager intf.*/ - { &vop_putpages_desc, coda_fbsd_putpages }, /* pager intf.*/ - { &vop_createvobject_desc, (vop_t *) vop_stdcreatevobject }, - { &vop_destroyvobject_desc, (vop_t *) vop_stddestroyvobject }, - { &vop_getvobject_desc, (vop_t *) vop_stdgetvobject }, + { &vop_default_desc, (void *)coda_vop_error }, + { &vop_lookup_desc, (void *)coda_lookup }, /* lookup */ + { &vop_create_desc, (void *)coda_create }, /* create */ + { &vop_mknod_desc, (void *)coda_vop_error }, /* mknod */ + { &vop_open_desc, (void *)coda_open }, /* open */ + { &vop_close_desc, (void *)coda_close }, /* close */ + { &vop_access_desc, (void *)coda_access }, /* access */ + { &vop_getattr_desc, (void *)coda_getattr }, /* getattr */ + { &vop_setattr_desc, (void *)coda_setattr }, /* setattr */ + { &vop_read_desc, (void *)coda_read }, /* read */ + { &vop_write_desc, (void *)coda_write }, /* write */ + { &vop_ioctl_desc, (void *)coda_ioctl }, /* ioctl */ + { &vop_mmap_desc, (void *)coda_vop_error }, /* mmap */ + { &vop_fsync_desc, (void *)coda_fsync }, /* fsync */ + { &vop_remove_desc, (void *)coda_remove }, /* remove */ + { &vop_link_desc, (void *)coda_link }, /* link */ + { &vop_rename_desc, (void *)coda_rename }, /* rename */ + { &vop_mkdir_desc, (void *)coda_mkdir }, /* mkdir */ + { &vop_rmdir_desc, (void *)coda_rmdir }, /* rmdir */ + { &vop_symlink_desc, (void *)coda_symlink }, /* symlink */ + { &vop_readdir_desc, (void *)coda_readdir }, /* readdir */ + { &vop_readlink_desc, (void *)coda_readlink }, /* readlink */ + { &vop_inactive_desc, (void *)coda_inactive }, /* inactive */ + { &vop_reclaim_desc, (void *)coda_reclaim }, /* reclaim */ + { &vop_lock_desc, (void *)coda_lock }, /* lock */ + { &vop_unlock_desc, (void *)coda_unlock }, /* unlock */ + { &vop_bmap_desc, (void *)coda_bmap }, /* bmap */ + { &vop_strategy_desc, (void *)coda_strategy }, /* strategy */ + { &vop_print_desc, (void *)coda_vop_error }, /* print */ + { &vop_islocked_desc, (void *)coda_islocked }, /* islocked */ + { &vop_pathconf_desc, (void *)coda_vop_error }, /* pathconf */ + { &vop_advlock_desc, (void *)coda_vop_nop }, /* advlock */ + { &vop_bwrite_desc, (void *)coda_vop_error }, /* bwrite */ + { &vop_lease_desc, (void *)coda_vop_nop }, /* lease */ + { &vop_poll_desc, (void *) vop_stdpoll }, /* poll */ + { &vop_getpages_desc, (void *)coda_fbsd_getpages }, /* pager intf.*/ + { &vop_putpages_desc, (void *)coda_fbsd_putpages }, /* pager intf.*/ + { &vop_createvobject_desc, (void *) vop_stdcreatevobject }, + { &vop_destroyvobject_desc, (void *) vop_stddestroyvobject }, + { &vop_getvobject_desc, (void *) vop_stdgetvobject }, #if 0 @@ -163,15 +163,15 @@ struct vnodeopv_entry_desc coda_vnodeop_entries[] = { #define UFS_UPDATE(aa, bb) VFSTOUFS((aa)->v_mount)->um_update(aa, bb) missing - { &vop_reallocblks_desc, (vop_t *) ufs_missingop }, - { &vop_cachedlookup_desc, (vop_t *) ufs_lookup }, - { &vop_whiteout_desc, (vop_t *) ufs_whiteout }, + { &vop_reallocblks_desc, (void *) ufs_missingop }, + { &vop_cachedlookup_desc, (void *) ufs_lookup }, + { &vop_whiteout_desc, (void *) ufs_whiteout }, #endif - { (struct vnodeop_desc*)NULL, (int(*)(void *))NULL } + { NULL, NULL } }; static struct vnodeopv_desc coda_vnodeop_opv_desc = - { &coda_vnodeop_p, coda_vnodeop_entries }; + { &coda_vnode_vops, coda_vnodeop_entries }; VNODEOP_SET(coda_vnodeop_opv_desc); @@ -557,7 +557,7 @@ coda_ioctl(void *v) * Make sure this is a coda style cnode, but it may be a * different vfsp */ - if (tvp->v_op != coda_vnodeop_p) { + if (tvp->v_vops != coda_vnode_vops) { vrele(tvp); NDFREE(&ndp, NDF_ONLY_PNBUF); MARK_INT_FAIL(CODA_IOCTL_STATS); @@ -1908,7 +1908,7 @@ make_coda_node(ViceFid *fid, struct mount *vfsp, short type) lockinit(&cp->c_lock, 0, "cnode", 0, 0); cp->c_fid = *fid; - err = getnewvnode(VT_CODA, vfsp, coda_vnodeop_p, &vp); + err = getnewvnode(VT_CODA, vfsp, coda_vnode_vops, &vp); if (err) { panic("coda: getnewvnode returned error %d\n", err); } diff --git a/sys/vfs/coda/coda_vnops.h b/sys/vfs/coda/coda_vnops.h index 79707f90ca..f6a40d2887 100644 --- a/sys/vfs/coda/coda_vnops.h +++ b/sys/vfs/coda/coda_vnops.h @@ -28,7 +28,7 @@ * * @(#) src/sys/coda/coda_vnops.h,v 1.1.1.1 1998/08/29 21:14:52 rvb Exp $ * $FreeBSD: src/sys/coda/coda_vnops.h,v 1.6 1999/08/28 00:40:58 peter Exp $ - * $DragonFly: src/sys/vfs/coda/Attic/coda_vnops.h,v 1.5 2004/02/16 19:56:26 dillon Exp $ + * $DragonFly: src/sys/vfs/coda/Attic/coda_vnops.h,v 1.6 2004/08/13 17:51:10 dillon Exp $ * */ @@ -81,7 +81,7 @@ int coda_vop_nop (void *); int coda_fbsd_getpages (void *); int coda_fbsd_putpages (void *); -extern int (**coda_vnodeop_p)(void *); +extern struct vop_ops *coda_vnode_vops; int coda_rdwr(struct vnode *vp, struct uio *uiop, enum uio_rw rw, int ioflag, struct ucred *cred, struct thread *p); diff --git a/sys/vfs/deadfs/dead_vnops.c b/sys/vfs/deadfs/dead_vnops.c index 7b62c79b4b..7459c84eaf 100644 --- a/sys/vfs/deadfs/dead_vnops.c +++ b/sys/vfs/deadfs/dead_vnops.c @@ -32,7 +32,7 @@ * * @(#)dead_vnops.c 8.1 (Berkeley) 6/10/93 * $FreeBSD: src/sys/miscfs/deadfs/dead_vnops.c,v 1.26 1999/08/28 00:46:42 peter Exp $ - * $DragonFly: src/sys/vfs/deadfs/dead_vnops.c,v 1.8 2004/03/31 23:13:43 cpressey Exp $ + * $DragonFly: src/sys/vfs/deadfs/dead_vnops.c,v 1.9 2004/08/13 17:51:10 dillon Exp $ */ #include @@ -58,40 +58,40 @@ static int dead_print (struct vop_print_args *); static int dead_read (struct vop_read_args *); static int dead_write (struct vop_write_args *); -vop_t **dead_vnodeop_p; +struct vop_ops *dead_vnode_vops; static struct vnodeopv_entry_desc dead_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) vop_defaultop }, - { &vop_access_desc, (vop_t *) vop_ebadf }, - { &vop_advlock_desc, (vop_t *) vop_ebadf }, - { &vop_bmap_desc, (vop_t *) dead_bmap }, - { &vop_create_desc, (vop_t *) dead_badop }, - { &vop_getattr_desc, (vop_t *) vop_ebadf }, - { &vop_inactive_desc, (vop_t *) vop_null }, - { &vop_ioctl_desc, (vop_t *) dead_ioctl }, - { &vop_link_desc, (vop_t *) dead_badop }, - { &vop_lock_desc, (vop_t *) dead_lock }, - { &vop_lookup_desc, (vop_t *) dead_lookup }, - { &vop_mkdir_desc, (vop_t *) dead_badop }, - { &vop_mknod_desc, (vop_t *) dead_badop }, - { &vop_mmap_desc, (vop_t *) dead_badop }, - { &vop_open_desc, (vop_t *) dead_open }, - { &vop_pathconf_desc, (vop_t *) vop_ebadf }, /* per pathconf(2) */ - { &vop_poll_desc, (vop_t *) dead_poll }, - { &vop_print_desc, (vop_t *) dead_print }, - { &vop_read_desc, (vop_t *) dead_read }, - { &vop_readdir_desc, (vop_t *) vop_ebadf }, - { &vop_readlink_desc, (vop_t *) vop_ebadf }, - { &vop_reclaim_desc, (vop_t *) vop_null }, - { &vop_remove_desc, (vop_t *) dead_badop }, - { &vop_rename_desc, (vop_t *) dead_badop }, - { &vop_rmdir_desc, (vop_t *) dead_badop }, - { &vop_setattr_desc, (vop_t *) vop_ebadf }, - { &vop_symlink_desc, (vop_t *) dead_badop }, - { &vop_write_desc, (vop_t *) dead_write }, + { &vop_default_desc, vop_defaultop }, + { &vop_access_desc, vop_ebadf }, + { &vop_advlock_desc, vop_ebadf }, + { &vop_bmap_desc, (void *) dead_bmap }, + { &vop_create_desc, (void *) dead_badop }, + { &vop_getattr_desc, vop_ebadf }, + { &vop_inactive_desc, vop_null }, + { &vop_ioctl_desc, (void *) dead_ioctl }, + { &vop_link_desc, (void *) dead_badop }, + { &vop_lock_desc, (void *) dead_lock }, + { &vop_lookup_desc, (void *) dead_lookup }, + { &vop_mkdir_desc, (void *) dead_badop }, + { &vop_mknod_desc, (void *) dead_badop }, + { &vop_mmap_desc, (void *) dead_badop }, + { &vop_open_desc, (void *) dead_open }, + { &vop_pathconf_desc, vop_ebadf }, /* per pathconf(2) */ + { &vop_poll_desc, (void *) dead_poll }, + { &vop_print_desc, (void *) dead_print }, + { &vop_read_desc, (void *) dead_read }, + { &vop_readdir_desc, vop_ebadf }, + { &vop_readlink_desc, vop_ebadf }, + { &vop_reclaim_desc, vop_null }, + { &vop_remove_desc, (void *) dead_badop }, + { &vop_rename_desc, (void *) dead_badop }, + { &vop_rmdir_desc, (void *) dead_badop }, + { &vop_setattr_desc, vop_ebadf }, + { &vop_symlink_desc, (void *) dead_badop }, + { &vop_write_desc, (void *) dead_write }, { NULL, NULL } }; static struct vnodeopv_desc dead_vnodeop_opv_desc = - { &dead_vnodeop_p, dead_vnodeop_entries }; + { &dead_vnode_vops, dead_vnodeop_entries }; VNODEOP_SET(dead_vnodeop_opv_desc); @@ -169,7 +169,7 @@ dead_ioctl(struct vop_ioctl_args *ap) { if (!chkvnlock(ap->a_vp)) return (ENOTTY); - return (VCALL(ap->a_vp, VOFFSET(vop_ioctl), ap)); + return (VCALL(ap->a_vp, VOFFSET(vop_ioctl), &ap->a_head)); } /* @@ -193,7 +193,7 @@ dead_lock(struct vop_lock_args *ap) } if (!chkvnlock(vp)) return (0); - return (VCALL(vp, VOFFSET(vop_lock), ap)); + return (VCALL(vp, VOFFSET(vop_lock), &ap->a_head)); } /* diff --git a/sys/vfs/fdesc/Makefile b/sys/vfs/fdesc/Makefile index b349f622cd..cd8b1c4f95 100644 --- a/sys/vfs/fdesc/Makefile +++ b/sys/vfs/fdesc/Makefile @@ -1,9 +1,8 @@ # $FreeBSD: src/sys/modules/fdesc/Makefile,v 1.6 1999/12/12 16:47:24 peter Exp $ -# $DragonFly: src/sys/vfs/fdesc/Makefile,v 1.3 2003/08/15 07:26:14 dillon Exp $ +# $DragonFly: src/sys/vfs/fdesc/Makefile,v 1.4 2004/08/13 17:51:10 dillon Exp $ KMOD= fdesc -SRCS= vnode_if.h \ - fdesc_vfsops.c fdesc_vnops.c +SRCS= fdesc_vfsops.c fdesc_vnops.c NOMAN= CFLAGS+= -DFDESC diff --git a/sys/vfs/fdesc/fdesc_vnops.c b/sys/vfs/fdesc/fdesc_vnops.c index 5bc0834fb6..385823ea41 100644 --- a/sys/vfs/fdesc/fdesc_vnops.c +++ b/sys/vfs/fdesc/fdesc_vnops.c @@ -36,7 +36,7 @@ * @(#)fdesc_vnops.c 8.9 (Berkeley) 1/21/94 * * $FreeBSD: src/sys/miscfs/fdesc/fdesc_vnops.c,v 1.47.2.1 2001/10/22 22:49:26 chris Exp $ - * $DragonFly: src/sys/vfs/fdesc/fdesc_vnops.c,v 1.11 2004/04/24 04:32:03 drhodus Exp $ + * $DragonFly: src/sys/vfs/fdesc/fdesc_vnops.c,v 1.12 2004/08/13 17:51:10 dillon Exp $ */ /* @@ -66,7 +66,7 @@ #define FDL_LOCKED 0x02 static int fdcache_lock; -static vop_t **fdesc_vnodeop_p; +static struct vop_ops *fdesc_vnode_vops; #define NFDCACHE 4 #define FD_NHASH(ix) \ @@ -132,7 +132,7 @@ loop: */ MALLOC(fd, struct fdescnode *, sizeof(struct fdescnode), M_TEMP, M_WAITOK); - error = getnewvnode(VT_FDESC, mp, fdesc_vnodeop_p, vpp); + error = getnewvnode(VT_FDESC, mp, fdesc_vnode_vops, vpp); if (error) { FREE(fd, M_TEMP); goto out; @@ -529,21 +529,21 @@ fdesc_print(struct vop_print_args *ap) } static struct vnodeopv_entry_desc fdesc_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) vop_defaultop }, - { &vop_access_desc, (vop_t *) vop_null }, - { &vop_getattr_desc, (vop_t *) fdesc_getattr }, - { &vop_inactive_desc, (vop_t *) fdesc_inactive }, - { &vop_lookup_desc, (vop_t *) fdesc_lookup }, - { &vop_open_desc, (vop_t *) fdesc_open }, - { &vop_pathconf_desc, (vop_t *) vop_stdpathconf }, - { &vop_poll_desc, (vop_t *) fdesc_poll }, - { &vop_print_desc, (vop_t *) fdesc_print }, - { &vop_readdir_desc, (vop_t *) fdesc_readdir }, - { &vop_reclaim_desc, (vop_t *) fdesc_reclaim }, - { &vop_setattr_desc, (vop_t *) fdesc_setattr }, + { &vop_default_desc, (void *) vop_defaultop }, + { &vop_access_desc, (void *) vop_null }, + { &vop_getattr_desc, (void *) fdesc_getattr }, + { &vop_inactive_desc, (void *) fdesc_inactive }, + { &vop_lookup_desc, (void *) fdesc_lookup }, + { &vop_open_desc, (void *) fdesc_open }, + { &vop_pathconf_desc, (void *) vop_stdpathconf }, + { &vop_poll_desc, (void *) fdesc_poll }, + { &vop_print_desc, (void *) fdesc_print }, + { &vop_readdir_desc, (void *) fdesc_readdir }, + { &vop_reclaim_desc, (void *) fdesc_reclaim }, + { &vop_setattr_desc, (void *) fdesc_setattr }, { NULL, NULL } }; static struct vnodeopv_desc fdesc_vnodeop_opv_desc = - { &fdesc_vnodeop_p, fdesc_vnodeop_entries }; + { &fdesc_vnode_vops, fdesc_vnodeop_entries }; VNODEOP_SET(fdesc_vnodeop_opv_desc); diff --git a/sys/vfs/fifofs/Makefile b/sys/vfs/fifofs/Makefile index 5c62b30d97..d5097253be 100644 --- a/sys/vfs/fifofs/Makefile +++ b/sys/vfs/fifofs/Makefile @@ -1,8 +1,8 @@ # $FreeBSD: src/sys/modules/nullfs/Makefile,v 1.10 1999/12/12 16:47:29 peter Exp $ -# $DragonFly: src/sys/vfs/fifofs/Makefile,v 1.1 2003/08/15 07:26:14 dillon Exp $ +# $DragonFly: src/sys/vfs/fifofs/Makefile,v 1.2 2004/08/13 17:51:10 dillon Exp $ KMOD= fifo -SRCS= vnode_if.h fifo_vnops.c +SRCS= fifo_vnops.c NOMAN= .include diff --git a/sys/vfs/fifofs/fifo.h b/sys/vfs/fifofs/fifo.h index fb69db0c20..1eb0bf4cc8 100644 --- a/sys/vfs/fifofs/fifo.h +++ b/sys/vfs/fifofs/fifo.h @@ -32,10 +32,10 @@ * * @(#)fifo.h 8.6 (Berkeley) 5/21/95 * $FreeBSD: src/sys/miscfs/fifofs/fifo.h,v 1.16 1999/08/28 00:46:46 peter Exp $ - * $DragonFly: src/sys/vfs/fifofs/fifo.h,v 1.3 2003/08/20 09:56:31 rob Exp $ + * $DragonFly: src/sys/vfs/fifofs/fifo.h,v 1.4 2004/08/13 17:51:10 dillon Exp $ */ -extern vop_t **fifo_vnodeop_p; +extern struct vop_ops *fifo_vnode_vops; /* * Prototypes for fifo operations on vnodes. diff --git a/sys/vfs/fifofs/fifo_vnops.c b/sys/vfs/fifofs/fifo_vnops.c index fff4b966f8..5316ebb7c9 100644 --- a/sys/vfs/fifofs/fifo_vnops.c +++ b/sys/vfs/fifofs/fifo_vnops.c @@ -32,7 +32,7 @@ * * @(#)fifo_vnops.c 8.10 (Berkeley) 5/27/95 * $FreeBSD: src/sys/miscfs/fifofs/fifo_vnops.c,v 1.45.2.4 2003/04/22 10:11:24 bde Exp $ - * $DragonFly: src/sys/vfs/fifofs/fifo_vnops.c,v 1.14 2004/04/06 21:32:39 cpressey Exp $ + * $DragonFly: src/sys/vfs/fifofs/fifo_vnops.c,v 1.15 2004/08/13 17:51:10 dillon Exp $ */ #include @@ -88,42 +88,42 @@ static struct filterops fiforead_filtops = static struct filterops fifowrite_filtops = { 1, NULL, filt_fifowdetach, filt_fifowrite }; -vop_t **fifo_vnodeop_p; +struct vop_ops *fifo_vnode_vops; static struct vnodeopv_entry_desc fifo_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) vop_defaultop }, - { &vop_access_desc, (vop_t *) vop_ebadf }, - { &vop_advlock_desc, (vop_t *) fifo_advlock }, - { &vop_bmap_desc, (vop_t *) fifo_bmap }, - { &vop_close_desc, (vop_t *) fifo_close }, - { &vop_create_desc, (vop_t *) fifo_badop }, - { &vop_getattr_desc, (vop_t *) vop_ebadf }, - { &vop_inactive_desc, (vop_t *) fifo_inactive }, - { &vop_ioctl_desc, (vop_t *) fifo_ioctl }, - { &vop_kqfilter_desc, (vop_t *) fifo_kqfilter }, - { &vop_lease_desc, (vop_t *) vop_null }, - { &vop_link_desc, (vop_t *) fifo_badop }, - { &vop_lookup_desc, (vop_t *) fifo_lookup }, - { &vop_mkdir_desc, (vop_t *) fifo_badop }, - { &vop_mknod_desc, (vop_t *) fifo_badop }, - { &vop_open_desc, (vop_t *) fifo_open }, - { &vop_pathconf_desc, (vop_t *) fifo_pathconf }, - { &vop_poll_desc, (vop_t *) fifo_poll }, - { &vop_print_desc, (vop_t *) fifo_print }, - { &vop_read_desc, (vop_t *) fifo_read }, - { &vop_readdir_desc, (vop_t *) fifo_badop }, - { &vop_readlink_desc, (vop_t *) fifo_badop }, - { &vop_reallocblks_desc, (vop_t *) fifo_badop }, - { &vop_reclaim_desc, (vop_t *) vop_null }, - { &vop_remove_desc, (vop_t *) fifo_badop }, - { &vop_rename_desc, (vop_t *) fifo_badop }, - { &vop_rmdir_desc, (vop_t *) fifo_badop }, - { &vop_setattr_desc, (vop_t *) vop_ebadf }, - { &vop_symlink_desc, (vop_t *) fifo_badop }, - { &vop_write_desc, (vop_t *) fifo_write }, + { &vop_default_desc, (void *) vop_defaultop }, + { &vop_access_desc, (void *) vop_ebadf }, + { &vop_advlock_desc, (void *) fifo_advlock }, + { &vop_bmap_desc, (void *) fifo_bmap }, + { &vop_close_desc, (void *) fifo_close }, + { &vop_create_desc, (void *) fifo_badop }, + { &vop_getattr_desc, (void *) vop_ebadf }, + { &vop_inactive_desc, (void *) fifo_inactive }, + { &vop_ioctl_desc, (void *) fifo_ioctl }, + { &vop_kqfilter_desc, (void *) fifo_kqfilter }, + { &vop_lease_desc, (void *) vop_null }, + { &vop_link_desc, (void *) fifo_badop }, + { &vop_lookup_desc, (void *) fifo_lookup }, + { &vop_mkdir_desc, (void *) fifo_badop }, + { &vop_mknod_desc, (void *) fifo_badop }, + { &vop_open_desc, (void *) fifo_open }, + { &vop_pathconf_desc, (void *) fifo_pathconf }, + { &vop_poll_desc, (void *) fifo_poll }, + { &vop_print_desc, (void *) fifo_print }, + { &vop_read_desc, (void *) fifo_read }, + { &vop_readdir_desc, (void *) fifo_badop }, + { &vop_readlink_desc, (void *) fifo_badop }, + { &vop_reallocblks_desc, (void *) fifo_badop }, + { &vop_reclaim_desc, (void *) vop_null }, + { &vop_remove_desc, (void *) fifo_badop }, + { &vop_rename_desc, (void *) fifo_badop }, + { &vop_rmdir_desc, (void *) fifo_badop }, + { &vop_setattr_desc, (void *) vop_ebadf }, + { &vop_symlink_desc, (void *) fifo_badop }, + { &vop_write_desc, (void *) fifo_write }, { NULL, NULL } }; static struct vnodeopv_desc fifo_vnodeop_opv_desc = - { &fifo_vnodeop_p, fifo_vnodeop_entries }; + { &fifo_vnode_vops, fifo_vnodeop_entries }; VNODEOP_SET(fifo_vnodeop_opv_desc); @@ -133,7 +133,7 @@ VNODEOP_SET(fifo_vnodeop_opv_desc); int fifo_vnoperate(struct vop_generic_args *ap) { - return (VOCALL(fifo_vnodeop_p, ap->a_desc->vdesc_offset, ap)); + return (VOCALL(fifo_vnode_vops, ap->a_desc->vdesc_offset, ap)); } /* diff --git a/sys/vfs/gnu/ext2fs/Makefile b/sys/vfs/gnu/ext2fs/Makefile index 2ef98c2a46..824c121923 100644 --- a/sys/vfs/gnu/ext2fs/Makefile +++ b/sys/vfs/gnu/ext2fs/Makefile @@ -1,9 +1,9 @@ # $FreeBSD: src/sys/modules/ext2fs/Makefile,v 1.4.2.1 2002/08/06 14:14:25 mdodd Exp $ -# $DragonFly: src/sys/vfs/gnu/ext2fs/Makefile,v 1.2 2003/06/17 04:28:43 dillon Exp $ +# $DragonFly: src/sys/vfs/gnu/ext2fs/Makefile,v 1.3 2004/08/13 17:51:10 dillon Exp $ .PATH: ${.CURDIR}/../../gnu/ext2fs KMOD= ext2fs -SRCS= opt_ddb.h opt_quota.h opt_suiddir.h vnode_if.h \ +SRCS= opt_ddb.h opt_quota.h opt_suiddir.h \ ext2_alloc.c ext2_balloc.c ext2_inode.c ext2_inode_cnv.c \ ext2_linux_balloc.c ext2_linux_ialloc.c ext2_lookup.c \ ext2_subr.c ext2_vfsops.c ext2_vnops.c diff --git a/sys/vfs/gnu/ext2fs/ext2_extern.h b/sys/vfs/gnu/ext2fs/ext2_extern.h index 57f7254a7a..e8d9b1159f 100644 --- a/sys/vfs/gnu/ext2fs/ext2_extern.h +++ b/sys/vfs/gnu/ext2fs/ext2_extern.h @@ -38,7 +38,7 @@ * * @(#)ffs_extern.h 8.3 (Berkeley) 4/16/94 * $FreeBSD: src/sys/gnu/ext2fs/ext2_extern.h,v 1.22.6.1 2000/11/05 19:17:40 bde Exp $ - * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_extern.h,v 1.4 2003/08/20 09:56:31 rob Exp $ + * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_extern.h,v 1.5 2004/08/13 17:51:10 dillon Exp $ */ #ifndef _SYS_GNU_EXT2FS_EXT2_EXTERN_H_ @@ -101,8 +101,8 @@ void mark_buffer_dirty (struct buf *bh); */ #define IS_EXT2_VNODE(vp) (vp->v_mount->mnt_stat.f_type == MOUNT_EXT2FS) -extern vop_t **ext2_vnodeop_p; -extern vop_t **ext2_specop_p; -extern vop_t **ext2_fifoop_p; +extern struct vop_ops *ext2_vnode_vops; +extern struct vop_ops *ext2_spec_vops; +extern struct vop_ops *ext2_fifo_vops; #endif /* !_SYS_GNU_EXT2FS_EXT2_EXTERN_H_ */ diff --git a/sys/vfs/gnu/ext2fs/ext2_vfsops.c b/sys/vfs/gnu/ext2fs/ext2_vfsops.c index 072a248641..0475bc50ac 100644 --- a/sys/vfs/gnu/ext2fs/ext2_vfsops.c +++ b/sys/vfs/gnu/ext2fs/ext2_vfsops.c @@ -38,7 +38,7 @@ * * @(#)ffs_vfsops.c 8.8 (Berkeley) 4/18/94 * $FreeBSD: src/sys/gnu/ext2fs/ext2_vfsops.c,v 1.63.2.7 2002/07/01 00:18:51 iedowse Exp $ - * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_vfsops.c,v 1.16 2004/05/26 07:45:21 dillon Exp $ + * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_vfsops.c,v 1.17 2004/08/13 17:51:10 dillon Exp $ */ #include "opt_quota.h" @@ -1044,7 +1044,7 @@ restart: MALLOC(ip, struct inode *, sizeof(struct inode), M_EXT2NODE, M_WAITOK); /* Allocate a new vnode/inode. */ - if ((error = getnewvnode(VT_UFS, mp, ext2_vnodeop_p, &vp)) != 0) { + if ((error = getnewvnode(VT_UFS, mp, ext2_vnode_vops, &vp)) != 0) { if (ext2fs_inode_hash_lock < 0) wakeup(&ext2fs_inode_hash_lock); ext2fs_inode_hash_lock = 0; @@ -1118,7 +1118,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 = ufs_vinit(mp, ext2_specop_p, ext2_fifoop_p, &vp)) != 0) { + if ((error = ufs_vinit(mp, ext2_spec_vops, ext2_fifo_vops, &vp)) != 0) { vput(vp); *vpp = NULL; return (error); diff --git a/sys/vfs/gnu/ext2fs/ext2_vnops.c b/sys/vfs/gnu/ext2fs/ext2_vnops.c index 32cc60b5c4..d9f6e0b032 100644 --- a/sys/vfs/gnu/ext2fs/ext2_vnops.c +++ b/sys/vfs/gnu/ext2fs/ext2_vnops.c @@ -44,7 +44,7 @@ * @(#)ufs_vnops.c 8.27 (Berkeley) 5/27/95 * @(#)ext2_vnops.c 8.7 (Berkeley) 2/3/94 * $FreeBSD: src/sys/gnu/ext2fs/ext2_vnops.c,v 1.51.2.2 2003/01/02 17:26:18 bde Exp $ - * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_vnops.c,v 1.13 2004/07/02 15:43:10 joerg Exp $ + * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_vnops.c,v 1.14 2004/08/13 17:51:10 dillon Exp $ */ #include "opt_quota.h" @@ -97,51 +97,51 @@ static int ext2_getpages (struct vop_getpages_args *); static int ext2_putpages (struct vop_putpages_args *); /* Global vfs data structures for ufs. */ -vop_t **ext2_vnodeop_p; +struct vop_ops *ext2_vnode_vops; static struct vnodeopv_entry_desc ext2_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) ufs_vnoperate }, - { &vop_cachedlookup_desc, (vop_t *) ext2_lookup }, - { &vop_fsync_desc, (vop_t *) ext2_fsync }, - { &vop_inactive_desc, (vop_t *) ext2_inactive }, - { &vop_lookup_desc, (vop_t *) vfs_cache_lookup }, - { &vop_read_desc, (vop_t *) ext2_read }, - { &vop_readdir_desc, (vop_t *) ext2_readdir }, - { &vop_reallocblks_desc, (vop_t *) ext2_reallocblks }, - { &vop_write_desc, (vop_t *) ext2_write }, - { &vop_remove_desc, (vop_t *) ext2_remove }, - { &vop_link_desc, (vop_t *) ext2_link }, - { &vop_rename_desc, (vop_t *) ext2_rename }, - { &vop_mkdir_desc, (vop_t *) ext2_mkdir }, - { &vop_rmdir_desc, (vop_t *) ext2_rmdir }, - { &vop_create_desc, (vop_t *) ext2_create }, - { &vop_mknod_desc, (vop_t *) ext2_mknod }, - { &vop_symlink_desc, (vop_t *) ext2_symlink }, - { &vop_getpages_desc, (vop_t *) ext2_getpages }, - { &vop_putpages_desc, (vop_t *) ext2_putpages }, + { &vop_default_desc, (void *) ufs_vnoperate }, + { &vop_cachedlookup_desc, (void *) ext2_lookup }, + { &vop_fsync_desc, (void *) ext2_fsync }, + { &vop_inactive_desc, (void *) ext2_inactive }, + { &vop_lookup_desc, (void *) vfs_cache_lookup }, + { &vop_read_desc, (void *) ext2_read }, + { &vop_readdir_desc, (void *) ext2_readdir }, + { &vop_reallocblks_desc, (void *) ext2_reallocblks }, + { &vop_write_desc, (void *) ext2_write }, + { &vop_remove_desc, (void *) ext2_remove }, + { &vop_link_desc, (void *) ext2_link }, + { &vop_rename_desc, (void *) ext2_rename }, + { &vop_mkdir_desc, (void *) ext2_mkdir }, + { &vop_rmdir_desc, (void *) ext2_rmdir }, + { &vop_create_desc, (void *) ext2_create }, + { &vop_mknod_desc, (void *) ext2_mknod }, + { &vop_symlink_desc, (void *) ext2_symlink }, + { &vop_getpages_desc, (void *) ext2_getpages }, + { &vop_putpages_desc, (void *) ext2_putpages }, { NULL, NULL } }; static struct vnodeopv_desc ext2fs_vnodeop_opv_desc = - { &ext2_vnodeop_p, ext2_vnodeop_entries }; + { &ext2_vnode_vops, ext2_vnodeop_entries }; -vop_t **ext2_specop_p; +struct vop_ops *ext2_spec_vops; static struct vnodeopv_entry_desc ext2_specop_entries[] = { - { &vop_default_desc, (vop_t *) ufs_vnoperatespec }, - { &vop_fsync_desc, (vop_t *) ext2_fsync }, - { &vop_inactive_desc, (vop_t *) ext2_inactive }, + { &vop_default_desc, (void *) ufs_vnoperatespec }, + { &vop_fsync_desc, (void *) ext2_fsync }, + { &vop_inactive_desc, (void *) ext2_inactive }, { NULL, NULL } }; static struct vnodeopv_desc ext2fs_specop_opv_desc = - { &ext2_specop_p, ext2_specop_entries }; + { &ext2_spec_vops, ext2_specop_entries }; -vop_t **ext2_fifoop_p; +struct vop_ops *ext2_fifo_vops; static struct vnodeopv_entry_desc ext2_fifoop_entries[] = { - { &vop_default_desc, (vop_t *) ufs_vnoperatefifo }, - { &vop_fsync_desc, (vop_t *) ext2_fsync }, - { &vop_inactive_desc, (vop_t *) ext2_inactive }, + { &vop_default_desc, (void *) ufs_vnoperatefifo }, + { &vop_fsync_desc, (void *) ext2_fsync }, + { &vop_inactive_desc, (void *) ext2_inactive }, { NULL, NULL } }; static struct vnodeopv_desc ext2fs_fifoop_opv_desc = - { &ext2_fifoop_p, ext2_fifoop_entries }; + { &ext2_fifo_vops, ext2_fifoop_entries }; VNODEOP_SET(ext2fs_vnodeop_opv_desc); VNODEOP_SET(ext2fs_specop_opv_desc); diff --git a/sys/vfs/hpfs/Makefile b/sys/vfs/hpfs/Makefile index 7a0ac74296..f6182d0b60 100644 --- a/sys/vfs/hpfs/Makefile +++ b/sys/vfs/hpfs/Makefile @@ -1,9 +1,8 @@ # $FreeBSD: src/sys/modules/hpfs/Makefile,v 1.3 1999/12/12 20:34:02 peter Exp $ -# $DragonFly: src/sys/vfs/hpfs/Makefile,v 1.3 2003/08/15 07:26:15 dillon Exp $ +# $DragonFly: src/sys/vfs/hpfs/Makefile,v 1.4 2004/08/13 17:51:11 dillon Exp $ KMOD= hpfs -SRCS= vnode_if.h \ - hpfs_vfsops.c hpfs_vnops.c hpfs_hash.c hpfs_subr.c hpfs_lookup.c \ +SRCS= hpfs_vfsops.c hpfs_vnops.c hpfs_hash.c hpfs_subr.c hpfs_lookup.c \ hpfs_alsubr.c NOMAN= diff --git a/sys/vfs/hpfs/hpfs.h b/sys/vfs/hpfs/hpfs.h index 73052bc814..98d86fb709 100644 --- a/sys/vfs/hpfs/hpfs.h +++ b/sys/vfs/hpfs/hpfs.h @@ -24,7 +24,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/fs/hpfs/hpfs.h,v 1.1 1999/12/09 19:09:58 semenu Exp $ - * $DragonFly: src/sys/vfs/hpfs/hpfs.h,v 1.10 2004/03/01 06:33:20 dillon Exp $ + * $DragonFly: src/sys/vfs/hpfs/hpfs.h,v 1.11 2004/08/13 17:51:11 dillon Exp $ */ /*#define HPFS_DEBUG 10*/ @@ -406,7 +406,7 @@ typedef int (vop_t) (void *); #define LOCKMGR(a, b, c, d) lockmgr((a), (b), (c), (d)) #endif -extern vop_t ** hpfs_vnodeop_p; +extern struct vop_ops *hpfs_vnode_vops; struct vfsconf; /* Hash routines, too small to be separate header */ diff --git a/sys/vfs/hpfs/hpfs_vfsops.c b/sys/vfs/hpfs/hpfs_vfsops.c index 3d7290b06b..96f9a73e86 100644 --- a/sys/vfs/hpfs/hpfs_vfsops.c +++ b/sys/vfs/hpfs/hpfs_vfsops.c @@ -24,7 +24,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/fs/hpfs/hpfs_vfsops.c,v 1.3.2.2 2001/12/25 01:44:45 dillon Exp $ - * $DragonFly: src/sys/vfs/hpfs/hpfs_vfsops.c,v 1.17 2004/05/26 07:45:22 dillon Exp $ + * $DragonFly: src/sys/vfs/hpfs/hpfs_vfsops.c,v 1.18 2004/08/13 17:51:11 dillon Exp $ */ @@ -610,7 +610,7 @@ hpfs_vget(struct mount *mp, ino_t ino, struct vnode **vpp) MALLOC(hp, struct hpfsnode *, sizeof(struct hpfsnode), M_HPFSNO, M_WAITOK); - error = getnewvnode(VT_HPFS, hpmp->hpm_mp, hpfs_vnodeop_p, &vp); + error = getnewvnode(VT_HPFS, hpmp->hpm_mp, hpfs_vnode_vops, &vp); if (error) { printf("hpfs_vget: can't get new vnode\n"); FREE(hp, M_HPFSNO); diff --git a/sys/vfs/hpfs/hpfs_vnops.c b/sys/vfs/hpfs/hpfs_vnops.c index b673aa768c..ac79e0b390 100644 --- a/sys/vfs/hpfs/hpfs_vnops.c +++ b/sys/vfs/hpfs/hpfs_vnops.c @@ -24,7 +24,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/fs/hpfs/hpfs_vnops.c,v 1.2.2.2 2002/01/15 18:35:09 semenu Exp $ - * $DragonFly: src/sys/vfs/hpfs/hpfs_vnops.c,v 1.14 2004/04/24 04:32:04 drhodus Exp $ + * $DragonFly: src/sys/vfs/hpfs/hpfs_vnops.c,v 1.15 2004/08/13 17:51:11 dillon Exp $ */ #include @@ -1309,58 +1309,58 @@ hpfs_pathconf(struct vop_pathconf_args *ap) /* * Global vfs data structures */ -vop_t **hpfs_vnodeop_p; +struct vop_ops *hpfs_vnode_vops; #if defined(__DragonFly__) struct vnodeopv_entry_desc hpfs_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *)vop_defaultop }, - - { &vop_getattr_desc, (vop_t *)hpfs_getattr }, - { &vop_setattr_desc, (vop_t *)hpfs_setattr }, - { &vop_inactive_desc, (vop_t *)hpfs_inactive }, - { &vop_reclaim_desc, (vop_t *)hpfs_reclaim }, - { &vop_print_desc, (vop_t *)hpfs_print }, - { &vop_create_desc, (vop_t *)hpfs_create }, - { &vop_remove_desc, (vop_t *)hpfs_remove }, - { &vop_islocked_desc, (vop_t *)vop_stdislocked }, - { &vop_unlock_desc, (vop_t *)vop_stdunlock }, - { &vop_lock_desc, (vop_t *)vop_stdlock }, - { &vop_cachedlookup_desc, (vop_t *)hpfs_lookup }, - { &vop_lookup_desc, (vop_t *)vfs_cache_lookup }, - { &vop_access_desc, (vop_t *)hpfs_access }, - { &vop_close_desc, (vop_t *)hpfs_close }, - { &vop_open_desc, (vop_t *)hpfs_open }, - { &vop_readdir_desc, (vop_t *)hpfs_readdir }, - { &vop_fsync_desc, (vop_t *)hpfs_fsync }, - { &vop_bmap_desc, (vop_t *)hpfs_bmap }, - { &vop_getpages_desc, (vop_t *) hpfs_getpages }, - { &vop_putpages_desc, (vop_t *) hpfs_putpages }, - { &vop_strategy_desc, (vop_t *)hpfs_strategy }, - { &vop_bwrite_desc, (vop_t *)vop_stdbwrite }, - { &vop_read_desc, (vop_t *)hpfs_read }, - { &vop_write_desc, (vop_t *)hpfs_write }, - { &vop_ioctl_desc, (vop_t *)hpfs_ioctl }, - { &vop_pathconf_desc, (vop_t *)hpfs_pathconf }, + { &vop_default_desc, (void *)vop_defaultop }, + + { &vop_getattr_desc, (void *)hpfs_getattr }, + { &vop_setattr_desc, (void *)hpfs_setattr }, + { &vop_inactive_desc, (void *)hpfs_inactive }, + { &vop_reclaim_desc, (void *)hpfs_reclaim }, + { &vop_print_desc, (void *)hpfs_print }, + { &vop_create_desc, (void *)hpfs_create }, + { &vop_remove_desc, (void *)hpfs_remove }, + { &vop_islocked_desc, (void *)vop_stdislocked }, + { &vop_unlock_desc, (void *)vop_stdunlock }, + { &vop_lock_desc, (void *)vop_stdlock }, + { &vop_cachedlookup_desc, (void *)hpfs_lookup }, + { &vop_lookup_desc, (void *)vfs_cache_lookup }, + { &vop_access_desc, (void *)hpfs_access }, + { &vop_close_desc, (void *)hpfs_close }, + { &vop_open_desc, (void *)hpfs_open }, + { &vop_readdir_desc, (void *)hpfs_readdir }, + { &vop_fsync_desc, (void *)hpfs_fsync }, + { &vop_bmap_desc, (void *)hpfs_bmap }, + { &vop_getpages_desc, (void *) hpfs_getpages }, + { &vop_putpages_desc, (void *) hpfs_putpages }, + { &vop_strategy_desc, (void *)hpfs_strategy }, + { &vop_bwrite_desc, (void *)vop_stdbwrite }, + { &vop_read_desc, (void *)hpfs_read }, + { &vop_write_desc, (void *)hpfs_write }, + { &vop_ioctl_desc, (void *)hpfs_ioctl }, + { &vop_pathconf_desc, (void *)hpfs_pathconf }, { NULL, NULL } }; static struct vnodeopv_desc hpfs_vnodeop_opv_desc = - { &hpfs_vnodeop_p, hpfs_vnodeop_entries }; + { &hpfs_vnode_vops, hpfs_vnodeop_entries }; VNODEOP_SET(hpfs_vnodeop_opv_desc); #else /* defined(__NetBSD__) */ struct vnodeopv_entry_desc ntfs_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) genfs_badop }, /* XXX */ - { &vop_lookup_desc, (vop_t *) hpfs_lookup }, /* lookup */ + { &vop_default_desc, (void *) genfs_badop }, /* XXX */ + { &vop_lookup_desc, (void *) hpfs_lookup }, /* lookup */ { &vop_create_desc, genfs_eopnotsupp }, /* create */ { &vop_mknod_desc, genfs_eopnotsupp }, /* mknod */ - { &vop_open_desc, (vop_t *) hpfs_open }, /* open */ - { &vop_close_desc,(vop_t *) hpfs_close }, /* close */ - { &vop_access_desc, (vop_t *) hpfs_access }, /* access */ - { &vop_getattr_desc, (vop_t *) hpfs_getattr }, /* getattr */ + { &vop_open_desc, (void *) hpfs_open }, /* open */ + { &vop_close_desc,(void *) hpfs_close }, /* close */ + { &vop_access_desc, (void *) hpfs_access }, /* access */ + { &vop_getattr_desc, (void *) hpfs_getattr }, /* getattr */ { &vop_setattr_desc, genfs_eopnotsupp }, /* setattr */ - { &vop_read_desc, (vop_t *) hpfs_read }, /* read */ - { &vop_write_desc, (vop_t *) hpfs_write }, /* write */ + { &vop_read_desc, (void *) hpfs_read }, /* read */ + { &vop_write_desc, (void *) hpfs_write }, /* write */ { &vop_lease_desc, genfs_lease_check }, /* lease */ { &vop_fcntl_desc, genfs_fcntl }, /* fcntl */ { &vop_ioctl_desc, genfs_enoioctl }, /* ioctl */ @@ -1375,16 +1375,16 @@ struct vnodeopv_entry_desc ntfs_vnodeop_entries[] = { { &vop_mkdir_desc, genfs_eopnotsupp }, /* mkdir */ { &vop_rmdir_desc, genfs_eopnotsupp }, /* rmdir */ { &vop_symlink_desc, genfs_eopnotsupp }, /* symlink */ - { &vop_readdir_desc, (vop_t *) hpfs_readdir }, /* readdir */ + { &vop_readdir_desc, (void *) hpfs_readdir }, /* readdir */ { &vop_readlink_desc, genfs_eopnotsupp }, /* readlink */ { &vop_abortop_desc, genfs_abortop }, /* abortop */ - { &vop_inactive_desc, (vop_t *) hpfs_inactive }, /* inactive */ - { &vop_reclaim_desc, (vop_t *) hpfs_reclaim }, /* reclaim */ + { &vop_inactive_desc, (void *) hpfs_inactive }, /* inactive */ + { &vop_reclaim_desc, (void *) hpfs_reclaim }, /* reclaim */ { &vop_lock_desc, genfs_lock }, /* lock */ { &vop_unlock_desc, genfs_unlock }, /* unlock */ - { &vop_bmap_desc, (vop_t *) hpfs_bmap }, /* bmap */ - { &vop_strategy_desc, (vop_t *) hpfs_strategy }, /* strategy */ - { &vop_print_desc, (vop_t *) hpfs_print }, /* print */ + { &vop_bmap_desc, (void *) hpfs_bmap }, /* bmap */ + { &vop_strategy_desc, (void *) hpfs_strategy }, /* strategy */ + { &vop_print_desc, (void *) hpfs_print }, /* print */ { &vop_islocked_desc, genfs_islocked }, /* islocked */ { &vop_pathconf_desc, hpfs_pathconf }, /* pathconf */ { &vop_advlock_desc, genfs_nullop }, /* advlock */ @@ -1398,6 +1398,6 @@ struct vnodeopv_entry_desc ntfs_vnodeop_entries[] = { { (struct vnodeop_desc *)NULL, (int (*) (void *))NULL } }; struct vnodeopv_desc ntfs_vnodeop_opv_desc = - { &ntfs_vnodeop_p, ntfs_vnodeop_entries }; + { &ntfs_vnode_vops, ntfs_vnodeop_entries }; #endif diff --git a/sys/vfs/isofs/cd9660/Makefile b/sys/vfs/isofs/cd9660/Makefile index c348a80807..e2a2eb8e7e 100644 --- a/sys/vfs/isofs/cd9660/Makefile +++ b/sys/vfs/isofs/cd9660/Makefile @@ -1,10 +1,9 @@ # $FreeBSD: src/sys/modules/cd9660/Makefile,v 1.9 1999/12/12 20:34:00 peter Exp $ -# $DragonFly: src/sys/vfs/isofs/cd9660/Makefile,v 1.2 2003/06/17 04:28:43 dillon Exp $ +# $DragonFly: src/sys/vfs/isofs/cd9660/Makefile,v 1.3 2004/08/13 17:51:11 dillon Exp $ .PATH: ${.CURDIR}/../../isofs/cd9660 KMOD= cd9660 -SRCS= vnode_if.h \ - cd9660_bmap.c cd9660_lookup.c cd9660_node.c cd9660_rrip.c \ +SRCS= cd9660_bmap.c cd9660_lookup.c cd9660_node.c cd9660_rrip.c \ cd9660_util.c cd9660_vfsops.c cd9660_vnops.c NOMAN= diff --git a/sys/vfs/isofs/cd9660/cd9660_vfsops.c b/sys/vfs/isofs/cd9660/cd9660_vfsops.c index 35ccf115c6..cb864d9ef9 100644 --- a/sys/vfs/isofs/cd9660/cd9660_vfsops.c +++ b/sys/vfs/isofs/cd9660/cd9660_vfsops.c @@ -37,7 +37,7 @@ * * @(#)cd9660_vfsops.c 8.18 (Berkeley) 5/22/95 * $FreeBSD: src/sys/isofs/cd9660/cd9660_vfsops.c,v 1.74.2.7 2002/04/08 09:39:29 bde Exp $ - * $DragonFly: src/sys/vfs/isofs/cd9660/cd9660_vfsops.c,v 1.17 2004/06/26 02:15:16 dillon Exp $ + * $DragonFly: src/sys/vfs/isofs/cd9660/cd9660_vfsops.c,v 1.18 2004/08/13 17:51:11 dillon Exp $ */ #include @@ -699,7 +699,7 @@ cd9660_vget_internal(struct mount *mp, ino_t ino, struct vnode **vpp, return (0); /* Allocate a new vnode/iso_node. */ - if ((error = getnewvnode(VT_ISOFS, mp, cd9660_vnodeop_p, &vp)) != 0) { + if ((error = getnewvnode(VT_ISOFS, mp, cd9660_vnode_vops, &vp)) != 0) { *vpp = NULLVP; return (error); } @@ -831,11 +831,11 @@ cd9660_vget_internal(struct mount *mp, ino_t ino, struct vnode **vpp, */ switch (vp->v_type = IFTOVT(ip->inode.iso_mode)) { case VFIFO: - vp->v_op = cd9660_fifoop_p; + vp->v_vops = cd9660_fifo_vops; break; case VCHR: case VBLK: - vp->v_op = cd9660_specop_p; + vp->v_vops = cd9660_spec_vops; addaliasu(vp, ip->inode.iso_rdev); break; default: diff --git a/sys/vfs/isofs/cd9660/cd9660_vnops.c b/sys/vfs/isofs/cd9660/cd9660_vnops.c index fa2bbe6df5..0d3ff7a9fc 100644 --- a/sys/vfs/isofs/cd9660/cd9660_vnops.c +++ b/sys/vfs/isofs/cd9660/cd9660_vnops.c @@ -37,7 +37,7 @@ * * @(#)cd9660_vnops.c 8.19 (Berkeley) 5/27/95 * $FreeBSD: src/sys/isofs/cd9660/cd9660_vnops.c,v 1.62 1999/12/15 23:01:51 eivind Exp $ - * $DragonFly: src/sys/vfs/isofs/cd9660/cd9660_vnops.c,v 1.9 2004/07/18 18:35:20 drhodus Exp $ + * $DragonFly: src/sys/vfs/isofs/cd9660/cd9660_vnops.c,v 1.10 2004/08/13 17:51:11 dillon Exp $ */ #include @@ -842,72 +842,72 @@ cd9660_advlock(ap) /* * Global vfs data structures for cd9660 */ -vop_t **cd9660_vnodeop_p; +struct vop_ops *cd9660_vnode_vops; static struct vnodeopv_entry_desc cd9660_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) vop_defaultop }, - { &vop_access_desc, (vop_t *) cd9660_access }, - { &vop_advlock_desc, (vop_t *) cd9660_advlock }, - { &vop_bmap_desc, (vop_t *) cd9660_bmap }, - { &vop_cachedlookup_desc, (vop_t *) cd9660_lookup }, - { &vop_getattr_desc, (vop_t *) cd9660_getattr }, - { &vop_inactive_desc, (vop_t *) cd9660_inactive }, - { &vop_ioctl_desc, (vop_t *) cd9660_ioctl }, - { &vop_islocked_desc, (vop_t *) vop_stdislocked }, - { &vop_lock_desc, (vop_t *) vop_stdlock }, - { &vop_lookup_desc, (vop_t *) vfs_cache_lookup }, - { &vop_pathconf_desc, (vop_t *) cd9660_pathconf }, - { &vop_print_desc, (vop_t *) cd9660_print }, - { &vop_read_desc, (vop_t *) cd9660_read }, - { &vop_readdir_desc, (vop_t *) cd9660_readdir }, - { &vop_readlink_desc, (vop_t *) cd9660_readlink }, - { &vop_reclaim_desc, (vop_t *) cd9660_reclaim }, - { &vop_setattr_desc, (vop_t *) cd9660_setattr }, - { &vop_strategy_desc, (vop_t *) cd9660_strategy }, - { &vop_unlock_desc, (vop_t *) vop_stdunlock }, - { &vop_getpages_desc, (vop_t *) cd9660_getpages }, - { &vop_putpages_desc, (vop_t *) cd9660_putpages }, + { &vop_default_desc, (void *) vop_defaultop }, + { &vop_access_desc, (void *) cd9660_access }, + { &vop_advlock_desc, (void *) cd9660_advlock }, + { &vop_bmap_desc, (void *) cd9660_bmap }, + { &vop_cachedlookup_desc, (void *) cd9660_lookup }, + { &vop_getattr_desc, (void *) cd9660_getattr }, + { &vop_inactive_desc, (void *) cd9660_inactive }, + { &vop_ioctl_desc, (void *) cd9660_ioctl }, + { &vop_islocked_desc, (void *) vop_stdislocked }, + { &vop_lock_desc, (void *) vop_stdlock }, + { &vop_lookup_desc, (void *) vfs_cache_lookup }, + { &vop_pathconf_desc, (void *) cd9660_pathconf }, + { &vop_print_desc, (void *) cd9660_print }, + { &vop_read_desc, (void *) cd9660_read }, + { &vop_readdir_desc, (void *) cd9660_readdir }, + { &vop_readlink_desc, (void *) cd9660_readlink }, + { &vop_reclaim_desc, (void *) cd9660_reclaim }, + { &vop_setattr_desc, (void *) cd9660_setattr }, + { &vop_strategy_desc, (void *) cd9660_strategy }, + { &vop_unlock_desc, (void *) vop_stdunlock }, + { &vop_getpages_desc, (void *) cd9660_getpages }, + { &vop_putpages_desc, (void *) cd9660_putpages }, { NULL, NULL } }; static struct vnodeopv_desc cd9660_vnodeop_opv_desc = - { &cd9660_vnodeop_p, cd9660_vnodeop_entries }; + { &cd9660_vnode_vops, cd9660_vnodeop_entries }; VNODEOP_SET(cd9660_vnodeop_opv_desc); /* * Special device vnode ops */ -vop_t **cd9660_specop_p; +struct vop_ops *cd9660_spec_vops; static struct vnodeopv_entry_desc cd9660_specop_entries[] = { - { &vop_default_desc, (vop_t *) spec_vnoperate }, - { &vop_access_desc, (vop_t *) cd9660_access }, - { &vop_getattr_desc, (vop_t *) cd9660_getattr }, - { &vop_inactive_desc, (vop_t *) cd9660_inactive }, - { &vop_islocked_desc, (vop_t *) vop_stdislocked }, - { &vop_lock_desc, (vop_t *) vop_stdlock }, - { &vop_print_desc, (vop_t *) cd9660_print }, - { &vop_reclaim_desc, (vop_t *) cd9660_reclaim }, - { &vop_setattr_desc, (vop_t *) cd9660_setattr }, - { &vop_unlock_desc, (vop_t *) vop_stdunlock }, + { &vop_default_desc, (void *) spec_vnoperate }, + { &vop_access_desc, (void *) cd9660_access }, + { &vop_getattr_desc, (void *) cd9660_getattr }, + { &vop_inactive_desc, (void *) cd9660_inactive }, + { &vop_islocked_desc, (void *) vop_stdislocked }, + { &vop_lock_desc, (void *) vop_stdlock }, + { &vop_print_desc, (void *) cd9660_print }, + { &vop_reclaim_desc, (void *) cd9660_reclaim }, + { &vop_setattr_desc, (void *) cd9660_setattr }, + { &vop_unlock_desc, (void *) vop_stdunlock }, { NULL, NULL } }; static struct vnodeopv_desc cd9660_specop_opv_desc = - { &cd9660_specop_p, cd9660_specop_entries }; + { &cd9660_spec_vops, cd9660_specop_entries }; VNODEOP_SET(cd9660_specop_opv_desc); -vop_t **cd9660_fifoop_p; +struct vop_ops *cd9660_fifo_vops; static struct vnodeopv_entry_desc cd9660_fifoop_entries[] = { - { &vop_default_desc, (vop_t *) fifo_vnoperate }, - { &vop_access_desc, (vop_t *) cd9660_access }, - { &vop_getattr_desc, (vop_t *) cd9660_getattr }, - { &vop_inactive_desc, (vop_t *) cd9660_inactive }, - { &vop_islocked_desc, (vop_t *) vop_stdislocked }, - { &vop_lock_desc, (vop_t *) vop_stdlock }, - { &vop_print_desc, (vop_t *) cd9660_print }, - { &vop_reclaim_desc, (vop_t *) cd9660_reclaim }, - { &vop_setattr_desc, (vop_t *) cd9660_setattr }, - { &vop_unlock_desc, (vop_t *) vop_stdunlock }, + { &vop_default_desc, (void *) fifo_vnoperate }, + { &vop_access_desc, (void *) cd9660_access }, + { &vop_getattr_desc, (void *) cd9660_getattr }, + { &vop_inactive_desc, (void *) cd9660_inactive }, + { &vop_islocked_desc, (void *) vop_stdislocked }, + { &vop_lock_desc, (void *) vop_stdlock }, + { &vop_print_desc, (void *) cd9660_print }, + { &vop_reclaim_desc, (void *) cd9660_reclaim }, + { &vop_setattr_desc, (void *) cd9660_setattr }, + { &vop_unlock_desc, (void *) vop_stdunlock }, { NULL, NULL } }; static struct vnodeopv_desc cd9660_fifoop_opv_desc = - { &cd9660_fifoop_p, cd9660_fifoop_entries }; + { &cd9660_fifo_vops, cd9660_fifoop_entries }; VNODEOP_SET(cd9660_fifoop_opv_desc); diff --git a/sys/vfs/isofs/cd9660/iso.h b/sys/vfs/isofs/cd9660/iso.h index 5f0146cea9..ecbdea89b3 100644 --- a/sys/vfs/isofs/cd9660/iso.h +++ b/sys/vfs/isofs/cd9660/iso.h @@ -37,7 +37,7 @@ * * @(#)iso.h 8.6 (Berkeley) 5/10/95 * $FreeBSD: src/sys/isofs/cd9660/iso.h,v 1.19.2.1 2000/07/08 14:35:56 bp Exp $ - * $DragonFly: src/sys/vfs/isofs/cd9660/iso.h,v 1.3 2003/08/20 09:56:32 rob Exp $ + * $DragonFly: src/sys/vfs/isofs/cd9660/iso.h,v 1.4 2004/08/13 17:51:11 dillon Exp $ */ #define ISODCL(from, to) (to - from + 1) @@ -263,9 +263,9 @@ int cd9660_uninit (struct vfsconf *); #define cd9660_sysctl ((int (*) (int *, u_int, void *, size_t *, void *, \ size_t, struct proc *))eopnotsupp) -extern vop_t **cd9660_vnodeop_p; -extern vop_t **cd9660_specop_p; -extern vop_t **cd9660_fifoop_p; +extern struct vop_ops *cd9660_vnode_vops; +extern struct vop_ops *cd9660_spec_vops; +extern struct vop_ops *cd9660_fifo_vops; int isochar (u_char *, u_char *, int, u_char *); int isofncmp (u_char *, int, u_char *, int, int); diff --git a/sys/vfs/mfs/Makefile b/sys/vfs/mfs/Makefile index 451dc96527..51a964cda0 100644 --- a/sys/vfs/mfs/Makefile +++ b/sys/vfs/mfs/Makefile @@ -1,9 +1,8 @@ # $FreeBSD: src/sys/modules/mfs/Makefile,v 1.8 1999/12/12 16:47:26 peter Exp $ -# $DragonFly: src/sys/vfs/mfs/Makefile,v 1.3 2003/08/15 07:26:15 dillon Exp $ +# $DragonFly: src/sys/vfs/mfs/Makefile,v 1.4 2004/08/13 17:51:11 dillon Exp $ KMOD= mfs -SRCS= vnode_if.h \ - mfs_vfsops.c mfs_vnops.c opt_mfs.h +SRCS= mfs_vfsops.c mfs_vnops.c opt_mfs.h NOMAN= .include diff --git a/sys/vfs/mfs/mfs_vfsops.c b/sys/vfs/mfs/mfs_vfsops.c index 47b429590a..b9b65becd7 100644 --- a/sys/vfs/mfs/mfs_vfsops.c +++ b/sys/vfs/mfs/mfs_vfsops.c @@ -32,7 +32,7 @@ * * @(#)mfs_vfsops.c 8.11 (Berkeley) 6/19/95 * $FreeBSD: src/sys/ufs/mfs/mfs_vfsops.c,v 1.81.2.3 2001/07/04 17:35:21 tegge Exp $ - * $DragonFly: src/sys/vfs/mfs/mfs_vfsops.c,v 1.15 2004/05/19 22:53:04 dillon Exp $ + * $DragonFly: src/sys/vfs/mfs/mfs_vfsops.c,v 1.16 2004/08/13 17:51:11 dillon Exp $ */ @@ -66,7 +66,7 @@ MALLOC_DEFINE(M_MFSNODE, "MFS node", "MFS vnode private part"); -extern vop_t **mfs_vnodeop_p; +extern struct vop_ops *mfs_vnode_vops; static int mfs_mount (struct mount *mp, char *path, caddr_t data, struct nameidata *ndp, @@ -290,7 +290,7 @@ mfs_mount(struct mount *mp, char *path, caddr_t data, struct nameidata *ndp, */ MALLOC(mfsp, struct mfsnode *, sizeof *mfsp, M_MFSNODE, M_WAITOK); - err = getnewvnode(VT_MFS, (struct mount *)0, mfs_vnodeop_p, &devvp); + err = getnewvnode(VT_MFS, NULL, mfs_vnode_vops, &devvp); if (err) { FREE(mfsp, M_MFSNODE); goto error_1; diff --git a/sys/vfs/mfs/mfs_vnops.c b/sys/vfs/mfs/mfs_vnops.c index 587d877d4f..4f469cba7c 100644 --- a/sys/vfs/mfs/mfs_vnops.c +++ b/sys/vfs/mfs/mfs_vnops.c @@ -32,7 +32,7 @@ * * @(#)mfs_vnops.c 8.11 (Berkeley) 5/22/95 * $FreeBSD: src/sys/ufs/mfs/mfs_vnops.c,v 1.47.2.1 2001/05/22 02:06:43 bp Exp $ - * $DragonFly: src/sys/vfs/mfs/mfs_vnops.c,v 1.13 2004/05/19 22:53:04 dillon Exp $ + * $DragonFly: src/sys/vfs/mfs/mfs_vnops.c,v 1.14 2004/08/13 17:51:11 dillon Exp $ */ #include @@ -65,31 +65,31 @@ static int mfs_getpages (struct vop_getpages_args *); /* XXX */ /* * mfs vnode operations. */ -vop_t **mfs_vnodeop_p; +struct vop_ops *mfs_vnode_vops; static struct vnodeopv_entry_desc mfs_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) mfs_badop }, - { &vop_bmap_desc, (vop_t *) mfs_bmap }, - { &vop_bwrite_desc, (vop_t *) vop_defaultop }, - { &vop_close_desc, (vop_t *) mfs_close }, - { &vop_createvobject_desc, (vop_t *) vop_stdcreatevobject }, - { &vop_destroyvobject_desc, (vop_t *) vop_stddestroyvobject }, - { &vop_freeblks_desc, (vop_t *) mfs_freeblks }, - { &vop_fsync_desc, (vop_t *) mfs_fsync }, - { &vop_getpages_desc, (vop_t *) mfs_getpages }, - { &vop_getvobject_desc, (vop_t *) vop_stdgetvobject }, - { &vop_inactive_desc, (vop_t *) mfs_inactive }, - { &vop_ioctl_desc, (vop_t *) vop_enotty }, - { &vop_islocked_desc, (vop_t *) vop_defaultop }, - { &vop_lock_desc, (vop_t *) vop_defaultop }, - { &vop_open_desc, (vop_t *) mfs_open }, - { &vop_print_desc, (vop_t *) mfs_print }, - { &vop_reclaim_desc, (vop_t *) mfs_reclaim }, - { &vop_strategy_desc, (vop_t *) mfs_strategy }, - { &vop_unlock_desc, (vop_t *) vop_defaultop }, + { &vop_default_desc, (void *) mfs_badop }, + { &vop_bmap_desc, (void *) mfs_bmap }, + { &vop_bwrite_desc, vop_defaultop }, + { &vop_close_desc, (void *) mfs_close }, + { &vop_createvobject_desc, (void *) vop_stdcreatevobject }, + { &vop_destroyvobject_desc, (void *) vop_stddestroyvobject }, + { &vop_freeblks_desc, (void *) mfs_freeblks }, + { &vop_fsync_desc, (void *) mfs_fsync }, + { &vop_getpages_desc, (void *) mfs_getpages }, + { &vop_getvobject_desc, (void *) vop_stdgetvobject }, + { &vop_inactive_desc, (void *) mfs_inactive }, + { &vop_ioctl_desc, vop_enotty }, + { &vop_islocked_desc, vop_defaultop }, + { &vop_lock_desc, vop_defaultop }, + { &vop_open_desc, (void *) mfs_open }, + { &vop_print_desc, (void *) mfs_print }, + { &vop_reclaim_desc, (void *) mfs_reclaim }, + { &vop_strategy_desc, (void *) mfs_strategy }, + { &vop_unlock_desc, vop_defaultop }, { NULL, NULL } }; static struct vnodeopv_desc mfs_vnodeop_opv_desc = - { &mfs_vnodeop_p, mfs_vnodeop_entries }; + { &mfs_vnode_vops, mfs_vnodeop_entries }; VNODEOP_SET(mfs_vnodeop_opv_desc); @@ -122,7 +122,7 @@ mfs_open(struct vop_open_args *ap) static int mfs_fsync(struct vop_fsync_args *ap) { - return (VOCALL(spec_vnodeop_p, VOFFSET(vop_fsync), ap)); + return (VOCALL(spec_vnode_vops, VOFFSET(vop_fsync), &ap->a_head)); } /* @@ -405,12 +405,12 @@ mfs_badop(struct vop_generic_args *ap) printf("mfs_badop[%s]\n", ap->a_desc->vdesc_name); i = vop_defaultop(ap); - printf("mfs_badop[%s] = %d\n", ap->a_desc->vdesc_name,i); + printf("mfs_badop[%s] = %d\n", ap->a_desc->vdesc_name, i); return (i); } static int mfs_getpages(struct vop_getpages_args *ap) { - return (VOCALL(spec_vnodeop_p, VOFFSET(vop_getpages), ap)); + return (VOCALL(spec_vnode_vops, VOFFSET(vop_getpages), &ap->a_head)); } diff --git a/sys/vfs/msdosfs/Makefile b/sys/vfs/msdosfs/Makefile index c187325689..57c02366c4 100644 --- a/sys/vfs/msdosfs/Makefile +++ b/sys/vfs/msdosfs/Makefile @@ -1,9 +1,8 @@ # $FreeBSD: src/sys/modules/msdos/Makefile,v 1.10.2.2 2002/12/01 09:01:08 nyan Exp $ -# $DragonFly: src/sys/vfs/msdosfs/Makefile,v 1.3 2003/08/15 07:26:15 dillon Exp $ +# $DragonFly: src/sys/vfs/msdosfs/Makefile,v 1.4 2004/08/13 17:51:11 dillon Exp $ KMOD= msdos -SRCS= vnode_if.h \ - msdosfs_conv.c msdosfs_denode.c msdosfs_fat.c msdosfs_lookup.c \ +SRCS= msdosfs_conv.c msdosfs_denode.c msdosfs_fat.c msdosfs_lookup.c \ msdosfs_vfsops.c msdosfs_vnops.c NOMAN= diff --git a/sys/vfs/msdosfs/denode.h b/sys/vfs/msdosfs/denode.h index 7315e785d7..20ae751060 100644 --- a/sys/vfs/msdosfs/denode.h +++ b/sys/vfs/msdosfs/denode.h @@ -1,5 +1,5 @@ /* $FreeBSD: src/sys/msdosfs/denode.h,v 1.20 1999/12/29 04:54:52 peter Exp $ */ -/* $DragonFly: src/sys/vfs/msdosfs/denode.h,v 1.5 2003/08/20 09:56:32 rob Exp $ */ +/* $DragonFly: src/sys/vfs/msdosfs/denode.h,v 1.6 2004/08/13 17:51:11 dillon Exp $ */ /* $NetBSD: denode.h,v 1.25 1997/11/17 15:36:28 ws Exp $ */ /*- @@ -260,7 +260,7 @@ struct defid { #endif }; -extern vop_t **msdosfs_vnodeop_p; +extern struct vop_ops *msdosfs_vnode_vops; int msdosfs_lookup (struct vop_cachedlookup_args *); int msdosfs_inactive (struct vop_inactive_args *); diff --git a/sys/vfs/msdosfs/msdosfs_denode.c b/sys/vfs/msdosfs/msdosfs_denode.c index 7c0ca6915f..a831751d74 100644 --- a/sys/vfs/msdosfs/msdosfs_denode.c +++ b/sys/vfs/msdosfs/msdosfs_denode.c @@ -1,5 +1,5 @@ /* $FreeBSD: src/sys/msdosfs/msdosfs_denode.c,v 1.47.2.3 2002/08/22 16:20:15 trhodes Exp $ */ -/* $DragonFly: src/sys/vfs/msdosfs/msdosfs_denode.c,v 1.12 2004/04/24 04:32:04 drhodus Exp $ */ +/* $DragonFly: src/sys/vfs/msdosfs/msdosfs_denode.c,v 1.13 2004/08/13 17:51:11 dillon Exp $ */ /* $NetBSD: msdosfs_denode.c,v 1.28 1998/02/10 14:10:00 mrg Exp $ */ /*- @@ -266,7 +266,7 @@ deget(struct msdosfsmount *pmp, /* so we know the maj/min number */ * copy it from the passed disk buffer. */ /* getnewvnode() does a vref() on the vnode */ - error = getnewvnode(VT_MSDOSFS, mntp, msdosfs_vnodeop_p, &nvp); + error = getnewvnode(VT_MSDOSFS, mntp, msdosfs_vnode_vops, &nvp); if (error) { *depp = NULL; FREE(ldep, M_MSDOSFSNODE); diff --git a/sys/vfs/msdosfs/msdosfs_vnops.c b/sys/vfs/msdosfs/msdosfs_vnops.c index 4ca8546ed0..793e0c2e14 100644 --- a/sys/vfs/msdosfs/msdosfs_vnops.c +++ b/sys/vfs/msdosfs/msdosfs_vnops.c @@ -1,5 +1,5 @@ /* $FreeBSD: src/sys/msdosfs/msdosfs_vnops.c,v 1.95.2.4 2003/06/13 15:05:47 trhodes Exp $ */ -/* $DragonFly: src/sys/vfs/msdosfs/msdosfs_vnops.c,v 1.15 2004/04/17 00:30:17 cpressey Exp $ */ +/* $DragonFly: src/sys/vfs/msdosfs/msdosfs_vnops.c,v 1.16 2004/08/13 17:51:11 dillon Exp $ */ /* $NetBSD: msdosfs_vnops.c,v 1.68 1998/02/10 14:10:04 mrg Exp $ */ /*- @@ -1895,41 +1895,41 @@ msdosfs_putpages(struct vop_putpages_args *ap) } /* Global vfs data structures for msdosfs */ -vop_t **msdosfs_vnodeop_p; +struct vop_ops *msdosfs_vnode_vops; static struct vnodeopv_entry_desc msdosfs_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) vop_defaultop }, - { &vop_access_desc, (vop_t *) msdosfs_access }, - { &vop_bmap_desc, (vop_t *) msdosfs_bmap }, - { &vop_cachedlookup_desc, (vop_t *) msdosfs_lookup }, - { &vop_close_desc, (vop_t *) msdosfs_close }, - { &vop_create_desc, (vop_t *) msdosfs_create }, - { &vop_fsync_desc, (vop_t *) msdosfs_fsync }, - { &vop_getattr_desc, (vop_t *) msdosfs_getattr }, - { &vop_inactive_desc, (vop_t *) msdosfs_inactive }, - { &vop_islocked_desc, (vop_t *) vop_stdislocked }, - { &vop_link_desc, (vop_t *) msdosfs_link }, - { &vop_lock_desc, (vop_t *) vop_stdlock }, - { &vop_lookup_desc, (vop_t *) vfs_cache_lookup }, - { &vop_mkdir_desc, (vop_t *) msdosfs_mkdir }, - { &vop_mknod_desc, (vop_t *) msdosfs_mknod }, - { &vop_pathconf_desc, (vop_t *) msdosfs_pathconf }, - { &vop_print_desc, (vop_t *) msdosfs_print }, - { &vop_read_desc, (vop_t *) msdosfs_read }, - { &vop_readdir_desc, (vop_t *) msdosfs_readdir }, - { &vop_reclaim_desc, (vop_t *) msdosfs_reclaim }, - { &vop_remove_desc, (vop_t *) msdosfs_remove }, - { &vop_rename_desc, (vop_t *) msdosfs_rename }, - { &vop_rmdir_desc, (vop_t *) msdosfs_rmdir }, - { &vop_setattr_desc, (vop_t *) msdosfs_setattr }, - { &vop_strategy_desc, (vop_t *) msdosfs_strategy }, - { &vop_symlink_desc, (vop_t *) msdosfs_symlink }, - { &vop_unlock_desc, (vop_t *) vop_stdunlock }, - { &vop_write_desc, (vop_t *) msdosfs_write }, - { &vop_getpages_desc, (vop_t *) msdosfs_getpages }, - { &vop_putpages_desc, (vop_t *) msdosfs_putpages }, + { &vop_default_desc, vop_defaultop }, + { &vop_access_desc, (void *) msdosfs_access }, + { &vop_bmap_desc, (void *) msdosfs_bmap }, + { &vop_cachedlookup_desc, (void *) msdosfs_lookup }, + { &vop_close_desc, (void *) msdosfs_close }, + { &vop_create_desc, (void *) msdosfs_create }, + { &vop_fsync_desc, (void *) msdosfs_fsync }, + { &vop_getattr_desc, (void *) msdosfs_getattr }, + { &vop_inactive_desc, (void *) msdosfs_inactive }, + { &vop_islocked_desc, (void *) vop_stdislocked }, + { &vop_link_desc, (void *) msdosfs_link }, + { &vop_lock_desc, (void *) vop_stdlock }, + { &vop_lookup_desc, (void *) vfs_cache_lookup }, + { &vop_mkdir_desc, (void *) msdosfs_mkdir }, + { &vop_mknod_desc, (void *) msdosfs_mknod }, + { &vop_pathconf_desc, (void *) msdosfs_pathconf }, + { &vop_print_desc, (void *) msdosfs_print }, + { &vop_read_desc, (void *) msdosfs_read }, + { &vop_readdir_desc, (void *) msdosfs_readdir }, + { &vop_reclaim_desc, (void *) msdosfs_reclaim }, + { &vop_remove_desc, (void *) msdosfs_remove }, + { &vop_rename_desc, (void *) msdosfs_rename }, + { &vop_rmdir_desc, (void *) msdosfs_rmdir }, + { &vop_setattr_desc, (void *) msdosfs_setattr }, + { &vop_strategy_desc, (void *) msdosfs_strategy }, + { &vop_symlink_desc, (void *) msdosfs_symlink }, + { &vop_unlock_desc, (void *) vop_stdunlock }, + { &vop_write_desc, (void *) msdosfs_write }, + { &vop_getpages_desc, (void *) msdosfs_getpages }, + { &vop_putpages_desc, (void *) msdosfs_putpages }, { NULL, NULL } }; static struct vnodeopv_desc msdosfs_vnodeop_opv_desc = - { &msdosfs_vnodeop_p, msdosfs_vnodeop_entries }; + { &msdosfs_vnode_vops, msdosfs_vnodeop_entries }; VNODEOP_SET(msdosfs_vnodeop_opv_desc); diff --git a/sys/vfs/nfs/Makefile b/sys/vfs/nfs/Makefile index 4d79f876c6..51e43734f2 100644 --- a/sys/vfs/nfs/Makefile +++ b/sys/vfs/nfs/Makefile @@ -1,9 +1,8 @@ # $FreeBSD: src/sys/modules/nfs/Makefile,v 1.16 1999/12/12 20:34:06 peter Exp $ -# $DragonFly: src/sys/vfs/nfs/Makefile,v 1.3 2003/08/15 07:26:15 dillon Exp $ +# $DragonFly: src/sys/vfs/nfs/Makefile,v 1.4 2004/08/13 17:51:11 dillon Exp $ KMOD= nfs -SRCS= vnode_if.h \ - nfs_bio.c nfs_node.c nfs_nqlease.c nfs_serv.c nfs_socket.c \ +SRCS= nfs_bio.c nfs_node.c nfs_nqlease.c nfs_serv.c nfs_socket.c \ nfs_srvcache.c nfs_subs.c nfs_syscalls.c nfs_vfsops.c \ nfs_vnops.c opt_inet.h opt_nfs.h opt_vmpage.h opt_bootp.h NFS_INET?= 1 # 0/1 - requires INET to be configured in kernel diff --git a/sys/vfs/nfs/nfs_node.c b/sys/vfs/nfs/nfs_node.c index 85e8940176..5b44b5ce50 100644 --- a/sys/vfs/nfs/nfs_node.c +++ b/sys/vfs/nfs/nfs_node.c @@ -35,7 +35,7 @@ * * @(#)nfs_node.c 8.6 (Berkeley) 5/22/95 * $FreeBSD: src/sys/nfs/nfs_node.c,v 1.36.2.3 2002/01/05 22:25:04 dillon Exp $ - * $DragonFly: src/sys/vfs/nfs/nfs_node.c,v 1.10 2004/04/19 16:33:49 cpressey Exp $ + * $DragonFly: src/sys/vfs/nfs/nfs_node.c,v 1.11 2004/08/13 17:51:11 dillon Exp $ */ @@ -137,7 +137,7 @@ loop: */ np = zalloc(nfsnode_zone); - error = getnewvnode(VT_NFS, mntp, nfsv2_vnodeop_p, &nvp); + error = getnewvnode(VT_NFS, mntp, nfsv2_vnode_vops, &nvp); if (error) { if (nfs_node_hash_lock < 0) wakeup(&nfs_node_hash_lock); diff --git a/sys/vfs/nfs/nfs_nqlease.c b/sys/vfs/nfs/nfs_nqlease.c index 8b63b28ab4..e95c9a0a42 100644 --- a/sys/vfs/nfs/nfs_nqlease.c +++ b/sys/vfs/nfs/nfs_nqlease.c @@ -35,7 +35,7 @@ * * @(#)nfs_nqlease.c 8.9 (Berkeley) 5/20/95 * $FreeBSD: src/sys/nfs/nfs_nqlease.c,v 1.50 2000/02/13 03:32:05 peter Exp $ - * $DragonFly: src/sys/vfs/nfs/Attic/nfs_nqlease.c,v 1.17 2004/08/02 13:22:34 joerg Exp $ + * $DragonFly: src/sys/vfs/nfs/Attic/nfs_nqlease.c,v 1.18 2004/08/13 17:51:11 dillon Exp $ */ @@ -329,7 +329,7 @@ doreply: * Ifdef'd code in nfsnode.h renames these routines to whatever a particular * OS needs. */ -void +int nqnfs_lease_check(struct vnode *vp, struct thread *td, struct ucred *cred, int flag) { @@ -337,8 +337,9 @@ nqnfs_lease_check(struct vnode *vp, struct thread *td, int cache; u_quad_t frev; - (void) nqsrv_getlease(vp, &duration, ND_CHECK | flag, NQLOCALSLP, + nqsrv_getlease(vp, &duration, ND_CHECK | flag, NQLOCALSLP, td, (struct sockaddr *)0, &cache, &frev, cred); + return(0); } /* diff --git a/sys/vfs/nfs/nfs_subs.c b/sys/vfs/nfs/nfs_subs.c index 3da6fd7543..9a534b1b70 100644 --- a/sys/vfs/nfs/nfs_subs.c +++ b/sys/vfs/nfs/nfs_subs.c @@ -35,7 +35,7 @@ * * @(#)nfs_subs.c 8.8 (Berkeley) 5/22/95 * $FreeBSD: /repoman/r/ncvs/src/sys/nfsclient/nfs_subs.c,v 1.128 2004/04/14 23:23:55 peadar Exp $ - * $DragonFly: src/sys/vfs/nfs/nfs_subs.c,v 1.18 2004/06/02 14:43:04 eirikn Exp $ + * $DragonFly: src/sys/vfs/nfs/nfs_subs.c,v 1.19 2004/08/13 17:51:11 dillon Exp $ */ /* @@ -116,7 +116,7 @@ static sy_call_t *nfs_prev_nfssvc_sy_call; #ifndef NFS_NOSERVER -static vop_t *nfs_prev_vop_lease_check; +static int (*nfs_prev_vop_lease_check)(struct vop_lease_args *); /* * Mapping of old NFS Version 2 RPC numbers to generic numbers. @@ -1124,8 +1124,8 @@ nfs_init(struct vfsconf *vfsp) * of the system can call us, if we are loadable. */ #ifndef NFS_NOSERVER - nfs_prev_vop_lease_check = default_vnodeop_p[VOFFSET(vop_lease)]; - default_vnodeop_p[VOFFSET(vop_lease)] = (vop_t *)nqnfs_vop_lease_check; + nfs_prev_vop_lease_check = default_vnode_vops->vop_lease; + default_vnode_vops->vop_lease = nqnfs_vop_lease_check; #endif nfs_prev_lease_updatetime = lease_updatetime; lease_updatetime = nfs_lease_updatetime; @@ -1146,7 +1146,7 @@ nfs_uninit(struct vfsconf *vfsp) untimeout(nfs_timer, (void *)NULL, nfs_timer_handle); nfs_mount_type = -1; #ifndef NFS_NOSERVER - default_vnodeop_p[VOFFSET(vop_lease)] = nfs_prev_vop_lease_check; + default_vnode_vops->vop_lease = nfs_prev_vop_lease_check; #endif lease_updatetime = nfs_prev_lease_updatetime; sysent[SYS_nfssvc].sy_narg = nfs_prev_nfssvc_sy_narg; @@ -1242,10 +1242,10 @@ nfs_loadattrcache(struct vnode **vpp, struct mbuf **mdp, caddr_t *dposp, if (vp->v_type != vtyp) { vp->v_type = vtyp; if (vp->v_type == VFIFO) { - vp->v_op = fifo_nfsv2nodeop_p; + vp->v_vops = fifo_nfsv2node_vops; } if (vp->v_type == VCHR || vp->v_type == VBLK) { - vp->v_op = spec_nfsv2nodeop_p; + vp->v_vops = spec_nfsv2node_vops; addaliasu(vp, rdev); } np->n_mtime = mtime.tv_sec; diff --git a/sys/vfs/nfs/nfs_vnops.c b/sys/vfs/nfs/nfs_vnops.c index fea41486c9..f9d973902b 100644 --- a/sys/vfs/nfs/nfs_vnops.c +++ b/sys/vfs/nfs/nfs_vnops.c @@ -35,7 +35,7 @@ * * @(#)nfs_vnops.c 8.16 (Berkeley) 5/27/95 * $FreeBSD: src/sys/nfs/nfs_vnops.c,v 1.150.2.5 2001/12/20 19:56:28 dillon Exp $ - * $DragonFly: src/sys/vfs/nfs/nfs_vnops.c,v 1.25 2004/08/02 13:22:34 joerg Exp $ + * $DragonFly: src/sys/vfs/nfs/nfs_vnops.c,v 1.26 2004/08/13 17:51:12 dillon Exp $ */ @@ -138,94 +138,94 @@ static int nfs_bwrite (struct vop_bwrite_args *); /* * Global vfs data structures for nfs */ -vop_t **nfsv2_vnodeop_p; +struct vop_ops *nfsv2_vnode_vops; static struct vnodeopv_entry_desc nfsv2_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) vop_defaultop }, - { &vop_access_desc, (vop_t *) nfs_access }, - { &vop_advlock_desc, (vop_t *) nfs_advlock }, - { &vop_bmap_desc, (vop_t *) nfs_bmap }, - { &vop_bwrite_desc, (vop_t *) nfs_bwrite }, - { &vop_close_desc, (vop_t *) nfs_close }, - { &vop_create_desc, (vop_t *) nfs_create }, - { &vop_fsync_desc, (vop_t *) nfs_fsync }, - { &vop_getattr_desc, (vop_t *) nfs_getattr }, - { &vop_getpages_desc, (vop_t *) nfs_getpages }, - { &vop_putpages_desc, (vop_t *) nfs_putpages }, - { &vop_inactive_desc, (vop_t *) nfs_inactive }, - { &vop_islocked_desc, (vop_t *) vop_stdislocked }, - { &vop_lease_desc, (vop_t *) vop_null }, - { &vop_link_desc, (vop_t *) nfs_link }, - { &vop_lock_desc, (vop_t *) vop_sharedlock }, - { &vop_lookup_desc, (vop_t *) nfs_lookup }, - { &vop_mkdir_desc, (vop_t *) nfs_mkdir }, - { &vop_mknod_desc, (vop_t *) nfs_mknod }, - { &vop_mmap_desc, (vop_t *) nfs_mmap }, - { &vop_open_desc, (vop_t *) nfs_open }, - { &vop_poll_desc, (vop_t *) nfs_poll }, - { &vop_print_desc, (vop_t *) nfs_print }, - { &vop_read_desc, (vop_t *) nfs_read }, - { &vop_readdir_desc, (vop_t *) nfs_readdir }, - { &vop_readlink_desc, (vop_t *) nfs_readlink }, - { &vop_reclaim_desc, (vop_t *) nfs_reclaim }, - { &vop_remove_desc, (vop_t *) nfs_remove }, - { &vop_rename_desc, (vop_t *) nfs_rename }, - { &vop_rmdir_desc, (vop_t *) nfs_rmdir }, - { &vop_setattr_desc, (vop_t *) nfs_setattr }, - { &vop_strategy_desc, (vop_t *) nfs_strategy }, - { &vop_symlink_desc, (vop_t *) nfs_symlink }, - { &vop_unlock_desc, (vop_t *) vop_stdunlock }, - { &vop_write_desc, (vop_t *) nfs_write }, + { &vop_default_desc, vop_defaultop }, + { &vop_access_desc, (void *) nfs_access }, + { &vop_advlock_desc, (void *) nfs_advlock }, + { &vop_bmap_desc, (void *) nfs_bmap }, + { &vop_bwrite_desc, (void *) nfs_bwrite }, + { &vop_close_desc, (void *) nfs_close }, + { &vop_create_desc, (void *) nfs_create }, + { &vop_fsync_desc, (void *) nfs_fsync }, + { &vop_getattr_desc, (void *) nfs_getattr }, + { &vop_getpages_desc, (void *) nfs_getpages }, + { &vop_putpages_desc, (void *) nfs_putpages }, + { &vop_inactive_desc, (void *) nfs_inactive }, + { &vop_islocked_desc, (void *) vop_stdislocked }, + { &vop_lease_desc, vop_null }, + { &vop_link_desc, (void *) nfs_link }, + { &vop_lock_desc, (void *) vop_sharedlock }, + { &vop_lookup_desc, (void *) nfs_lookup }, + { &vop_mkdir_desc, (void *) nfs_mkdir }, + { &vop_mknod_desc, (void *) nfs_mknod }, + { &vop_mmap_desc, (void *) nfs_mmap }, + { &vop_open_desc, (void *) nfs_open }, + { &vop_poll_desc, (void *) nfs_poll }, + { &vop_print_desc, (void *) nfs_print }, + { &vop_read_desc, (void *) nfs_read }, + { &vop_readdir_desc, (void *) nfs_readdir }, + { &vop_readlink_desc, (void *) nfs_readlink }, + { &vop_reclaim_desc, (void *) nfs_reclaim }, + { &vop_remove_desc, (void *) nfs_remove }, + { &vop_rename_desc, (void *) nfs_rename }, + { &vop_rmdir_desc, (void *) nfs_rmdir }, + { &vop_setattr_desc, (void *) nfs_setattr }, + { &vop_strategy_desc, (void *) nfs_strategy }, + { &vop_symlink_desc, (void *) nfs_symlink }, + { &vop_unlock_desc, (void *) vop_stdunlock }, + { &vop_write_desc, (void *) nfs_write }, { NULL, NULL } }; static struct vnodeopv_desc nfsv2_vnodeop_opv_desc = - { &nfsv2_vnodeop_p, nfsv2_vnodeop_entries }; + { &nfsv2_vnode_vops, nfsv2_vnodeop_entries }; VNODEOP_SET(nfsv2_vnodeop_opv_desc); /* * Special device vnode ops */ -vop_t **spec_nfsv2nodeop_p; +struct vop_ops *spec_nfsv2node_vops; static struct vnodeopv_entry_desc nfsv2_specop_entries[] = { - { &vop_default_desc, (vop_t *) spec_vnoperate }, - { &vop_access_desc, (vop_t *) nfsspec_access }, - { &vop_close_desc, (vop_t *) nfsspec_close }, - { &vop_fsync_desc, (vop_t *) nfs_fsync }, - { &vop_getattr_desc, (vop_t *) nfs_getattr }, - { &vop_inactive_desc, (vop_t *) nfs_inactive }, - { &vop_islocked_desc, (vop_t *) vop_stdislocked }, - { &vop_lock_desc, (vop_t *) vop_sharedlock }, - { &vop_print_desc, (vop_t *) nfs_print }, - { &vop_read_desc, (vop_t *) nfsspec_read }, - { &vop_reclaim_desc, (vop_t *) nfs_reclaim }, - { &vop_setattr_desc, (vop_t *) nfs_setattr }, - { &vop_unlock_desc, (vop_t *) vop_stdunlock }, - { &vop_write_desc, (vop_t *) nfsspec_write }, + { &vop_default_desc, (void *) spec_vnoperate }, + { &vop_access_desc, (void *) nfsspec_access }, + { &vop_close_desc, (void *) nfsspec_close }, + { &vop_fsync_desc, (void *) nfs_fsync }, + { &vop_getattr_desc, (void *) nfs_getattr }, + { &vop_inactive_desc, (void *) nfs_inactive }, + { &vop_islocked_desc, (void *) vop_stdislocked }, + { &vop_lock_desc, (void *) vop_sharedlock }, + { &vop_print_desc, (void *) nfs_print }, + { &vop_read_desc, (void *) nfsspec_read }, + { &vop_reclaim_desc, (void *) nfs_reclaim }, + { &vop_setattr_desc, (void *) nfs_setattr }, + { &vop_unlock_desc, (void *) vop_stdunlock }, + { &vop_write_desc, (void *) nfsspec_write }, { NULL, NULL } }; static struct vnodeopv_desc spec_nfsv2nodeop_opv_desc = - { &spec_nfsv2nodeop_p, nfsv2_specop_entries }; + { &spec_nfsv2node_vops, nfsv2_specop_entries }; VNODEOP_SET(spec_nfsv2nodeop_opv_desc); -vop_t **fifo_nfsv2nodeop_p; +struct vop_ops *fifo_nfsv2node_vops; static struct vnodeopv_entry_desc nfsv2_fifoop_entries[] = { - { &vop_default_desc, (vop_t *) fifo_vnoperate }, - { &vop_access_desc, (vop_t *) nfsspec_access }, - { &vop_close_desc, (vop_t *) nfsfifo_close }, - { &vop_fsync_desc, (vop_t *) nfs_fsync }, - { &vop_getattr_desc, (vop_t *) nfs_getattr }, - { &vop_inactive_desc, (vop_t *) nfs_inactive }, - { &vop_islocked_desc, (vop_t *) vop_stdislocked }, - { &vop_lock_desc, (vop_t *) vop_sharedlock }, - { &vop_print_desc, (vop_t *) nfs_print }, - { &vop_read_desc, (vop_t *) nfsfifo_read }, - { &vop_reclaim_desc, (vop_t *) nfs_reclaim }, - { &vop_setattr_desc, (vop_t *) nfs_setattr }, - { &vop_unlock_desc, (vop_t *) vop_stdunlock }, - { &vop_write_desc, (vop_t *) nfsfifo_write }, + { &vop_default_desc, (void *) fifo_vnoperate }, + { &vop_access_desc, (void *) nfsspec_access }, + { &vop_close_desc, (void *) nfsfifo_close }, + { &vop_fsync_desc, (void *) nfs_fsync }, + { &vop_getattr_desc, (void *) nfs_getattr }, + { &vop_inactive_desc, (void *) nfs_inactive }, + { &vop_islocked_desc, (void *) vop_stdislocked }, + { &vop_lock_desc, (void *) vop_sharedlock }, + { &vop_print_desc, (void *) nfs_print }, + { &vop_read_desc, (void *) nfsfifo_read }, + { &vop_reclaim_desc, (void *) nfs_reclaim }, + { &vop_setattr_desc, (void *) nfs_setattr }, + { &vop_unlock_desc, (void *) vop_stdunlock }, + { &vop_write_desc, (void *) nfsfifo_write }, { NULL, NULL } }; static struct vnodeopv_desc fifo_nfsv2nodeop_opv_desc = - { &fifo_nfsv2nodeop_p, nfsv2_fifoop_entries }; + { &fifo_nfsv2node_vops, nfsv2_fifoop_entries }; VNODEOP_SET(fifo_nfsv2nodeop_opv_desc); static int nfs_mknodrpc (struct vnode *dvp, struct vnode **vpp, @@ -3200,7 +3200,7 @@ nfsspec_read(struct vop_read_args *ap) */ np->n_flag |= NACC; getnanotime(&np->n_atim); - return (VOCALL(spec_vnodeop_p, VOFFSET(vop_read), ap)); + return (VOCALL(spec_vnode_vops, VOFFSET(vop_read), &ap->a_head)); } /* @@ -3219,7 +3219,7 @@ nfsspec_write(struct vop_write_args *ap) */ np->n_flag |= NUPD; getnanotime(&np->n_mtim); - return (VOCALL(spec_vnodeop_p, VOFFSET(vop_write), ap)); + return (VOCALL(spec_vnode_vops, VOFFSET(vop_write), &ap->a_head)); } /* @@ -3249,7 +3249,7 @@ nfsspec_close(struct vop_close_args *ap) (void)VOP_SETATTR(vp, &vattr, nfs_vpcred(vp, ND_WRITE), ap->a_td); } } - return (VOCALL(spec_vnodeop_p, VOFFSET(vop_close), ap)); + return (VOCALL(spec_vnode_vops, VOFFSET(vop_close), &ap->a_head)); } /* @@ -3268,7 +3268,7 @@ nfsfifo_read(struct vop_read_args *ap) */ np->n_flag |= NACC; getnanotime(&np->n_atim); - return (VOCALL(fifo_vnodeop_p, VOFFSET(vop_read), ap)); + return (VOCALL(fifo_vnode_vops, VOFFSET(vop_read), &ap->a_head)); } /* @@ -3287,7 +3287,7 @@ nfsfifo_write(struct vop_write_args *ap) */ np->n_flag |= NUPD; getnanotime(&np->n_mtim); - return (VOCALL(fifo_vnodeop_p, VOFFSET(vop_write), ap)); + return (VOCALL(fifo_vnode_vops, VOFFSET(vop_write), &ap->a_head)); } /* @@ -3322,6 +3322,6 @@ nfsfifo_close(struct vop_close_args *ap) (void)VOP_SETATTR(vp, &vattr, nfs_vpcred(vp, ND_WRITE), ap->a_td); } } - return (VOCALL(fifo_vnodeop_p, VOFFSET(vop_close), ap)); + return (VOCALL(fifo_vnode_vops, VOFFSET(vop_close), &ap->a_head)); } diff --git a/sys/vfs/nfs/nfsnode.h b/sys/vfs/nfs/nfsnode.h index 85c3a954f1..e8cf2587ea 100644 --- a/sys/vfs/nfs/nfsnode.h +++ b/sys/vfs/nfs/nfsnode.h @@ -35,7 +35,7 @@ * * @(#)nfsnode.h 8.9 (Berkeley) 5/14/95 * $FreeBSD: /repoman/r/ncvs/src/sys/nfsclient/nfsnode.h,v 1.43 2004/04/14 23:23:55 peadar Exp $ - * $DragonFly: src/sys/vfs/nfs/nfsnode.h,v 1.9 2004/05/03 16:06:26 joerg Exp $ + * $DragonFly: src/sys/vfs/nfs/nfsnode.h,v 1.10 2004/08/13 17:51:12 dillon Exp $ */ @@ -207,9 +207,9 @@ nfs_vpcred(struct vnode *vp, int ndflag) return(VFSTONFS((vp)->v_mount)->nm_cred); } -extern vop_t **fifo_nfsv2nodeop_p; -extern vop_t **nfsv2_vnodeop_p; -extern vop_t **spec_nfsv2nodeop_p; +extern struct vop_ops *fifo_nfsv2node_vops; +extern struct vop_ops *nfsv2_vnode_vops; +extern struct vop_ops *spec_nfsv2node_vops; /* * Prototypes for NFS vnode operations diff --git a/sys/vfs/nfs/nqnfs.h b/sys/vfs/nfs/nqnfs.h index ebe2c2382b..c5ab4517ec 100644 --- a/sys/vfs/nfs/nqnfs.h +++ b/sys/vfs/nfs/nqnfs.h @@ -35,7 +35,7 @@ * * @(#)nqnfs.h 8.3 (Berkeley) 3/30/95 * $FreeBSD: src/sys/nfs/nqnfs.h,v 1.22 2000/02/13 03:32:07 peter Exp $ - * $DragonFly: src/sys/vfs/nfs/Attic/nqnfs.h,v 1.5 2003/08/20 09:56:33 rob Exp $ + * $DragonFly: src/sys/vfs/nfs/Attic/nqnfs.h,v 1.6 2004/08/13 17:51:12 dillon Exp $ */ @@ -190,7 +190,7 @@ extern u_long nqfhhash; #define NQNFS_EXPIRED 500 #define NQNFS_TRYLATER 501 -void nqnfs_lease_check (struct vnode *, struct thread *, struct ucred *, int); +int nqnfs_lease_check (struct vnode *, struct thread *, struct ucred *, int); void nqnfs_lease_updatetime (int); int nqsrv_getlease (struct vnode *, u_int32_t *, int, struct nfssvc_sock *, struct thread *, diff --git a/sys/vfs/ntfs/Makefile b/sys/vfs/ntfs/Makefile index bcf149bc9d..5cc43366b3 100644 --- a/sys/vfs/ntfs/Makefile +++ b/sys/vfs/ntfs/Makefile @@ -1,9 +1,8 @@ # $FreeBSD: src/sys/modules/ntfs/Makefile,v 1.5 1999/12/12 20:34:07 peter Exp $ -# $DragonFly: src/sys/vfs/ntfs/Makefile,v 1.3 2003/08/15 07:26:15 dillon Exp $ +# $DragonFly: src/sys/vfs/ntfs/Makefile,v 1.4 2004/08/13 17:51:12 dillon Exp $ KMOD= ntfs -SRCS= vnode_if.h \ - ntfs_vfsops.c ntfs_vnops.c ntfs_subr.c ntfs_ihash.c \ +SRCS= ntfs_vfsops.c ntfs_vnops.c ntfs_subr.c ntfs_ihash.c \ ntfs_compr.c NOMAN= diff --git a/sys/vfs/ntfs/ntfs.h b/sys/vfs/ntfs/ntfs.h index e155cd1ae6..b4f495be0f 100644 --- a/sys/vfs/ntfs/ntfs.h +++ b/sys/vfs/ntfs/ntfs.h @@ -26,7 +26,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/ntfs/ntfs.h,v 1.8.2.2 2001/10/12 22:08:49 semenu Exp $ - * $DragonFly: src/sys/vfs/ntfs/ntfs.h,v 1.4 2004/03/01 06:33:22 dillon Exp $ + * $DragonFly: src/sys/vfs/ntfs/ntfs.h,v 1.5 2004/08/13 17:51:12 dillon Exp $ */ /*#define NTFS_DEBUG 1*/ @@ -336,4 +336,4 @@ typedef int (vop_t) (void *); #define ddprintf(a) #endif -extern vop_t **ntfs_vnodeop_p; +extern struct vop_ops *ntfs_vnode_vops; diff --git a/sys/vfs/ntfs/ntfs_vfsops.c b/sys/vfs/ntfs/ntfs_vfsops.c index e137f363e5..dd3c3be4d2 100644 --- a/sys/vfs/ntfs/ntfs_vfsops.c +++ b/sys/vfs/ntfs/ntfs_vfsops.c @@ -26,7 +26,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/ntfs/ntfs_vfsops.c,v 1.20.2.5 2001/12/25 01:44:45 dillon Exp $ - * $DragonFly: src/sys/vfs/ntfs/ntfs_vfsops.c,v 1.17 2004/05/26 07:45:26 dillon Exp $ + * $DragonFly: src/sys/vfs/ntfs/ntfs_vfsops.c,v 1.18 2004/08/13 17:51:12 dillon Exp $ */ @@ -913,7 +913,7 @@ ntfs_vgetex(struct mount *mp, ino_t ino, u_int32_t attrtype, char *attrname, return (0); } - error = getnewvnode(VT_NTFS, ntmp->ntm_mountp, ntfs_vnodeop_p, &vp); + error = getnewvnode(VT_NTFS, ntmp->ntm_mountp, ntfs_vnode_vops, &vp); if(error) { ntfs_frele(fp); ntfs_ntput(ip); diff --git a/sys/vfs/ntfs/ntfs_vnops.c b/sys/vfs/ntfs/ntfs_vnops.c index bb27efa9ef..48ad085bff 100644 --- a/sys/vfs/ntfs/ntfs_vnops.c +++ b/sys/vfs/ntfs/ntfs_vnops.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/ntfs/ntfs_vnops.c,v 1.9.2.4 2002/08/06 19:35:18 semenu Exp $ - * $DragonFly: src/sys/vfs/ntfs/ntfs_vnops.c,v 1.12 2004/04/24 04:32:04 drhodus Exp $ + * $DragonFly: src/sys/vfs/ntfs/ntfs_vnops.c,v 1.13 2004/08/13 17:51:12 dillon Exp $ * */ @@ -98,7 +98,7 @@ static int ntfs_getpages (struct vop_getpages_args *ap); static int ntfs_putpages (struct vop_putpages_args *); static int ntfs_fsync (struct vop_fsync_args *ap); #else -static int ntfs_bypass (struct vop_generic_args *ap); +static int ntfs_bypass (struct vop_generic_args *); #endif static int ntfs_pathconf (void *); @@ -864,61 +864,61 @@ ntfs_pathconf(void *v) /* * Global vfs data structures */ -vop_t **ntfs_vnodeop_p; +struct vop_ops *ntfs_vnode_vops; #if defined(__DragonFly__) static struct vnodeopv_entry_desc ntfs_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *)vop_defaultop }, - - { &vop_getattr_desc, (vop_t *)ntfs_getattr }, - { &vop_inactive_desc, (vop_t *)ntfs_inactive }, - { &vop_reclaim_desc, (vop_t *)ntfs_reclaim }, - { &vop_print_desc, (vop_t *)ntfs_print }, - { &vop_pathconf_desc, ntfs_pathconf }, - - { &vop_islocked_desc, (vop_t *)vop_stdislocked }, - { &vop_unlock_desc, (vop_t *)vop_stdunlock }, - { &vop_lock_desc, (vop_t *)vop_stdlock }, - { &vop_cachedlookup_desc, (vop_t *)ntfs_lookup }, - { &vop_lookup_desc, (vop_t *)vfs_cache_lookup }, - - { &vop_access_desc, (vop_t *)ntfs_access }, - { &vop_close_desc, (vop_t *)ntfs_close }, - { &vop_open_desc, (vop_t *)ntfs_open }, - { &vop_readdir_desc, (vop_t *)ntfs_readdir }, - { &vop_fsync_desc, (vop_t *)ntfs_fsync }, - - { &vop_bmap_desc, (vop_t *)ntfs_bmap }, - { &vop_getpages_desc, (vop_t *) ntfs_getpages }, - { &vop_putpages_desc, (vop_t *) ntfs_putpages }, - { &vop_strategy_desc, (vop_t *)ntfs_strategy }, - { &vop_bwrite_desc, (vop_t *)vop_stdbwrite }, - { &vop_read_desc, (vop_t *)ntfs_read }, - { &vop_write_desc, (vop_t *)ntfs_write }, + { &vop_default_desc, vop_defaultop }, + + { &vop_getattr_desc, (void *)ntfs_getattr }, + { &vop_inactive_desc, (void *)ntfs_inactive }, + { &vop_reclaim_desc, (void *)ntfs_reclaim }, + { &vop_print_desc, (void *)ntfs_print }, + { &vop_pathconf_desc, (void *)ntfs_pathconf }, + + { &vop_islocked_desc, (void *)vop_stdislocked }, + { &vop_unlock_desc, (void *)vop_stdunlock }, + { &vop_lock_desc, (void *)vop_stdlock }, + { &vop_cachedlookup_desc,(void *)ntfs_lookup }, + { &vop_lookup_desc, (void *)vfs_cache_lookup }, + + { &vop_access_desc, (void *)ntfs_access }, + { &vop_close_desc, (void *)ntfs_close }, + { &vop_open_desc, (void *)ntfs_open }, + { &vop_readdir_desc, (void *)ntfs_readdir }, + { &vop_fsync_desc, (void *)ntfs_fsync }, + + { &vop_bmap_desc, (void *)ntfs_bmap }, + { &vop_getpages_desc, (void *)ntfs_getpages }, + { &vop_putpages_desc, (void *)ntfs_putpages }, + { &vop_strategy_desc, (void *)ntfs_strategy }, + { &vop_bwrite_desc, (void *)vop_stdbwrite }, + { &vop_read_desc, (void *)ntfs_read }, + { &vop_write_desc, (void *)ntfs_write }, { NULL, NULL } }; static struct vnodeopv_desc ntfs_vnodeop_opv_desc = - { &ntfs_vnodeop_p, ntfs_vnodeop_entries }; + { &ntfs_vnode_vops, ntfs_vnodeop_entries }; VNODEOP_SET(ntfs_vnodeop_opv_desc); #else /* !FreeBSD */ struct vnodeopv_entry_desc ntfs_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) ntfs_bypass }, - { &vop_lookup_desc, (vop_t *) ntfs_lookup }, /* lookup */ + { &vop_default_desc, (void *) ntfs_bypass }, + { &vop_lookup_desc, (void *) ntfs_lookup }, /* lookup */ { &vop_create_desc, genfs_eopnotsupp }, /* create */ { &vop_mknod_desc, genfs_eopnotsupp }, /* mknod */ - { &vop_open_desc, (vop_t *) ntfs_open }, /* open */ - { &vop_close_desc,(vop_t *) ntfs_close }, /* close */ - { &vop_access_desc, (vop_t *) ntfs_access }, /* access */ - { &vop_getattr_desc, (vop_t *) ntfs_getattr }, /* getattr */ + { &vop_open_desc, (void *) ntfs_open }, /* open */ + { &vop_close_desc,(void *) ntfs_close }, /* close */ + { &vop_access_desc, (void *) ntfs_access }, /* access */ + { &vop_getattr_desc, (void *) ntfs_getattr }, /* getattr */ { &vop_setattr_desc, genfs_eopnotsupp }, /* setattr */ - { &vop_read_desc, (vop_t *) ntfs_read }, /* read */ - { &vop_write_desc, (vop_t *) ntfs_write }, /* write */ + { &vop_read_desc, (void *) ntfs_read }, /* read */ + { &vop_write_desc, (void *) ntfs_write }, /* write */ { &vop_lease_desc, genfs_lease_check }, /* lease */ { &vop_fcntl_desc, genfs_fcntl }, /* fcntl */ { &vop_ioctl_desc, genfs_enoioctl }, /* ioctl */ @@ -933,16 +933,16 @@ struct vnodeopv_entry_desc ntfs_vnodeop_entries[] = { { &vop_mkdir_desc, genfs_eopnotsupp }, /* mkdir */ { &vop_rmdir_desc, genfs_eopnotsupp }, /* rmdir */ { &vop_symlink_desc, genfs_eopnotsupp }, /* symlink */ - { &vop_readdir_desc, (vop_t *) ntfs_readdir }, /* readdir */ + { &vop_readdir_desc, (void *) ntfs_readdir }, /* readdir */ { &vop_readlink_desc, genfs_eopnotsupp }, /* readlink */ { &vop_abortop_desc, genfs_abortop }, /* abortop */ - { &vop_inactive_desc, (vop_t *) ntfs_inactive }, /* inactive */ - { &vop_reclaim_desc, (vop_t *) ntfs_reclaim }, /* reclaim */ + { &vop_inactive_desc, (void *) ntfs_inactive }, /* inactive */ + { &vop_reclaim_desc, (void *) ntfs_reclaim }, /* reclaim */ { &vop_lock_desc, genfs_lock }, /* lock */ { &vop_unlock_desc, genfs_unlock }, /* unlock */ - { &vop_bmap_desc, (vop_t *) ntfs_bmap }, /* bmap */ - { &vop_strategy_desc, (vop_t *) ntfs_strategy }, /* strategy */ - { &vop_print_desc, (vop_t *) ntfs_print }, /* print */ + { &vop_bmap_desc, (void *) ntfs_bmap }, /* bmap */ + { &vop_strategy_desc, (void *) ntfs_strategy }, /* strategy */ + { &vop_print_desc, (void *) ntfs_print }, /* print */ { &vop_islocked_desc, genfs_islocked }, /* islocked */ { &vop_pathconf_desc, ntfs_pathconf }, /* pathconf */ { &vop_advlock_desc, genfs_nullop }, /* advlock */ @@ -953,9 +953,9 @@ struct vnodeopv_entry_desc ntfs_vnodeop_entries[] = { { &vop_truncate_desc, genfs_eopnotsupp }, /* truncate */ { &vop_update_desc, genfs_eopnotsupp }, /* update */ { &vop_bwrite_desc, vn_bwrite }, /* bwrite */ - { (struct vnodeop_desc *)NULL, (int (*) (void *))NULL } + { NULL, NULL } }; struct vnodeopv_desc ntfs_vnodeop_opv_desc = - { &ntfs_vnodeop_p, ntfs_vnodeop_entries }; + { &ntfs_vnode_vops, ntfs_vnodeop_entries }; #endif diff --git a/sys/vfs/nullfs/Makefile b/sys/vfs/nullfs/Makefile index 87133760b4..32ad7ab0c5 100644 --- a/sys/vfs/nullfs/Makefile +++ b/sys/vfs/nullfs/Makefile @@ -1,9 +1,8 @@ # $FreeBSD: src/sys/modules/nullfs/Makefile,v 1.10 1999/12/12 16:47:29 peter Exp $ -# $DragonFly: src/sys/vfs/nullfs/Makefile,v 1.3 2003/08/15 07:26:15 dillon Exp $ +# $DragonFly: src/sys/vfs/nullfs/Makefile,v 1.4 2004/08/13 17:51:12 dillon Exp $ KMOD= null -SRCS= vnode_if.h \ - null_subr.c null_vfsops.c null_vnops.c +SRCS= null_subr.c null_vfsops.c null_vnops.c NOMAN= .include diff --git a/sys/vfs/nullfs/null.h b/sys/vfs/nullfs/null.h index 5b67cd330c..4ec8efb2d3 100644 --- a/sys/vfs/nullfs/null.h +++ b/sys/vfs/nullfs/null.h @@ -36,7 +36,7 @@ * @(#)null.h 8.3 (Berkeley) 8/20/94 * * $FreeBSD: src/sys/miscfs/nullfs/null.h,v 1.11.2.3 2001/06/26 04:20:09 bp Exp $ - * $DragonFly: src/sys/vfs/nullfs/null.h,v 1.3 2004/04/24 04:32:04 drhodus Exp $ + * $DragonFly: src/sys/vfs/nullfs/null.h,v 1.4 2004/08/13 17:51:12 dillon Exp $ */ struct null_args { @@ -76,7 +76,7 @@ struct vnode *null_checkvp(struct vnode *vp, char *fil, int lno); #define NULLVPTOLOWERVP(vp) (VTONULL(vp)->null_lowervp) #endif -extern vop_t **null_vnodeop_p; +extern struct vop_ops *null_vnode_vops; extern struct lock null_hashlock; #ifdef MALLOC_DECLARE diff --git a/sys/vfs/nullfs/null_subr.c b/sys/vfs/nullfs/null_subr.c index e47411c886..e5068a970a 100644 --- a/sys/vfs/nullfs/null_subr.c +++ b/sys/vfs/nullfs/null_subr.c @@ -36,7 +36,7 @@ * @(#)null_subr.c 8.7 (Berkeley) 5/14/95 * * $FreeBSD: src/sys/miscfs/nullfs/null_subr.c,v 1.21.2.4 2001/06/26 04:20:09 bp Exp $ - * $DragonFly: src/sys/vfs/nullfs/Attic/null_subr.c,v 1.10 2004/05/19 22:53:05 dillon Exp $ + * $DragonFly: src/sys/vfs/nullfs/Attic/null_subr.c,v 1.11 2004/08/13 17:51:12 dillon Exp $ */ #include @@ -161,7 +161,7 @@ null_node_alloc(struct mount *mp, struct vnode *lowervp, struct vnode **vpp) MALLOC(xp, struct null_node *, sizeof(struct null_node), M_NULLFSNODE, M_WAITOK); - error = getnewvnode(VT_NULL, mp, null_vnodeop_p, vpp); + error = getnewvnode(VT_NULL, mp, null_vnode_vops, vpp); if (error) { FREE(xp, M_NULLFSNODE); return (error); @@ -298,7 +298,7 @@ null_checkvp(struct vnode *vp, char *fil, int lno) * Can't do this check because vop_reclaim runs * with a funny vop vector. */ - if (vp->v_op != null_vnodeop_p) { + if (vp->v_vops != null_vnode_vops) { printf ("null_checkvp: on non-null-node\n"); while (null_checkvp_barrier) /*WAIT*/ ; panic("null_checkvp"); diff --git a/sys/vfs/nullfs/null_vfsops.c b/sys/vfs/nullfs/null_vfsops.c index 66f2de6582..f2d54c9fe7 100644 --- a/sys/vfs/nullfs/null_vfsops.c +++ b/sys/vfs/nullfs/null_vfsops.c @@ -37,7 +37,7 @@ * * @(#)lofs_vfsops.c 1.2 (Berkeley) 6/18/92 * $FreeBSD: src/sys/miscfs/nullfs/null_vfsops.c,v 1.35.2.3 2001/07/26 20:37:11 iedowse Exp $ - * $DragonFly: src/sys/vfs/nullfs/null_vfsops.c,v 1.9 2004/04/24 04:32:04 drhodus Exp $ + * $DragonFly: src/sys/vfs/nullfs/null_vfsops.c,v 1.10 2004/08/13 17:51:12 dillon Exp $ */ /* @@ -112,7 +112,7 @@ nullfs_mount(struct mount *mp, char *path, caddr_t data, struct nameidata *ndp, * Unlock lower node to avoid deadlock. * (XXX) VOP_ISLOCKED is needed? */ - if ((mp->mnt_vnodecovered->v_op == null_vnodeop_p) && + if ((mp->mnt_vnodecovered->v_vops == null_vnode_vops) && VOP_ISLOCKED(mp->mnt_vnodecovered, NULL)) { VOP_UNLOCK(mp->mnt_vnodecovered, NULL, 0, td); isvnunlocked = 1; diff --git a/sys/vfs/nullfs/null_vnops.c b/sys/vfs/nullfs/null_vnops.c index 299066d871..e32dcc476b 100644 --- a/sys/vfs/nullfs/null_vnops.c +++ b/sys/vfs/nullfs/null_vnops.c @@ -38,7 +38,7 @@ * Ancestors: * @(#)lofs_vnops.c 1.2 (Berkeley) 6/18/92 * $FreeBSD: src/sys/miscfs/nullfs/null_vnops.c,v 1.38.2.6 2002/07/31 00:32:28 semenu Exp $ - * $DragonFly: src/sys/vfs/nullfs/null_vnops.c,v 1.11 2004/04/24 04:32:04 drhodus Exp $ + * $DragonFly: src/sys/vfs/nullfs/null_vnops.c,v 1.12 2004/08/13 17:51:12 dillon Exp $ * ...and... * @(#)null_vnodeops.c 1.20 92/07/07 UCLA Ficus project * @@ -273,7 +273,7 @@ null_bypass(struct vop_generic_args *ap) * that aren't. (We must always map first vp or vclean fails.) */ if (i && (*this_vp_p == NULLVP || - (*this_vp_p)->v_op != null_vnodeop_p)) { + (*this_vp_p)->v_vops != null_vnode_vops)) { old_vps[i] = NULLVP; } else { old_vps[i] = *this_vp_p; @@ -440,7 +440,7 @@ null_setattr(struct vop_setattr_args *ap) } } - return (null_bypass((struct vop_generic_args *)ap)); + return (null_bypass(&ap->a_head)); } /* @@ -454,7 +454,7 @@ null_getattr(struct vop_getattr_args *ap) { int error; - if ((error = null_bypass((struct vop_generic_args *)ap)) != 0) + if ((error = null_bypass(&ap->a_head)) != 0) return (error); ap->a_vap->va_fsid = ap->a_vp->v_mount->mnt_stat.f_fsid.val[0]; @@ -490,7 +490,7 @@ null_access(struct vop_access_args *ap) break; } } - return (null_bypass((struct vop_generic_args *)ap)); + return (null_bypass(&ap->a_head)); } /* @@ -509,7 +509,7 @@ null_open(struct vop_open_args *ap) (lvp->v_type == VBLK || lvp->v_type == VCHR)) return ENXIO; - return (null_bypass((struct vop_generic_args *)ap)); + return (null_bypass(&ap->a_head)); } /* @@ -543,7 +543,7 @@ null_rename(struct vop_rename_args *ap) return (EXDEV); } - return (null_bypass((struct vop_generic_args *)ap)); + return (null_bypass(&ap->a_head)); } /* @@ -797,27 +797,27 @@ null_getvobject(struct vop_getvobject_args *ap) /* * Global vfs data structures */ -vop_t **null_vnodeop_p; +struct vop_ops *null_vnode_vops; static struct vnodeopv_entry_desc null_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) null_bypass }, - { &vop_access_desc, (vop_t *) null_access }, - { &vop_createvobject_desc, (vop_t *) null_createvobject }, - { &vop_destroyvobject_desc, (vop_t *) null_destroyvobject }, - { &vop_getattr_desc, (vop_t *) null_getattr }, - { &vop_getvobject_desc, (vop_t *) null_getvobject }, - { &vop_inactive_desc, (vop_t *) null_inactive }, - { &vop_islocked_desc, (vop_t *) null_islocked }, - { &vop_lock_desc, (vop_t *) null_lock }, - { &vop_lookup_desc, (vop_t *) null_lookup }, - { &vop_open_desc, (vop_t *) null_open }, - { &vop_print_desc, (vop_t *) null_print }, - { &vop_reclaim_desc, (vop_t *) null_reclaim }, - { &vop_rename_desc, (vop_t *) null_rename }, - { &vop_setattr_desc, (vop_t *) null_setattr }, - { &vop_unlock_desc, (vop_t *) null_unlock }, + { &vop_default_desc, (void *) null_bypass }, + { &vop_access_desc, (void *) null_access }, + { &vop_createvobject_desc, (void *) null_createvobject }, + { &vop_destroyvobject_desc, (void *) null_destroyvobject }, + { &vop_getattr_desc, (void *) null_getattr }, + { &vop_getvobject_desc, (void *) null_getvobject }, + { &vop_inactive_desc, (void *) null_inactive }, + { &vop_islocked_desc, (void *) null_islocked }, + { &vop_lock_desc, (void *) null_lock }, + { &vop_lookup_desc, (void *) null_lookup }, + { &vop_open_desc, (void *) null_open }, + { &vop_print_desc, (void *) null_print }, + { &vop_reclaim_desc, (void *) null_reclaim }, + { &vop_rename_desc, (void *) null_rename }, + { &vop_setattr_desc, (void *) null_setattr }, + { &vop_unlock_desc, (void *) null_unlock }, { NULL, NULL } }; static struct vnodeopv_desc null_vnodeop_opv_desc = - { &null_vnodeop_p, null_vnodeop_entries }; + { &null_vnode_vops, null_vnodeop_entries }; VNODEOP_SET(null_vnodeop_opv_desc); diff --git a/sys/vfs/nwfs/Makefile b/sys/vfs/nwfs/Makefile index cc2b59568e..a8e8fcbd77 100644 --- a/sys/vfs/nwfs/Makefile +++ b/sys/vfs/nwfs/Makefile @@ -1,11 +1,10 @@ # $FreeBSD: src/sys/modules/nwfs/Makefile,v 1.5 1999/12/12 20:34:08 peter Exp $ -# $DragonFly: src/sys/vfs/nwfs/Makefile,v 1.3 2003/08/15 07:26:15 dillon Exp $ +# $DragonFly: src/sys/vfs/nwfs/Makefile,v 1.4 2004/08/13 17:51:12 dillon Exp $ KMOD= nwfs KMODDEPS= ncp -SRCS= vnode_if.h \ - nwfs_node.c nwfs_ioctl.c nwfs_io.c nwfs_vfsops.c nwfs_vnops.c \ +SRCS= nwfs_node.c nwfs_ioctl.c nwfs_io.c nwfs_vfsops.c nwfs_vnops.c \ nwfs_subr.c opt_ncp.h opt_nwfs.h opt_vmpage.h NOMAN=true diff --git a/sys/vfs/nwfs/nwfs_node.c b/sys/vfs/nwfs/nwfs_node.c index 62ec87979c..3dc3e1bae5 100644 --- a/sys/vfs/nwfs/nwfs_node.c +++ b/sys/vfs/nwfs/nwfs_node.c @@ -30,7 +30,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/nwfs/nwfs_node.c,v 1.3.2.8 2001/12/25 01:44:45 dillon Exp $ - * $DragonFly: src/sys/vfs/nwfs/nwfs_node.c,v 1.11 2004/04/22 17:56:44 cpressey Exp $ + * $DragonFly: src/sys/vfs/nwfs/nwfs_node.c,v 1.12 2004/08/13 17:51:12 dillon Exp $ */ #include #include @@ -58,7 +58,7 @@ #define NWNOHASH(fhsum) (&nwhashtbl[(fhsum.f_id) & nwnodehash]) -extern vop_t **nwfs_vnodeop_p; +extern struct vop_ops *nwfs_vnode_vops; static LIST_HEAD(nwnode_hash_head,nwnode) *nwhashtbl; static u_long nwnodehash; @@ -166,7 +166,7 @@ rescan: * elsewhere if MALLOC should block. */ MALLOC(np, struct nwnode *, sizeof *np, M_NWNODE, M_WAITOK | M_ZERO); - error = getnewvnode(VT_NWFS, mp, nwfs_vnodeop_p, &vp); + error = getnewvnode(VT_NWFS, mp, nwfs_vnode_vops, &vp); if (error) { *vpp = NULL; FREE(np, M_NWNODE); diff --git a/sys/vfs/nwfs/nwfs_vnops.c b/sys/vfs/nwfs/nwfs_vnops.c index 23014030ee..35cff600b9 100644 --- a/sys/vfs/nwfs/nwfs_vnops.c +++ b/sys/vfs/nwfs/nwfs_vnops.c @@ -30,7 +30,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/nwfs/nwfs_vnops.c,v 1.6.2.3 2001/03/14 11:26:59 bp Exp $ - * $DragonFly: src/sys/vfs/nwfs/nwfs_vnops.c,v 1.12 2004/04/24 04:32:05 drhodus Exp $ + * $DragonFly: src/sys/vfs/nwfs/nwfs_vnops.c,v 1.13 2004/08/13 17:51:12 dillon Exp $ */ #include #include @@ -84,43 +84,43 @@ static int nwfs_print(struct vop_print_args *); static int nwfs_pathconf(struct vop_pathconf_args *ap); /* Global vfs data structures for nwfs */ -vop_t **nwfs_vnodeop_p; +struct vop_ops *nwfs_vnode_vops; static struct vnodeopv_entry_desc nwfs_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) vop_defaultop }, - { &vop_access_desc, (vop_t *) nwfs_access }, - { &vop_bmap_desc, (vop_t *) nwfs_bmap }, - { &vop_open_desc, (vop_t *) nwfs_open }, - { &vop_close_desc, (vop_t *) nwfs_close }, - { &vop_create_desc, (vop_t *) nwfs_create }, - { &vop_fsync_desc, (vop_t *) nwfs_fsync }, - { &vop_getattr_desc, (vop_t *) nwfs_getattr }, - { &vop_getpages_desc, (vop_t *) nwfs_getpages }, - { &vop_putpages_desc, (vop_t *) nwfs_putpages }, - { &vop_ioctl_desc, (vop_t *) nwfs_ioctl }, - { &vop_inactive_desc, (vop_t *) nwfs_inactive }, - { &vop_islocked_desc, (vop_t *) vop_stdislocked }, - { &vop_link_desc, (vop_t *) nwfs_link }, - { &vop_lock_desc, (vop_t *) vop_stdlock }, - { &vop_lookup_desc, (vop_t *) nwfs_lookup }, - { &vop_mkdir_desc, (vop_t *) nwfs_mkdir }, - { &vop_mknod_desc, (vop_t *) nwfs_mknod }, - { &vop_pathconf_desc, (vop_t *) nwfs_pathconf }, - { &vop_print_desc, (vop_t *) nwfs_print }, - { &vop_read_desc, (vop_t *) nwfs_read }, - { &vop_readdir_desc, (vop_t *) nwfs_readdir }, - { &vop_reclaim_desc, (vop_t *) nwfs_reclaim }, - { &vop_remove_desc, (vop_t *) nwfs_remove }, - { &vop_rename_desc, (vop_t *) nwfs_rename }, - { &vop_rmdir_desc, (vop_t *) nwfs_rmdir }, - { &vop_setattr_desc, (vop_t *) nwfs_setattr }, - { &vop_strategy_desc, (vop_t *) nwfs_strategy }, - { &vop_symlink_desc, (vop_t *) nwfs_symlink }, - { &vop_unlock_desc, (vop_t *) vop_stdunlock }, - { &vop_write_desc, (vop_t *) nwfs_write }, + { &vop_default_desc, vop_defaultop }, + { &vop_access_desc, (void *) nwfs_access }, + { &vop_bmap_desc, (void *) nwfs_bmap }, + { &vop_open_desc, (void *) nwfs_open }, + { &vop_close_desc, (void *) nwfs_close }, + { &vop_create_desc, (void *) nwfs_create }, + { &vop_fsync_desc, (void *) nwfs_fsync }, + { &vop_getattr_desc, (void *) nwfs_getattr }, + { &vop_getpages_desc, (void *) nwfs_getpages }, + { &vop_putpages_desc, (void *) nwfs_putpages }, + { &vop_ioctl_desc, (void *) nwfs_ioctl }, + { &vop_inactive_desc, (void *) nwfs_inactive }, + { &vop_islocked_desc, (void *) vop_stdislocked }, + { &vop_link_desc, (void *) nwfs_link }, + { &vop_lock_desc, (void *) vop_stdlock }, + { &vop_lookup_desc, (void *) nwfs_lookup }, + { &vop_mkdir_desc, (void *) nwfs_mkdir }, + { &vop_mknod_desc, (void *) nwfs_mknod }, + { &vop_pathconf_desc, (void *) nwfs_pathconf }, + { &vop_print_desc, (void *) nwfs_print }, + { &vop_read_desc, (void *) nwfs_read }, + { &vop_readdir_desc, (void *) nwfs_readdir }, + { &vop_reclaim_desc, (void *) nwfs_reclaim }, + { &vop_remove_desc, (void *) nwfs_remove }, + { &vop_rename_desc, (void *) nwfs_rename }, + { &vop_rmdir_desc, (void *) nwfs_rmdir }, + { &vop_setattr_desc, (void *) nwfs_setattr }, + { &vop_strategy_desc, (void *) nwfs_strategy }, + { &vop_symlink_desc, (void *) nwfs_symlink }, + { &vop_unlock_desc, (void *) vop_stdunlock }, + { &vop_write_desc, (void *) nwfs_write }, { NULL, NULL } }; static struct vnodeopv_desc nwfs_vnodeop_opv_desc = - { &nwfs_vnodeop_p, nwfs_vnodeop_entries }; + { &nwfs_vnode_vops, nwfs_vnodeop_entries }; VNODEOP_SET(nwfs_vnodeop_opv_desc); diff --git a/sys/vfs/portal/Makefile b/sys/vfs/portal/Makefile index 77d6189ab1..7b092a3c0d 100644 --- a/sys/vfs/portal/Makefile +++ b/sys/vfs/portal/Makefile @@ -1,9 +1,8 @@ # $FreeBSD: src/sys/modules/portal/Makefile,v 1.7 1999/12/12 20:34:09 peter Exp $ -# $DragonFly: src/sys/vfs/portal/Makefile,v 1.3 2003/08/15 07:26:15 dillon Exp $ +# $DragonFly: src/sys/vfs/portal/Makefile,v 1.4 2004/08/13 17:51:12 dillon Exp $ KMOD= portal -SRCS= vnode_if.h \ - portal_vfsops.c portal_vnops.c +SRCS= portal_vfsops.c portal_vnops.c NOMAN= .include diff --git a/sys/vfs/portal/portal.h b/sys/vfs/portal/portal.h index ae8717dbf8..7bf71cfcf2 100644 --- a/sys/vfs/portal/portal.h +++ b/sys/vfs/portal/portal.h @@ -36,7 +36,7 @@ * @(#)portal.h 8.4 (Berkeley) 1/21/94 * * $FreeBSD: src/sys/miscfs/portal/portal.h,v 1.7 1999/12/29 04:54:45 peter Exp $ - * $DragonFly: src/sys/vfs/portal/portal.h,v 1.2 2003/06/17 04:28:42 dillon Exp $ + * $DragonFly: src/sys/vfs/portal/portal.h,v 1.3 2004/08/13 17:51:12 dillon Exp $ */ struct portal_args { @@ -68,5 +68,5 @@ struct portalnode { #define PORTAL_ROOTFILEID 2 -extern vop_t **portal_vnodeop_p; +extern struct vop_ops *portal_vnode_vops; #endif /* _KERNEL */ diff --git a/sys/vfs/portal/portal_vfsops.c b/sys/vfs/portal/portal_vfsops.c index 49e9632825..f59069708f 100644 --- a/sys/vfs/portal/portal_vfsops.c +++ b/sys/vfs/portal/portal_vfsops.c @@ -36,7 +36,7 @@ * @(#)portal_vfsops.c 8.11 (Berkeley) 5/14/95 * * $FreeBSD: src/sys/miscfs/portal/portal_vfsops.c,v 1.26.2.2 2001/07/26 20:37:16 iedowse Exp $ - * $DragonFly: src/sys/vfs/portal/portal_vfsops.c,v 1.8 2004/04/24 04:32:05 drhodus Exp $ + * $DragonFly: src/sys/vfs/portal/portal_vfsops.c,v 1.9 2004/08/13 17:51:12 dillon Exp $ */ /* @@ -110,7 +110,7 @@ portal_mount(struct mount *mp, char *path, caddr_t data, struct nameidata *ndp, MALLOC(fmp, struct portalmount *, sizeof(struct portalmount), M_PORTALFSMNT, M_WAITOK); /* XXX */ - error = getnewvnode(VT_PORTAL, mp, portal_vnodeop_p, &rvp); /* XXX */ + error = getnewvnode(VT_PORTAL, mp, portal_vnode_vops, &rvp); /* XXX */ if (error) { FREE(fmp, M_PORTALFSMNT); FREE(pn, M_TEMP); diff --git a/sys/vfs/portal/portal_vnops.c b/sys/vfs/portal/portal_vnops.c index 62c6dee24a..376a771d33 100644 --- a/sys/vfs/portal/portal_vnops.c +++ b/sys/vfs/portal/portal_vnops.c @@ -36,7 +36,7 @@ * @(#)portal_vnops.c 8.14 (Berkeley) 5/21/95 * * $FreeBSD: src/sys/miscfs/portal/portal_vnops.c,v 1.38 1999/12/21 06:29:00 chris Exp $ - * $DragonFly: src/sys/vfs/portal/portal_vnops.c,v 1.13 2004/06/06 19:16:17 dillon Exp $ + * $DragonFly: src/sys/vfs/portal/portal_vnops.c,v 1.14 2004/08/13 17:51:12 dillon Exp $ */ /* @@ -135,7 +135,7 @@ portal_lookup(struct vop_lookup_args *ap) MALLOC(pt, struct portalnode *, sizeof(struct portalnode), M_TEMP, M_WAITOK); - error = getnewvnode(VT_PORTAL, dvp->v_mount, portal_vnodeop_p, &fvp); + error = getnewvnode(VT_PORTAL, dvp->v_mount, portal_vnode_vops, &fvp); if (error) { FREE(pt, M_TEMP); goto bad; @@ -566,23 +566,23 @@ portal_badop(void) /* NOTREACHED */ } -vop_t **portal_vnodeop_p; +struct vop_ops *portal_vnode_vops; static struct vnodeopv_entry_desc portal_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) vop_defaultop }, - { &vop_access_desc, (vop_t *) vop_null }, - { &vop_bmap_desc, (vop_t *) portal_badop }, - { &vop_getattr_desc, (vop_t *) portal_getattr }, - { &vop_inactive_desc, (vop_t *) portal_inactive }, - { &vop_lookup_desc, (vop_t *) portal_lookup }, - { &vop_open_desc, (vop_t *) portal_open }, - { &vop_pathconf_desc, (vop_t *) vop_stdpathconf }, - { &vop_print_desc, (vop_t *) portal_print }, - { &vop_readdir_desc, (vop_t *) portal_readdir }, - { &vop_reclaim_desc, (vop_t *) portal_reclaim }, - { &vop_setattr_desc, (vop_t *) portal_setattr }, + { &vop_default_desc, vop_defaultop }, + { &vop_access_desc, vop_null }, + { &vop_bmap_desc, (void *) portal_badop }, + { &vop_getattr_desc, (void *) portal_getattr }, + { &vop_inactive_desc, (void *) portal_inactive }, + { &vop_lookup_desc, (void *) portal_lookup }, + { &vop_open_desc, (void *) portal_open }, + { &vop_pathconf_desc, (void *) vop_stdpathconf }, + { &vop_print_desc, (void *) portal_print }, + { &vop_readdir_desc, (void *) portal_readdir }, + { &vop_reclaim_desc, (void *) portal_reclaim }, + { &vop_setattr_desc, (void *) portal_setattr }, { NULL, NULL } }; static struct vnodeopv_desc portal_vnodeop_opv_desc = - { &portal_vnodeop_p, portal_vnodeop_entries }; + { &portal_vnode_vops, portal_vnodeop_entries }; VNODEOP_SET(portal_vnodeop_opv_desc); diff --git a/sys/vfs/procfs/Makefile b/sys/vfs/procfs/Makefile index a66f9ceb9f..f3a5e8268d 100644 --- a/sys/vfs/procfs/Makefile +++ b/sys/vfs/procfs/Makefile @@ -1,9 +1,8 @@ # $FreeBSD: src/sys/modules/procfs/Makefile,v 1.18 1999/12/12 20:34:10 peter Exp $ -# $DragonFly: src/sys/vfs/procfs/Makefile,v 1.3 2003/08/15 07:26:15 dillon Exp $ +# $DragonFly: src/sys/vfs/procfs/Makefile,v 1.4 2004/08/13 17:51:13 dillon Exp $ KMOD= procfs -SRCS= vnode_if.h \ - procfs_ctl.c procfs_map.c procfs_note.c procfs_rlimit.c \ +SRCS= procfs_ctl.c procfs_map.c procfs_note.c procfs_rlimit.c \ procfs_status.c procfs_subr.c procfs_type.c procfs_vfsops.c \ procfs_vnops.c NOMAN= diff --git a/sys/vfs/procfs/procfs.h b/sys/vfs/procfs/procfs.h index 3e8afcb47c..978671e534 100644 --- a/sys/vfs/procfs/procfs.h +++ b/sys/vfs/procfs/procfs.h @@ -38,7 +38,7 @@ * * From: * $FreeBSD: src/sys/miscfs/procfs/procfs.h,v 1.32.2.3 2002/01/22 17:22:59 nectar Exp $ - * $DragonFly: src/sys/vfs/procfs/procfs.h,v 1.5 2003/08/20 09:56:33 rob Exp $ + * $DragonFly: src/sys/vfs/procfs/procfs.h,v 1.6 2004/08/13 17:51:13 dillon Exp $ */ /* @@ -158,7 +158,7 @@ int procfs_validtype (struct proc *); #define PROCFS_LOCKED 0x01 #define PROCFS_WANT 0x02 -extern vop_t **procfs_vnodeop_p; +extern struct vop_ops *procfs_vnode_vops; int procfs_root (struct mount *, struct vnode **); int procfs_rw (struct vop_read_args *); diff --git a/sys/vfs/procfs/procfs_subr.c b/sys/vfs/procfs/procfs_subr.c index 9c4bcf7f96..cfe2441266 100644 --- a/sys/vfs/procfs/procfs_subr.c +++ b/sys/vfs/procfs/procfs_subr.c @@ -37,7 +37,7 @@ * @(#)procfs_subr.c 8.6 (Berkeley) 5/14/95 * * $FreeBSD: src/sys/miscfs/procfs/procfs_subr.c,v 1.26.2.3 2002/02/18 21:28:04 des Exp $ - * $DragonFly: src/sys/vfs/procfs/procfs_subr.c,v 1.7 2004/05/02 03:05:11 cpressey Exp $ + * $DragonFly: src/sys/vfs/procfs/procfs_subr.c,v 1.8 2004/08/13 17:51:13 dillon Exp $ */ #include @@ -119,7 +119,7 @@ loop: */ MALLOC(pfs, struct pfsnode *, sizeof(struct pfsnode), M_TEMP, M_WAITOK); - if ((error = getnewvnode(VT_PROCFS, mp, procfs_vnodeop_p, vpp)) != 0) { + if ((error = getnewvnode(VT_PROCFS, mp, procfs_vnode_vops, vpp)) != 0) { FREE(pfs, M_TEMP); goto out; } diff --git a/sys/vfs/procfs/procfs_vnops.c b/sys/vfs/procfs/procfs_vnops.c index b6a9e6e2e6..4e3bc5f99a 100644 --- a/sys/vfs/procfs/procfs_vnops.c +++ b/sys/vfs/procfs/procfs_vnops.c @@ -37,7 +37,7 @@ * @(#)procfs_vnops.c 8.18 (Berkeley) 5/21/95 * * $FreeBSD: src/sys/miscfs/procfs/procfs_vnops.c,v 1.76.2.7 2002/01/22 17:22:59 nectar Exp $ - * $DragonFly: src/sys/vfs/procfs/procfs_vnops.c,v 1.16 2004/07/02 15:23:21 joerg Exp $ + * $DragonFly: src/sys/vfs/procfs/procfs_vnops.c,v 1.17 2004/08/13 17:51:13 dillon Exp $ */ /* @@ -988,37 +988,37 @@ atopid(const char *b, u_int len) /* * procfs vnode operations. */ -vop_t **procfs_vnodeop_p; +struct vop_ops *procfs_vnode_vops; static struct vnodeopv_entry_desc procfs_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) vop_defaultop }, - { &vop_access_desc, (vop_t *) procfs_access }, - { &vop_advlock_desc, (vop_t *) procfs_badop }, - { &vop_bmap_desc, (vop_t *) procfs_bmap }, - { &vop_close_desc, (vop_t *) procfs_close }, - { &vop_create_desc, (vop_t *) procfs_badop }, - { &vop_getattr_desc, (vop_t *) procfs_getattr }, - { &vop_inactive_desc, (vop_t *) procfs_inactive }, - { &vop_link_desc, (vop_t *) procfs_badop }, - { &vop_lookup_desc, (vop_t *) procfs_lookup }, - { &vop_mkdir_desc, (vop_t *) procfs_badop }, - { &vop_mknod_desc, (vop_t *) procfs_badop }, - { &vop_open_desc, (vop_t *) procfs_open }, - { &vop_pathconf_desc, (vop_t *) vop_stdpathconf }, - { &vop_print_desc, (vop_t *) procfs_print }, - { &vop_read_desc, (vop_t *) procfs_rw }, - { &vop_readdir_desc, (vop_t *) procfs_readdir }, - { &vop_readlink_desc, (vop_t *) procfs_readlink }, - { &vop_reclaim_desc, (vop_t *) procfs_reclaim }, - { &vop_remove_desc, (vop_t *) procfs_badop }, - { &vop_rename_desc, (vop_t *) procfs_badop }, - { &vop_rmdir_desc, (vop_t *) procfs_badop }, - { &vop_setattr_desc, (vop_t *) procfs_setattr }, - { &vop_symlink_desc, (vop_t *) procfs_badop }, - { &vop_write_desc, (vop_t *) procfs_rw }, - { &vop_ioctl_desc, (vop_t *) procfs_ioctl }, + { &vop_default_desc, vop_defaultop }, + { &vop_access_desc, (void *) procfs_access }, + { &vop_advlock_desc, (void *) procfs_badop }, + { &vop_bmap_desc, (void *) procfs_bmap }, + { &vop_close_desc, (void *) procfs_close }, + { &vop_create_desc, (void *) procfs_badop }, + { &vop_getattr_desc, (void *) procfs_getattr }, + { &vop_inactive_desc, (void *) procfs_inactive }, + { &vop_link_desc, (void *) procfs_badop }, + { &vop_lookup_desc, (void *) procfs_lookup }, + { &vop_mkdir_desc, (void *) procfs_badop }, + { &vop_mknod_desc, (void *) procfs_badop }, + { &vop_open_desc, (void *) procfs_open }, + { &vop_pathconf_desc, (void *) vop_stdpathconf }, + { &vop_print_desc, (void *) procfs_print }, + { &vop_read_desc, (void *) procfs_rw }, + { &vop_readdir_desc, (void *) procfs_readdir }, + { &vop_readlink_desc, (void *) procfs_readlink }, + { &vop_reclaim_desc, (void *) procfs_reclaim }, + { &vop_remove_desc, (void *) procfs_badop }, + { &vop_rename_desc, (void *) procfs_badop }, + { &vop_rmdir_desc, (void *) procfs_badop }, + { &vop_setattr_desc, (void *) procfs_setattr }, + { &vop_symlink_desc, (void *) procfs_badop }, + { &vop_write_desc, (void *) procfs_rw }, + { &vop_ioctl_desc, (void *) procfs_ioctl }, { NULL, NULL } }; static struct vnodeopv_desc procfs_vnodeop_opv_desc = - { &procfs_vnodeop_p, procfs_vnodeop_entries }; + { &procfs_vnode_vops, procfs_vnodeop_entries }; VNODEOP_SET(procfs_vnodeop_opv_desc); diff --git a/sys/vfs/smbfs/Makefile b/sys/vfs/smbfs/Makefile index 8007963479..a93eb3fb9e 100644 --- a/sys/vfs/smbfs/Makefile +++ b/sys/vfs/smbfs/Makefile @@ -1,5 +1,5 @@ # $FreeBSD: src/sys/modules/smbfs/Makefile,v 1.1.2.4 2002/03/26 10:12:29 ume Exp $ -# $DragonFly: src/sys/vfs/smbfs/Makefile,v 1.4 2004/03/16 07:45:59 hmp Exp $ +# $DragonFly: src/sys/vfs/smbfs/Makefile,v 1.5 2004/08/13 17:51:13 dillon Exp $ .PATH: ${.CURDIR}/../../crypto/des \ ${.CURDIR}/../../crypto/des/arch/${MACHINE_ARCH} \ @@ -10,8 +10,7 @@ KMOD= smbfs -SRCS= vnode_if.h \ - opt_inet.h opt_ipx.h \ +SRCS= opt_inet.h opt_ipx.h \ opt_netsmb.h opt_smbfs.h opt_vmpage.h \ iconv_converter_if.h \ md4c.c \ diff --git a/sys/vfs/smbfs/smbfs_node.c b/sys/vfs/smbfs/smbfs_node.c index 24640cbe4c..c80f36c47e 100644 --- a/sys/vfs/smbfs/smbfs_node.c +++ b/sys/vfs/smbfs/smbfs_node.c @@ -30,7 +30,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/fs/smbfs/smbfs_node.c,v 1.2.2.3 2003/01/17 08:20:26 tjr Exp $ - * $DragonFly: src/sys/vfs/smbfs/smbfs_node.c,v 1.10 2004/05/03 05:19:50 cpressey Exp $ + * $DragonFly: src/sys/vfs/smbfs/smbfs_node.c,v 1.11 2004/08/13 17:51:13 dillon Exp $ */ #include #include @@ -60,7 +60,7 @@ #define smbfs_hash_unlock(smp, td) lockmgr(&smp->sm_hashlock, LK_RELEASE, NULL, td) -extern vop_t **smbfs_vnodeop_p; +extern struct vop_ops *smbfs_vnode_vops; MALLOC_DEFINE(M_SMBNODE, "SMBFS node", "SMBFS vnode private part"); static MALLOC_DEFINE(M_SMBNODENAME, "SMBFS nname", "SMBFS node name"); @@ -221,7 +221,7 @@ loop: return ENOENT; MALLOC(np, struct smbnode *, sizeof *np, M_SMBNODE, M_WAITOK); - error = getnewvnode(VT_SMBFS, mp, smbfs_vnodeop_p, &vp); + error = getnewvnode(VT_SMBFS, mp, smbfs_vnode_vops, &vp); if (error) { FREE(np, M_SMBNODE); return error; diff --git a/sys/vfs/smbfs/smbfs_vnops.c b/sys/vfs/smbfs/smbfs_vnops.c index 3c0fb61cb1..02e4a081e7 100644 --- a/sys/vfs/smbfs/smbfs_vnops.c +++ b/sys/vfs/smbfs/smbfs_vnops.c @@ -30,7 +30,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/fs/smbfs/smbfs_vnops.c,v 1.2.2.8 2003/04/04 08:57:23 tjr Exp $ - * $DragonFly: src/sys/vfs/smbfs/smbfs_vnops.c,v 1.13 2004/05/03 05:19:50 cpressey Exp $ + * $DragonFly: src/sys/vfs/smbfs/smbfs_vnops.c,v 1.14 2004/08/13 17:51:13 dillon Exp $ */ #include #include @@ -86,47 +86,47 @@ static int smbfs_pathconf(struct vop_pathconf_args *ap); static int smbfs_advlock(struct vop_advlock_args *); static int smbfs_getextattr(struct vop_getextattr_args *ap); -vop_t **smbfs_vnodeop_p; +struct vop_ops *smbfs_vnode_vops; static struct vnodeopv_entry_desc smbfs_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) vop_defaultop }, - { &vop_access_desc, (vop_t *) smbfs_access }, - { &vop_advlock_desc, (vop_t *) smbfs_advlock }, - { &vop_bmap_desc, (vop_t *) smbfs_bmap }, - { &vop_close_desc, (vop_t *) smbfs_close }, - { &vop_create_desc, (vop_t *) smbfs_create }, - { &vop_fsync_desc, (vop_t *) smbfs_fsync }, - { &vop_getattr_desc, (vop_t *) smbfs_getattr }, - { &vop_getpages_desc, (vop_t *) smbfs_getpages }, - { &vop_inactive_desc, (vop_t *) smbfs_inactive }, - { &vop_ioctl_desc, (vop_t *) smbfs_ioctl }, - { &vop_islocked_desc, (vop_t *) vop_stdislocked }, - { &vop_link_desc, (vop_t *) smbfs_link }, - { &vop_lock_desc, (vop_t *) vop_stdlock }, - { &vop_lookup_desc, (vop_t *) smbfs_lookup }, - { &vop_mkdir_desc, (vop_t *) smbfs_mkdir }, - { &vop_mknod_desc, (vop_t *) smbfs_mknod }, - { &vop_open_desc, (vop_t *) smbfs_open }, - { &vop_pathconf_desc, (vop_t *) smbfs_pathconf }, - { &vop_print_desc, (vop_t *) smbfs_print }, - { &vop_putpages_desc, (vop_t *) smbfs_putpages }, - { &vop_read_desc, (vop_t *) smbfs_read }, - { &vop_readdir_desc, (vop_t *) smbfs_readdir }, - { &vop_reclaim_desc, (vop_t *) smbfs_reclaim }, - { &vop_remove_desc, (vop_t *) smbfs_remove }, - { &vop_rename_desc, (vop_t *) smbfs_rename }, - { &vop_rmdir_desc, (vop_t *) smbfs_rmdir }, - { &vop_setattr_desc, (vop_t *) smbfs_setattr }, - { &vop_strategy_desc, (vop_t *) smbfs_strategy }, - { &vop_symlink_desc, (vop_t *) smbfs_symlink }, - { &vop_unlock_desc, (vop_t *) vop_stdunlock }, - { &vop_write_desc, (vop_t *) smbfs_write }, - { &vop_getextattr_desc, (vop_t *) smbfs_getextattr }, -/* { &vop_setextattr_desc, (vop_t *) smbfs_setextattr },*/ + { &vop_default_desc, vop_defaultop }, + { &vop_access_desc, (void *) smbfs_access }, + { &vop_advlock_desc, (void *) smbfs_advlock }, + { &vop_bmap_desc, (void *) smbfs_bmap }, + { &vop_close_desc, (void *) smbfs_close }, + { &vop_create_desc, (void *) smbfs_create }, + { &vop_fsync_desc, (void *) smbfs_fsync }, + { &vop_getattr_desc, (void *) smbfs_getattr }, + { &vop_getpages_desc, (void *) smbfs_getpages }, + { &vop_inactive_desc, (void *) smbfs_inactive }, + { &vop_ioctl_desc, (void *) smbfs_ioctl }, + { &vop_islocked_desc, (void *) vop_stdislocked }, + { &vop_link_desc, (void *) smbfs_link }, + { &vop_lock_desc, (void *) vop_stdlock }, + { &vop_lookup_desc, (void *) smbfs_lookup }, + { &vop_mkdir_desc, (void *) smbfs_mkdir }, + { &vop_mknod_desc, (void *) smbfs_mknod }, + { &vop_open_desc, (void *) smbfs_open }, + { &vop_pathconf_desc, (void *) smbfs_pathconf }, + { &vop_print_desc, (void *) smbfs_print }, + { &vop_putpages_desc, (void *) smbfs_putpages }, + { &vop_read_desc, (void *) smbfs_read }, + { &vop_readdir_desc, (void *) smbfs_readdir }, + { &vop_reclaim_desc, (void *) smbfs_reclaim }, + { &vop_remove_desc, (void *) smbfs_remove }, + { &vop_rename_desc, (void *) smbfs_rename }, + { &vop_rmdir_desc, (void *) smbfs_rmdir }, + { &vop_setattr_desc, (void *) smbfs_setattr }, + { &vop_strategy_desc, (void *) smbfs_strategy }, + { &vop_symlink_desc, (void *) smbfs_symlink }, + { &vop_unlock_desc, (void *) vop_stdunlock }, + { &vop_write_desc, (void *) smbfs_write }, + { &vop_getextattr_desc, (void *) smbfs_getextattr }, +/* { &vop_setextattr_desc, (void *) smbfs_setextattr },*/ { NULL, NULL } }; static struct vnodeopv_desc smbfs_vnodeop_opv_desc = - { &smbfs_vnodeop_p, smbfs_vnodeop_entries }; + { &smbfs_vnode_vops, smbfs_vnodeop_entries }; VNODEOP_SET(smbfs_vnodeop_opv_desc); diff --git a/sys/vfs/specfs/spec_vnops.c b/sys/vfs/specfs/spec_vnops.c index c8267fcf98..b9021da4ca 100644 --- a/sys/vfs/specfs/spec_vnops.c +++ b/sys/vfs/specfs/spec_vnops.c @@ -32,7 +32,7 @@ * * @(#)spec_vnops.c 8.14 (Berkeley) 5/21/95 * $FreeBSD: src/sys/miscfs/specfs/spec_vnops.c,v 1.131.2.4 2001/02/26 04:23:20 jlemon Exp $ - * $DragonFly: src/sys/vfs/specfs/spec_vnops.c,v 1.18 2004/06/15 00:30:55 dillon Exp $ + * $DragonFly: src/sys/vfs/specfs/spec_vnops.c,v 1.19 2004/08/13 17:51:13 dillon Exp $ */ #include @@ -72,44 +72,44 @@ static int spec_read (struct vop_read_args *); static int spec_strategy (struct vop_strategy_args *); static int spec_write (struct vop_write_args *); -vop_t **spec_vnodeop_p; +struct vop_ops *spec_vnode_vops; static struct vnodeopv_entry_desc spec_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) vop_defaultop }, - { &vop_access_desc, (vop_t *) vop_ebadf }, - { &vop_advlock_desc, (vop_t *) spec_advlock }, - { &vop_bmap_desc, (vop_t *) spec_bmap }, - { &vop_close_desc, (vop_t *) spec_close }, - { &vop_create_desc, (vop_t *) vop_panic }, - { &vop_freeblks_desc, (vop_t *) spec_freeblks }, - { &vop_fsync_desc, (vop_t *) spec_fsync }, - { &vop_getpages_desc, (vop_t *) spec_getpages }, - { &vop_inactive_desc, (vop_t *) spec_inactive }, - { &vop_ioctl_desc, (vop_t *) spec_ioctl }, - { &vop_lease_desc, (vop_t *) vop_null }, - { &vop_link_desc, (vop_t *) vop_panic }, - { &vop_mkdir_desc, (vop_t *) vop_panic }, - { &vop_mknod_desc, (vop_t *) vop_panic }, - { &vop_open_desc, (vop_t *) spec_open }, - { &vop_pathconf_desc, (vop_t *) vop_stdpathconf }, - { &vop_poll_desc, (vop_t *) spec_poll }, - { &vop_kqfilter_desc, (vop_t *) spec_kqfilter }, - { &vop_print_desc, (vop_t *) spec_print }, - { &vop_read_desc, (vop_t *) spec_read }, - { &vop_readdir_desc, (vop_t *) vop_panic }, - { &vop_readlink_desc, (vop_t *) vop_panic }, - { &vop_reallocblks_desc, (vop_t *) vop_panic }, - { &vop_reclaim_desc, (vop_t *) vop_null }, - { &vop_remove_desc, (vop_t *) vop_panic }, - { &vop_rename_desc, (vop_t *) vop_panic }, - { &vop_rmdir_desc, (vop_t *) vop_panic }, - { &vop_setattr_desc, (vop_t *) vop_ebadf }, - { &vop_strategy_desc, (vop_t *) spec_strategy }, - { &vop_symlink_desc, (vop_t *) vop_panic }, - { &vop_write_desc, (vop_t *) spec_write }, + { &vop_default_desc, vop_defaultop }, + { &vop_access_desc, vop_ebadf }, + { &vop_advlock_desc, (void *) spec_advlock }, + { &vop_bmap_desc, (void *) spec_bmap }, + { &vop_close_desc, (void *) spec_close }, + { &vop_create_desc, vop_panic }, + { &vop_freeblks_desc, (void *) spec_freeblks }, + { &vop_fsync_desc, (void *) spec_fsync }, + { &vop_getpages_desc, (void *) spec_getpages }, + { &vop_inactive_desc, (void *) spec_inactive }, + { &vop_ioctl_desc, (void *) spec_ioctl }, + { &vop_lease_desc, vop_null }, + { &vop_link_desc, vop_panic }, + { &vop_mkdir_desc, vop_panic }, + { &vop_mknod_desc, vop_panic }, + { &vop_open_desc, (void *) spec_open }, + { &vop_pathconf_desc, (void *) vop_stdpathconf }, + { &vop_poll_desc, (void *) spec_poll }, + { &vop_kqfilter_desc, (void *) spec_kqfilter }, + { &vop_print_desc, (void *) spec_print }, + { &vop_read_desc, (void *) spec_read }, + { &vop_readdir_desc, vop_panic }, + { &vop_readlink_desc, vop_panic }, + { &vop_reallocblks_desc, vop_panic }, + { &vop_reclaim_desc, vop_null }, + { &vop_remove_desc, vop_panic }, + { &vop_rename_desc, vop_panic }, + { &vop_rmdir_desc, vop_panic }, + { &vop_setattr_desc, vop_ebadf }, + { &vop_strategy_desc, (void *) spec_strategy }, + { &vop_symlink_desc, vop_panic }, + { &vop_write_desc, (void *) spec_write }, { NULL, NULL } }; static struct vnodeopv_desc spec_vnodeop_opv_desc = - { &spec_vnodeop_p, spec_vnodeop_entries }; + { &spec_vnode_vops, spec_vnodeop_entries }; VNODEOP_SET(spec_vnodeop_opv_desc); @@ -121,7 +121,7 @@ extern int dev_ref_debug; int spec_vnoperate(struct vop_generic_args *ap) { - return (VOCALL(spec_vnodeop_p, ap->a_desc->vdesc_offset, ap)); + return (VOCALL(spec_vnode_vops, ap->a_desc->vdesc_offset, ap)); } static void spec_getpages_iodone (struct buf *bp); diff --git a/sys/vfs/udf/Makefile b/sys/vfs/udf/Makefile index ea835bbfbc..f1d7efd394 100644 --- a/sys/vfs/udf/Makefile +++ b/sys/vfs/udf/Makefile @@ -1,7 +1,6 @@ -# $DragonFly: src/sys/vfs/udf/Makefile,v 1.1 2004/03/12 22:38:15 joerg Exp $ +# $DragonFly: src/sys/vfs/udf/Makefile,v 1.2 2004/08/13 17:51:13 dillon Exp $ KMOD= udf -SRCS= vnode_if.h \ - osta.c udf_vfsops.c udf_vnops.c +SRCS= osta.c udf_vfsops.c udf_vnops.c .include diff --git a/sys/vfs/udf/udf_vnops.c b/sys/vfs/udf/udf_vnops.c index 235af57e4e..b040fce312 100644 --- a/sys/vfs/udf/udf_vnops.c +++ b/sys/vfs/udf/udf_vnops.c @@ -24,7 +24,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/fs/udf/udf_vnops.c,v 1.33 2003/12/07 05:04:49 scottl Exp $ - * $DragonFly: src/sys/vfs/udf/udf_vnops.c,v 1.4 2004/04/02 05:46:03 hmp Exp $ + * $DragonFly: src/sys/vfs/udf/udf_vnops.c,v 1.5 2004/08/13 17:51:13 dillon Exp $ */ /* udf_vnops.c */ @@ -64,25 +64,25 @@ static int udf_reclaim(struct vop_reclaim_args *); static int udf_readatoffset(struct udf_node *, int *, int, struct buf **, uint8_t **); static int udf_bmap_internal(struct udf_node *, uint32_t, daddr_t *, uint32_t *); -vop_t **udf_vnodeop_p; +struct vop_ops *udf_vnode_vops; static struct vnodeopv_entry_desc udf_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) vop_defaultop }, - { &vop_access_desc, (vop_t *) udf_access }, - { &vop_bmap_desc, (vop_t *) udf_bmap }, - { &vop_cachedlookup_desc, (vop_t *) udf_lookup }, - { &vop_getattr_desc, (vop_t *) udf_getattr }, - { &vop_ioctl_desc, (vop_t *) udf_ioctl }, - { &vop_lookup_desc, (vop_t *) vfs_cache_lookup }, - { &vop_pathconf_desc, (vop_t *) udf_pathconf }, - { &vop_read_desc, (vop_t *) udf_read }, - { &vop_readdir_desc, (vop_t *) udf_readdir }, - { &vop_readlink_desc, (vop_t *) udf_readlink }, - { &vop_reclaim_desc, (vop_t *) udf_reclaim }, - { &vop_strategy_desc, (vop_t *) udf_strategy }, + { &vop_default_desc, vop_defaultop }, + { &vop_access_desc, (void *) udf_access }, + { &vop_bmap_desc, (void *) udf_bmap }, + { &vop_cachedlookup_desc, (void *) udf_lookup }, + { &vop_getattr_desc, (void *) udf_getattr }, + { &vop_ioctl_desc, (void *) udf_ioctl }, + { &vop_lookup_desc, (void *) vfs_cache_lookup }, + { &vop_pathconf_desc, (void *) udf_pathconf }, + { &vop_read_desc, (void *) udf_read }, + { &vop_readdir_desc, (void *) udf_readdir }, + { &vop_readlink_desc, (void *) udf_readlink }, + { &vop_reclaim_desc, (void *) udf_reclaim }, + { &vop_strategy_desc, (void *) udf_strategy }, { NULL, NULL } }; static struct vnodeopv_desc udf_vnodeop_opv_desc = - { &udf_vnodeop_p, udf_vnodeop_entries }; + { &udf_vnode_vops, udf_vnodeop_entries }; VNODEOP_SET(udf_vnodeop_opv_desc); MALLOC_DEFINE(M_UDFFID, "UDF FID", "UDF FileId structure"); @@ -182,7 +182,7 @@ udf_allocv(struct mount *mp, struct vnode **vpp) int error; struct vnode *vp; - error = getnewvnode(VT_UDF, mp, udf_vnodeop_p, &vp); + error = getnewvnode(VT_UDF, mp, udf_vnode_vops, &vp); if (error) { printf("udf_allocv: failed to allocate new vnode\n"); return(error); diff --git a/sys/vfs/ufs/ffs_extern.h b/sys/vfs/ufs/ffs_extern.h index cea8ce6ce1..316639ba4d 100644 --- a/sys/vfs/ufs/ffs_extern.h +++ b/sys/vfs/ufs/ffs_extern.h @@ -32,7 +32,7 @@ * * @(#)ffs_extern.h 8.6 (Berkeley) 3/30/95 * $FreeBSD: src/sys/ufs/ffs/ffs_extern.h,v 1.30 2000/01/09 22:40:02 mckusick Exp $ - * $DragonFly: src/sys/vfs/ufs/ffs_extern.h,v 1.6 2004/07/18 19:43:48 drhodus Exp $ + * $DragonFly: src/sys/vfs/ufs/ffs_extern.h,v 1.7 2004/08/13 17:51:13 dillon Exp $ */ #ifndef _UFS_FFS_EXTERN_H @@ -102,9 +102,9 @@ int ffs_vfree(struct vnode *, ino_t, int); int ffs_vget(struct mount *, ino_t, struct vnode **); int ffs_vptofh(struct vnode *, struct fid *); -extern vop_t **ffs_vnodeop_p; -extern vop_t **ffs_specop_p; -extern vop_t **ffs_fifoop_p; +extern struct vop_ops *ffs_vnode_vops; +extern struct vop_ops *ffs_spec_vops; +extern struct vop_ops *ffs_fifo_vops; /* * Soft update function prototypes. diff --git a/sys/vfs/ufs/ffs_vfsops.c b/sys/vfs/ufs/ffs_vfsops.c index c26361b493..c63da65104 100644 --- a/sys/vfs/ufs/ffs_vfsops.c +++ b/sys/vfs/ufs/ffs_vfsops.c @@ -32,7 +32,7 @@ * * @(#)ffs_vfsops.c 8.31 (Berkeley) 5/20/95 * $FreeBSD: src/sys/ufs/ffs/ffs_vfsops.c,v 1.117.2.10 2002/06/23 22:34:52 iedowse Exp $ - * $DragonFly: src/sys/vfs/ufs/ffs_vfsops.c,v 1.19 2004/07/18 19:43:48 drhodus Exp $ + * $DragonFly: src/sys/vfs/ufs/ffs_vfsops.c,v 1.20 2004/08/13 17:51:13 dillon Exp $ */ #include "opt_quota.h" @@ -1142,7 +1142,7 @@ restart: ump->um_malloctype, M_WAITOK); /* Allocate a new vnode/inode. */ - error = getnewvnode(VT_UFS, mp, ffs_vnodeop_p, &vp); + error = getnewvnode(VT_UFS, mp, ffs_vnode_vops, &vp); if (error) { if (ffs_inode_hash_lock < 0) wakeup(&ffs_inode_hash_lock); @@ -1207,7 +1207,7 @@ restart: * Initialize the vnode from the inode, check for aliases. * Note that the underlying vnode may have changed. */ - error = ufs_vinit(mp, ffs_specop_p, ffs_fifoop_p, &vp); + error = ufs_vinit(mp, ffs_spec_vops, ffs_fifo_vops, &vp); if (error) { vput(vp); *vpp = NULL; diff --git a/sys/vfs/ufs/ffs_vnops.c b/sys/vfs/ufs/ffs_vnops.c index 3be188aff5..88c48fa4ae 100644 --- a/sys/vfs/ufs/ffs_vnops.c +++ b/sys/vfs/ufs/ffs_vnops.c @@ -32,7 +32,7 @@ * * @(#)ffs_vnops.c 8.15 (Berkeley) 5/14/95 * $FreeBSD: src/sys/ufs/ffs/ffs_vnops.c,v 1.64 2000/01/10 12:04:25 phk Exp $ - * $DragonFly: src/sys/vfs/ufs/ffs_vnops.c,v 1.8 2004/05/19 22:53:06 dillon Exp $ + * $DragonFly: src/sys/vfs/ufs/ffs_vnops.c,v 1.9 2004/08/13 17:51:13 dillon Exp $ */ #include @@ -71,38 +71,38 @@ static int ffs_read (struct vop_read_args *); static int ffs_write (struct vop_write_args *); /* Global vfs data structures for ufs. */ -vop_t **ffs_vnodeop_p; +struct vop_ops *ffs_vnode_vops; static struct vnodeopv_entry_desc ffs_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) ufs_vnoperate }, - { &vop_fsync_desc, (vop_t *) ffs_fsync }, - { &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 }, + { &vop_default_desc, (void *) ufs_vnoperate }, + { &vop_fsync_desc, (void *) ffs_fsync }, + { &vop_getpages_desc, (void *) ffs_getpages }, + { &vop_putpages_desc, (void *) ffs_putpages }, + { &vop_read_desc, (void *) ffs_read }, + { &vop_balloc_desc, (void *) ffs_balloc }, + { &vop_reallocblks_desc, (void *) ffs_reallocblks }, + { &vop_write_desc, (void *) ffs_write }, { NULL, NULL } }; static struct vnodeopv_desc ffs_vnodeop_opv_desc = - { &ffs_vnodeop_p, ffs_vnodeop_entries }; + { &ffs_vnode_vops, ffs_vnodeop_entries }; -vop_t **ffs_specop_p; +struct vop_ops *ffs_spec_vops; static struct vnodeopv_entry_desc ffs_specop_entries[] = { - { &vop_default_desc, (vop_t *) ufs_vnoperatespec }, - { &vop_fsync_desc, (vop_t *) ffs_fsync }, + { &vop_default_desc, (void *) ufs_vnoperatespec }, + { &vop_fsync_desc, (void *) ffs_fsync }, { NULL, NULL } }; static struct vnodeopv_desc ffs_specop_opv_desc = - { &ffs_specop_p, ffs_specop_entries }; + { &ffs_spec_vops, ffs_specop_entries }; -vop_t **ffs_fifoop_p; +struct vop_ops *ffs_fifo_vops; static struct vnodeopv_entry_desc ffs_fifoop_entries[] = { - { &vop_default_desc, (vop_t *) ufs_vnoperatefifo }, - { &vop_fsync_desc, (vop_t *) ffs_fsync }, + { &vop_default_desc, (void *) ufs_vnoperatefifo }, + { &vop_fsync_desc, (void *) ffs_fsync }, { NULL, NULL } }; static struct vnodeopv_desc ffs_fifoop_opv_desc = - { &ffs_fifoop_p, ffs_fifoop_entries }; + { &ffs_fifo_vops, ffs_fifoop_entries }; VNODEOP_SET(ffs_vnodeop_opv_desc); VNODEOP_SET(ffs_specop_opv_desc); diff --git a/sys/vfs/ufs/ufs_extern.h b/sys/vfs/ufs/ufs_extern.h index 64edff808a..a036d3dbf7 100644 --- a/sys/vfs/ufs/ufs_extern.h +++ b/sys/vfs/ufs/ufs_extern.h @@ -32,7 +32,7 @@ * * @(#)ufs_extern.h 8.10 (Berkeley) 5/14/95 * $FreeBSD: src/sys/ufs/ufs/ufs_extern.h,v 1.27.2.1 2000/12/28 11:01:46 ps Exp $ - * $DragonFly: src/sys/vfs/ufs/ufs_extern.h,v 1.6 2004/07/18 19:43:48 drhodus Exp $ + * $DragonFly: src/sys/vfs/ufs/ufs_extern.h,v 1.7 2004/08/13 17:51:13 dillon Exp $ */ #ifndef _UFS_UFS_EXTERN_H_ @@ -90,7 +90,8 @@ int ufs_lookup(struct vop_cachedlookup_args *); int ufs_reclaim(struct vop_reclaim_args *); int ufs_root(struct mount *, struct vnode **); int ufs_start(struct mount *, int, struct thread *); -int ufs_vinit(struct mount *, vop_t **, vop_t **, struct vnode **); +int ufs_vinit(struct mount *, struct vop_ops *, struct vop_ops *, + struct vnode **); /* * Soft update function prototypes. diff --git a/sys/vfs/ufs/ufs_vnops.c b/sys/vfs/ufs/ufs_vnops.c index 64e0431e32..0a80bd05db 100644 --- a/sys/vfs/ufs/ufs_vnops.c +++ b/sys/vfs/ufs/ufs_vnops.c @@ -37,7 +37,7 @@ * * @(#)ufs_vnops.c 8.27 (Berkeley) 5/27/95 * $FreeBSD: src/sys/ufs/ufs/ufs_vnops.c,v 1.131.2.8 2003/01/02 17:26:19 bde Exp $ - * $DragonFly: src/sys/vfs/ufs/ufs_vnops.c,v 1.15 2004/07/26 19:48:31 drhodus Exp $ + * $DragonFly: src/sys/vfs/ufs/ufs_vnops.c,v 1.16 2004/08/13 17:51:13 dillon Exp $ */ #include "opt_quota.h" @@ -1732,7 +1732,7 @@ ufsspec_read(struct vop_read_args *ap) uio = ap->a_uio; resid = uio->uio_resid; - error = VOCALL(spec_vnodeop_p, VOFFSET(vop_read), ap); + error = VOCALL(spec_vnode_vops, VOFFSET(vop_read), &ap->a_head); /* * The inode may have been revoked during the call, so it must not * be accessed blindly here or in the other wrapper functions. @@ -1758,7 +1758,7 @@ ufsspec_write(struct vop_write_args *ap) uio = ap->a_uio; resid = uio->uio_resid; - error = VOCALL(spec_vnodeop_p, VOFFSET(vop_write), ap); + error = VOCALL(spec_vnode_vops, VOFFSET(vop_write), &ap->a_head); 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; @@ -1783,7 +1783,7 @@ ufsspec_close(struct vop_close_args *ap) if (vp->v_usecount > 1) ufs_itimes(vp); lwkt_reltoken(&vlock); - return (VOCALL(spec_vnodeop_p, VOFFSET(vop_close), ap)); + return (VOCALL(spec_vnode_vops, VOFFSET(vop_close), &ap->a_head)); } /* @@ -1801,7 +1801,7 @@ ufsfifo_read(struct vop_read_args *ap) uio = ap->a_uio; resid = uio->uio_resid; - error = VOCALL(fifo_vnodeop_p, VOFFSET(vop_read), ap); + error = VOCALL(fifo_vnode_vops, VOFFSET(vop_read), &ap->a_head); 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))) @@ -1824,7 +1824,7 @@ ufsfifo_write(struct vop_write_args *ap) uio = ap->a_uio; resid = uio->uio_resid; - error = VOCALL(fifo_vnodeop_p, VOFFSET(vop_write), ap); + error = VOCALL(fifo_vnode_vops, VOFFSET(vop_write), &ap->a_head); 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; @@ -1849,7 +1849,7 @@ ufsfifo_close(struct vop_close_args *ap) if (vp->v_usecount > 1) ufs_itimes(vp); lwkt_reltoken(&vlock); - return (VOCALL(fifo_vnodeop_p, VOFFSET(vop_close), ap)); + return (VOCALL(fifo_vnode_vops, VOFFSET(vop_close), &ap->a_head)); } /* @@ -1862,7 +1862,7 @@ ufsfifo_kqfilter(struct vop_kqfilter_args *ap) { int error; - error = VOCALL(fifo_vnodeop_p, VOFFSET(vop_kqfilter), ap); + error = VOCALL(fifo_vnode_vops, VOFFSET(vop_kqfilter), &ap->a_head); if (error) error = ufs_kqfilter(ap); return (error); @@ -1920,7 +1920,7 @@ ufs_advlock(struct vop_advlock_args *ap) * vnodes. */ int -ufs_vinit(struct mount *mntp, vop_t **specops, vop_t **fifoops, +ufs_vinit(struct mount *mntp, struct vop_ops *specops, struct vop_ops *fifoops, struct vnode **vpp) { struct inode *ip; @@ -1932,11 +1932,11 @@ ufs_vinit(struct mount *mntp, vop_t **specops, vop_t **fifoops, switch(vp->v_type = IFTOVT(ip->i_mode)) { case VCHR: case VBLK: - vp->v_op = specops; + vp->v_vops = specops; addaliasu(vp, ip->i_rdev); break; case VFIFO: - vp->v_op = fifoops; + vp->v_vops = fifoops; break; default: break; @@ -2184,91 +2184,91 @@ filt_ufsvnode(struct knote *kn, long hint) } /* Global vfs data structures for ufs. */ -static vop_t **ufs_vnodeop_p; +static struct vop_ops *ufs_vnode_vops; static struct vnodeopv_entry_desc ufs_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) vop_defaultop }, - { &vop_fsync_desc, (vop_t *) ufs_missingop }, - { &vop_read_desc, (vop_t *) ufs_missingop }, - { &vop_reallocblks_desc, (vop_t *) ufs_missingop }, - { &vop_write_desc, (vop_t *) ufs_missingop }, - { &vop_access_desc, (vop_t *) ufs_access }, - { &vop_advlock_desc, (vop_t *) ufs_advlock }, - { &vop_bmap_desc, (vop_t *) ufs_bmap }, - { &vop_cachedlookup_desc, (vop_t *) ufs_lookup }, - { &vop_close_desc, (vop_t *) ufs_close }, - { &vop_create_desc, (vop_t *) ufs_create }, - { &vop_getattr_desc, (vop_t *) ufs_getattr }, - { &vop_inactive_desc, (vop_t *) ufs_inactive }, - { &vop_islocked_desc, (vop_t *) vop_stdislocked }, - { &vop_link_desc, (vop_t *) ufs_link }, - { &vop_lock_desc, (vop_t *) vop_stdlock }, - { &vop_lookup_desc, (vop_t *) vfs_cache_lookup }, - { &vop_mkdir_desc, (vop_t *) ufs_mkdir }, - { &vop_mknod_desc, (vop_t *) ufs_mknod }, - { &vop_mmap_desc, (vop_t *) ufs_mmap }, - { &vop_open_desc, (vop_t *) ufs_open }, - { &vop_pathconf_desc, (vop_t *) ufs_pathconf }, - { &vop_poll_desc, (vop_t *) vop_stdpoll }, - { &vop_kqfilter_desc, (vop_t *) ufs_kqfilter }, - { &vop_print_desc, (vop_t *) ufs_print }, - { &vop_readdir_desc, (vop_t *) ufs_readdir }, - { &vop_readlink_desc, (vop_t *) ufs_readlink }, - { &vop_reclaim_desc, (vop_t *) ufs_reclaim }, - { &vop_remove_desc, (vop_t *) ufs_remove }, - { &vop_rename_desc, (vop_t *) ufs_rename }, - { &vop_rmdir_desc, (vop_t *) ufs_rmdir }, - { &vop_setattr_desc, (vop_t *) ufs_setattr }, - { &vop_strategy_desc, (vop_t *) ufs_strategy }, - { &vop_symlink_desc, (vop_t *) ufs_symlink }, - { &vop_unlock_desc, (vop_t *) vop_stdunlock }, - { &vop_whiteout_desc, (vop_t *) ufs_whiteout }, + { &vop_default_desc, vop_defaultop }, + { &vop_fsync_desc, (void *) ufs_missingop }, + { &vop_read_desc, (void *) ufs_missingop }, + { &vop_reallocblks_desc, (void *) ufs_missingop }, + { &vop_write_desc, (void *) ufs_missingop }, + { &vop_access_desc, (void *) ufs_access }, + { &vop_advlock_desc, (void *) ufs_advlock }, + { &vop_bmap_desc, (void *) ufs_bmap }, + { &vop_cachedlookup_desc, (void *) ufs_lookup }, + { &vop_close_desc, (void *) ufs_close }, + { &vop_create_desc, (void *) ufs_create }, + { &vop_getattr_desc, (void *) ufs_getattr }, + { &vop_inactive_desc, (void *) ufs_inactive }, + { &vop_islocked_desc, (void *) vop_stdislocked }, + { &vop_link_desc, (void *) ufs_link }, + { &vop_lock_desc, (void *) vop_stdlock }, + { &vop_lookup_desc, (void *) vfs_cache_lookup }, + { &vop_mkdir_desc, (void *) ufs_mkdir }, + { &vop_mknod_desc, (void *) ufs_mknod }, + { &vop_mmap_desc, (void *) ufs_mmap }, + { &vop_open_desc, (void *) ufs_open }, + { &vop_pathconf_desc, (void *) ufs_pathconf }, + { &vop_poll_desc, (void *) vop_stdpoll }, + { &vop_kqfilter_desc, (void *) ufs_kqfilter }, + { &vop_print_desc, (void *) ufs_print }, + { &vop_readdir_desc, (void *) ufs_readdir }, + { &vop_readlink_desc, (void *) ufs_readlink }, + { &vop_reclaim_desc, (void *) ufs_reclaim }, + { &vop_remove_desc, (void *) ufs_remove }, + { &vop_rename_desc, (void *) ufs_rename }, + { &vop_rmdir_desc, (void *) ufs_rmdir }, + { &vop_setattr_desc, (void *) ufs_setattr }, + { &vop_strategy_desc, (void *) ufs_strategy }, + { &vop_symlink_desc, (void *) ufs_symlink }, + { &vop_unlock_desc, (void *) vop_stdunlock }, + { &vop_whiteout_desc, (void *) ufs_whiteout }, { NULL, NULL } }; static struct vnodeopv_desc ufs_vnodeop_opv_desc = - { &ufs_vnodeop_p, ufs_vnodeop_entries }; + { &ufs_vnode_vops, ufs_vnodeop_entries }; -static vop_t **ufs_specop_p; +static struct vop_ops *ufs_spec_vops; static struct vnodeopv_entry_desc ufs_specop_entries[] = { - { &vop_default_desc, (vop_t *) spec_vnoperate }, - { &vop_fsync_desc, (vop_t *) ufs_missingop }, - { &vop_access_desc, (vop_t *) ufs_access }, - { &vop_close_desc, (vop_t *) ufsspec_close }, - { &vop_getattr_desc, (vop_t *) ufs_getattr }, - { &vop_inactive_desc, (vop_t *) ufs_inactive }, - { &vop_islocked_desc, (vop_t *) vop_stdislocked }, - { &vop_lock_desc, (vop_t *) vop_stdlock }, - { &vop_print_desc, (vop_t *) ufs_print }, - { &vop_read_desc, (vop_t *) ufsspec_read }, - { &vop_reclaim_desc, (vop_t *) ufs_reclaim }, - { &vop_setattr_desc, (vop_t *) ufs_setattr }, - { &vop_unlock_desc, (vop_t *) vop_stdunlock }, - { &vop_write_desc, (vop_t *) ufsspec_write }, + { &vop_default_desc, (void *) spec_vnoperate }, + { &vop_fsync_desc, (void *) ufs_missingop }, + { &vop_access_desc, (void *) ufs_access }, + { &vop_close_desc, (void *) ufsspec_close }, + { &vop_getattr_desc, (void *) ufs_getattr }, + { &vop_inactive_desc, (void *) ufs_inactive }, + { &vop_islocked_desc, (void *) vop_stdislocked }, + { &vop_lock_desc, (void *) vop_stdlock }, + { &vop_print_desc, (void *) ufs_print }, + { &vop_read_desc, (void *) ufsspec_read }, + { &vop_reclaim_desc, (void *) ufs_reclaim }, + { &vop_setattr_desc, (void *) ufs_setattr }, + { &vop_unlock_desc, (void *) vop_stdunlock }, + { &vop_write_desc, (void *) ufsspec_write }, { NULL, NULL } }; static struct vnodeopv_desc ufs_specop_opv_desc = - { &ufs_specop_p, ufs_specop_entries }; + { &ufs_spec_vops, ufs_specop_entries }; -static vop_t **ufs_fifoop_p; +static struct vop_ops *ufs_fifo_vops; static struct vnodeopv_entry_desc ufs_fifoop_entries[] = { - { &vop_default_desc, (vop_t *) fifo_vnoperate }, - { &vop_fsync_desc, (vop_t *) ufs_missingop }, - { &vop_access_desc, (vop_t *) ufs_access }, - { &vop_close_desc, (vop_t *) ufsfifo_close }, - { &vop_getattr_desc, (vop_t *) ufs_getattr }, - { &vop_inactive_desc, (vop_t *) ufs_inactive }, - { &vop_islocked_desc, (vop_t *) vop_stdislocked }, - { &vop_kqfilter_desc, (vop_t *) ufsfifo_kqfilter }, - { &vop_lock_desc, (vop_t *) vop_stdlock }, - { &vop_print_desc, (vop_t *) ufs_print }, - { &vop_read_desc, (vop_t *) ufsfifo_read }, - { &vop_reclaim_desc, (vop_t *) ufs_reclaim }, - { &vop_setattr_desc, (vop_t *) ufs_setattr }, - { &vop_unlock_desc, (vop_t *) vop_stdunlock }, - { &vop_write_desc, (vop_t *) ufsfifo_write }, + { &vop_default_desc, (void *) fifo_vnoperate }, + { &vop_fsync_desc, (void *) ufs_missingop }, + { &vop_access_desc, (void *) ufs_access }, + { &vop_close_desc, (void *) ufsfifo_close }, + { &vop_getattr_desc, (void *) ufs_getattr }, + { &vop_inactive_desc, (void *) ufs_inactive }, + { &vop_islocked_desc, (void *) vop_stdislocked }, + { &vop_kqfilter_desc, (void *) ufsfifo_kqfilter }, + { &vop_lock_desc, (void *) vop_stdlock }, + { &vop_print_desc, (void *) ufs_print }, + { &vop_read_desc, (void *) ufsfifo_read }, + { &vop_reclaim_desc, (void *) ufs_reclaim }, + { &vop_setattr_desc, (void *) ufs_setattr }, + { &vop_unlock_desc, (void *) vop_stdunlock }, + { &vop_write_desc, (void *) ufsfifo_write }, { NULL, NULL } }; static struct vnodeopv_desc ufs_fifoop_opv_desc = - { &ufs_fifoop_p, ufs_fifoop_entries }; + { &ufs_fifo_vops, ufs_fifoop_entries }; VNODEOP_SET(ufs_vnodeop_opv_desc); VNODEOP_SET(ufs_specop_opv_desc); @@ -2280,7 +2280,7 @@ VNODEOP_SET(ufs_fifoop_opv_desc); int ufs_vnoperate(struct vop_generic_args *ap) { - return (VOCALL(ufs_vnodeop_p, ap->a_desc->vdesc_offset, ap)); + return (VOCALL(ufs_vnode_vops, ap->a_desc->vdesc_offset, ap)); } /* @@ -2289,7 +2289,7 @@ ufs_vnoperate(struct vop_generic_args *ap) int ufs_vnoperatefifo(struct vop_generic_args *ap) { - return (VOCALL(ufs_fifoop_p, ap->a_desc->vdesc_offset, ap)); + return (VOCALL(ufs_fifo_vops, ap->a_desc->vdesc_offset, ap)); } /* @@ -2298,5 +2298,5 @@ ufs_vnoperatefifo(struct vop_generic_args *ap) int ufs_vnoperatespec(struct vop_generic_args *ap) { - return (VOCALL(ufs_specop_p, ap->a_desc->vdesc_offset, ap)); + return (VOCALL(ufs_spec_vops, ap->a_desc->vdesc_offset, ap)); } diff --git a/sys/vfs/umapfs/Makefile b/sys/vfs/umapfs/Makefile index 1998956d01..890d933a99 100644 --- a/sys/vfs/umapfs/Makefile +++ b/sys/vfs/umapfs/Makefile @@ -1,9 +1,8 @@ # $FreeBSD: src/sys/modules/umapfs/Makefile,v 1.8 1999/12/12 16:47:33 peter Exp $ -# $DragonFly: src/sys/vfs/umapfs/Attic/Makefile,v 1.3 2003/08/15 07:26:16 dillon Exp $ +# $DragonFly: src/sys/vfs/umapfs/Attic/Makefile,v 1.4 2004/08/13 17:51:14 dillon Exp $ KMOD= umap -SRCS= vnode_if.h \ - umap_subr.c umap_vfsops.c umap_vnops.c +SRCS= umap_subr.c umap_vfsops.c umap_vnops.c NOMAN= .include diff --git a/sys/vfs/umapfs/umap.h b/sys/vfs/umapfs/umap.h index 5d37241f00..0e0ed64097 100644 --- a/sys/vfs/umapfs/umap.h +++ b/sys/vfs/umapfs/umap.h @@ -36,7 +36,7 @@ * @(#)umap.h 8.4 (Berkeley) 8/20/94 * * $FreeBSD: src/sys/miscfs/umapfs/umap.h,v 1.13 1999/12/29 04:54:47 peter Exp $ - * $DragonFly: src/sys/vfs/umapfs/Attic/umap.h,v 1.4 2004/04/24 04:32:05 drhodus Exp $ + * $DragonFly: src/sys/vfs/umapfs/Attic/umap.h,v 1.5 2004/08/13 17:51:14 dillon Exp $ */ #define MAPFILEENTRIES 64 @@ -88,5 +88,5 @@ extern struct vnode *umap_checkvp (struct vnode *vp, char *fil, int lno); #define UMAPVPTOLOWERVP(vp) (VTOUMAP(vp)->umap_lowervp) #endif -extern vop_t **umap_vnodeop_p; +extern struct vop_ops *umap_vnode_vops; #endif /* _KERNEL */ diff --git a/sys/vfs/umapfs/umap_subr.c b/sys/vfs/umapfs/umap_subr.c index ecbc66cb08..2241809d4d 100644 --- a/sys/vfs/umapfs/umap_subr.c +++ b/sys/vfs/umapfs/umap_subr.c @@ -36,7 +36,7 @@ * @(#)umap_subr.c 8.9 (Berkeley) 5/14/95 * * $FreeBSD: src/sys/miscfs/umapfs/umap_subr.c,v 1.19 1999/09/04 11:51:41 bde Exp $ - * $DragonFly: src/sys/vfs/umapfs/Attic/umap_subr.c,v 1.8 2004/05/18 16:57:01 cpressey Exp $ + * $DragonFly: src/sys/vfs/umapfs/Attic/umap_subr.c,v 1.9 2004/08/13 17:51:14 dillon Exp $ */ #include @@ -197,7 +197,7 @@ umap_node_alloc(struct mount *mp, struct vnode *lowervp, struct vnode **vpp) MALLOC(xp, struct umap_node *, sizeof(struct umap_node), M_TEMP, M_WAITOK); - error = getnewvnode(VT_UMAP, mp, umap_vnodeop_p, vpp); + error = getnewvnode(VT_UMAP, mp, umap_vnode_vops, vpp); if (error) { FREE(xp, M_TEMP); return (error); @@ -291,7 +291,7 @@ umap_checkvp(struct vnode *vp, char *fil, int lno) * Can't do this check because vop_reclaim runs * with funny vop vector. */ - if (vp->v_op != umap_vnodeop_p) { + if (vp->v_vops != umap_vnode_vops) { printf ("umap_checkvp: on non-umap-node\n"); while (umap_checkvp_barrier) /*WAIT*/ ; panic("umap_checkvp"); diff --git a/sys/vfs/umapfs/umap_vnops.c b/sys/vfs/umapfs/umap_vnops.c index e02b1db078..716db5da5b 100644 --- a/sys/vfs/umapfs/umap_vnops.c +++ b/sys/vfs/umapfs/umap_vnops.c @@ -35,7 +35,7 @@ * * @(#)umap_vnops.c 8.6 (Berkeley) 5/22/95 * $FreeBSD: src/sys/miscfs/umapfs/umap_vnops.c,v 1.30 1999/08/30 07:08:04 bde Exp $ - * $DragonFly: src/sys/vfs/umapfs/Attic/umap_vnops.c,v 1.8 2004/05/18 16:57:01 cpressey Exp $ + * $DragonFly: src/sys/vfs/umapfs/Attic/umap_vnops.c,v 1.9 2004/08/13 17:51:14 dillon Exp $ */ /* @@ -124,7 +124,7 @@ umap_bypass(struct vop_generic_args *ap) * that aren't. (Must map first vp or vclean fails.) */ - if (i && (*this_vp_p)->v_op != umap_vnodeop_p) { + if (i && (*this_vp_p)->v_vops != umap_vnode_vops) { old_vps[i] = NULL; } else { old_vps[i] = *this_vp_p; @@ -286,9 +286,9 @@ umap_getattr(struct vop_getattr_args *ap) int error, tmpid, nentries, gnentries; u_long (*mapdata)[2], (*gmapdata)[2]; struct vnode **vp1p; - struct vnodeop_desc *descp = ap->a_desc; + struct vnodeop_desc *descp = ap->a_head.a_desc; - error = umap_bypass((struct vop_generic_args *)ap); + error = umap_bypass(&ap->a_head); if (error) return (error); @@ -360,7 +360,7 @@ umap_lock(struct vop_lock_args *ap) if ((ap->a_flags & LK_TYPE_MASK) == LK_DRAIN) return (0); ap->a_flags &= ~LK_INTERLOCK; - return (null_bypass((struct vop_generic_args *)ap)); + return (null_bypass(&ap->a_head)); } /* @@ -375,7 +375,7 @@ umap_unlock(struct vop_unlock_args *ap) { vop_nounlock(ap); ap->a_flags &= ~LK_INTERLOCK; - return (null_bypass((struct vop_generic_args *)ap)); + return (null_bypass(&ap->a_head)); } /* @@ -469,7 +469,7 @@ umap_rename(struct vop_rename_args *ap) "umap_rename: rename component credit user now %lu, group %lu\n", (u_long)compcredp->cr_uid, (u_long)compcredp->cr_gid); - error = umap_bypass((struct vop_generic_args *)ap); + error = umap_bypass(&ap->a_head); /* Restore the additional mapped componentname cred structure. */ @@ -487,19 +487,19 @@ umap_rename(struct vop_rename_args *ap) * go away with a merged buffer/block cache. * */ -vop_t **umap_vnodeop_p; +struct vop_ops *umap_vnode_vops; static struct vnodeopv_entry_desc umap_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) umap_bypass }, - { &vop_getattr_desc, (vop_t *) umap_getattr }, - { &vop_inactive_desc, (vop_t *) umap_inactive }, - { &vop_lock_desc, (vop_t *) umap_lock }, - { &vop_print_desc, (vop_t *) umap_print }, - { &vop_reclaim_desc, (vop_t *) umap_reclaim }, - { &vop_rename_desc, (vop_t *) umap_rename }, - { &vop_unlock_desc, (vop_t *) umap_unlock }, + { &vop_default_desc, (void *) umap_bypass }, + { &vop_getattr_desc, (void *) umap_getattr }, + { &vop_inactive_desc, (void *) umap_inactive }, + { &vop_lock_desc, (void *) umap_lock }, + { &vop_print_desc, (void *) umap_print }, + { &vop_reclaim_desc, (void *) umap_reclaim }, + { &vop_rename_desc, (void *) umap_rename }, + { &vop_unlock_desc, (void *) umap_unlock }, { NULL, NULL } }; static struct vnodeopv_desc umap_vnodeop_opv_desc = - { &umap_vnodeop_p, umap_vnodeop_entries }; + { &umap_vnode_vops, umap_vnodeop_entries }; VNODEOP_SET(umap_vnodeop_opv_desc); diff --git a/sys/vfs/union/Makefile b/sys/vfs/union/Makefile index c27b450394..313e3418cb 100644 --- a/sys/vfs/union/Makefile +++ b/sys/vfs/union/Makefile @@ -1,9 +1,8 @@ # $FreeBSD: src/sys/modules/union/Makefile,v 1.7 1999/12/12 20:34:11 peter Exp $ -# $DragonFly: src/sys/vfs/union/Makefile,v 1.3 2003/08/15 07:26:16 dillon Exp $ +# $DragonFly: src/sys/vfs/union/Makefile,v 1.4 2004/08/13 17:51:14 dillon Exp $ KMOD= union -SRCS= vnode_if.h \ - union_subr.c union_vfsops.c union_vnops.c +SRCS= union_subr.c union_vfsops.c union_vnops.c NOMAN= .include diff --git a/sys/vfs/union/union.h b/sys/vfs/union/union.h index 19740f7340..00e69f1199 100644 --- a/sys/vfs/union/union.h +++ b/sys/vfs/union/union.h @@ -36,7 +36,7 @@ * * @(#)union.h 8.9 (Berkeley) 12/10/94 * $FreeBSD: src/sys/miscfs/union/union.h,v 1.17 1999/12/29 04:54:48 peter Exp $ - * $DragonFly: src/sys/vfs/union/union.h,v 1.5 2003/08/27 02:03:23 dillon Exp $ + * $DragonFly: src/sys/vfs/union/union.h,v 1.6 2004/08/13 17:51:14 dillon Exp $ */ struct union_args { @@ -157,7 +157,7 @@ extern void union_vm_coherency (struct vnode *, struct uio *, int); extern int (*union_dircheckp) (struct thread *, struct vnode **, struct file *); -extern vop_t **union_vnodeop_p; +extern struct vop_ops *union_vnode_vops; extern struct vfsops union_vfsops; extern int uniondebug; diff --git a/sys/vfs/union/union_subr.c b/sys/vfs/union/union_subr.c index d5f7b9cf5a..5b2ac8cc88 100644 --- a/sys/vfs/union/union_subr.c +++ b/sys/vfs/union/union_subr.c @@ -36,7 +36,7 @@ * * @(#)union_subr.c 8.20 (Berkeley) 5/20/95 * $FreeBSD: src/sys/miscfs/union/union_subr.c,v 1.43.2.2 2001/12/25 01:44:45 dillon Exp $ - * $DragonFly: src/sys/vfs/union/union_subr.c,v 1.12 2004/05/20 05:09:18 cpressey Exp $ + * $DragonFly: src/sys/vfs/union/union_subr.c,v 1.13 2004/08/13 17:51:14 dillon Exp $ */ #include @@ -528,7 +528,7 @@ loop: * Create new node rather then replace old node */ - error = getnewvnode(VT_UNION, mp, union_vnodeop_p, vpp); + error = getnewvnode(VT_UNION, mp, union_vnode_vops, vpp); if (error) { /* * If an error occurs clear out vnodes. @@ -1155,7 +1155,7 @@ union_dircache_r(struct vnode *vp, struct vnode ***vppp, int *cntp) { struct union_node *un; - if (vp->v_op != union_vnodeop_p) { + if (vp->v_vops != union_vnode_vops) { if (vppp) { vref(vp); *(*vppp)++ = vp; @@ -1270,7 +1270,7 @@ union_dircheck(struct thread *td, struct vnode **vp, struct file *fp) { int error = 0; - if ((*vp)->v_op == union_vnodeop_p) { + if ((*vp)->v_vops == union_vnode_vops) { struct vnode *lvp; lvp = union_dircache(*vp, td); diff --git a/sys/vfs/union/union_vfsops.c b/sys/vfs/union/union_vfsops.c index 7cf9070acc..eb173f4db1 100644 --- a/sys/vfs/union/union_vfsops.c +++ b/sys/vfs/union/union_vfsops.c @@ -36,7 +36,7 @@ * * @(#)union_vfsops.c 8.20 (Berkeley) 5/20/95 * $FreeBSD: src/sys/miscfs/union/union_vfsops.c,v 1.39.2.2 2001/10/25 19:18:53 dillon Exp $ - * $DragonFly: src/sys/vfs/union/union_vfsops.c,v 1.12 2004/05/20 05:09:18 cpressey Exp $ + * $DragonFly: src/sys/vfs/union/union_vfsops.c,v 1.13 2004/08/13 17:51:14 dillon Exp $ */ /* @@ -124,7 +124,7 @@ union_mount(struct mount *mp, char *path, caddr_t data, struct nameidata *ndp, /* * Unlock lower node to avoid deadlock. */ - if (lowerrootvp->v_op == union_vnodeop_p) + if (lowerrootvp->v_vops == union_vnode_vops) VOP_UNLOCK(lowerrootvp, NULL, 0, td); #endif @@ -138,7 +138,7 @@ union_mount(struct mount *mp, char *path, caddr_t data, struct nameidata *ndp, error = namei(ndp); #if 0 - if (lowerrootvp->v_op == union_vnodeop_p) + if (lowerrootvp->v_vops == union_vnode_vops) vn_lock(lowerrootvp, NULL, LK_EXCLUSIVE | LK_RETRY, td); #endif if (error) diff --git a/sys/vfs/union/union_vnops.c b/sys/vfs/union/union_vnops.c index 49fc99d884..685cf14cda 100644 --- a/sys/vfs/union/union_vnops.c +++ b/sys/vfs/union/union_vnops.c @@ -36,7 +36,7 @@ * * @(#)union_vnops.c 8.32 (Berkeley) 6/23/95 * $FreeBSD: src/sys/miscfs/union/union_vnops.c,v 1.72 1999/12/15 23:02:14 eivind Exp $ - * $DragonFly: src/sys/vfs/union/union_vnops.c,v 1.12 2004/05/20 05:09:18 cpressey Exp $ + * $DragonFly: src/sys/vfs/union/union_vnops.c,v 1.13 2004/08/13 17:51:14 dillon Exp $ */ #include @@ -792,7 +792,7 @@ union_close(struct vop_close_args *ap) vp = un->un_lowervp; } ap->a_vp = vp; - return (VCALL(vp, VOFFSET(vop_close), ap)); + return (VCALL(vp, VOFFSET(vop_close), &ap->a_head)); } /* @@ -831,7 +831,7 @@ union_access(struct vop_access_args *ap) if ((vp = union_lock_upper(un, td)) != NULLVP) { ap->a_vp = vp; - error = VCALL(vp, VOFFSET(vop_access), ap); + error = VCALL(vp, VOFFSET(vop_access), &ap->a_head); union_unlock_upper(vp, td); return(error); } @@ -847,7 +847,7 @@ union_access(struct vop_access_args *ap) if ((un->un_vnode->v_mount->mnt_flag & MNT_RDONLY) == 0) ap->a_mode &= ~VWRITE; - error = VCALL(vp, VOFFSET(vop_access), ap); + error = VCALL(vp, VOFFSET(vop_access), &ap->a_head); if (error == 0) { struct union_mount *um; @@ -855,7 +855,7 @@ union_access(struct vop_access_args *ap) if (um->um_op == UNMNT_BELOW) { ap->a_cred = um->um_cred; - error = VCALL(vp, VOFFSET(vop_access), ap); + error = VCALL(vp, VOFFSET(vop_access), &ap->a_head); } } VOP_UNLOCK(vp, NULL, 0, td); @@ -1114,7 +1114,7 @@ union_lease(struct vop_lease_args *ap) struct vnode *ovp = OTHERVP(ap->a_vp); ap->a_vp = ovp; - return (VCALL(ovp, VOFFSET(vop_lease), ap)); + return (VCALL(ovp, VOFFSET(vop_lease), &ap->a_head)); } /* @@ -1127,7 +1127,7 @@ union_ioctl(struct vop_ioctl_args *ap) struct vnode *ovp = OTHERVP(ap->a_vp); ap->a_vp = ovp; - return (VCALL(ovp, VOFFSET(vop_ioctl), ap)); + return (VCALL(ovp, VOFFSET(vop_ioctl), &ap->a_head)); } /* @@ -1140,7 +1140,7 @@ union_poll(struct vop_poll_args *ap) struct vnode *ovp = OTHERVP(ap->a_vp); ap->a_vp = ovp; - return (VCALL(ovp, VOFFSET(vop_poll), ap)); + return (VCALL(ovp, VOFFSET(vop_poll), &ap->a_head)); } /* @@ -1169,7 +1169,7 @@ union_mmap(struct vop_mmap_args *ap) struct vnode *ovp = OTHERVP(ap->a_vp); ap->a_vp = ovp; - return (VCALL(ovp, VOFFSET(vop_mmap), ap)); + return (VCALL(ovp, VOFFSET(vop_mmap), &ap->a_head)); } /* @@ -1254,7 +1254,7 @@ union_link(struct vop_link_args *ap) struct vnode *tdvp; int error = 0; - if (ap->a_tdvp->v_op != ap->a_vp->v_op) { + if (ap->a_tdvp->v_vops != ap->a_vp->v_vops) { vp = ap->a_vp; } else { struct union_node *tun = VTOUNION(ap->a_vp); @@ -1326,7 +1326,7 @@ union_rename(struct vop_rename_args *ap) * replace the fdvp, release the original one and ref the new one. */ - if (fdvp->v_op == union_vnodeop_p) { /* always true */ + if (fdvp->v_vops == union_vnode_vops) { /* always true */ struct union_node *un = VTOUNION(fdvp); if (un->un_uppervp == NULLVP) { /* @@ -1348,7 +1348,7 @@ union_rename(struct vop_rename_args *ap) * replace the fvp, release the original one and ref the new one. */ - if (fvp->v_op == union_vnodeop_p) { /* always true */ + if (fvp->v_vops == union_vnode_vops) { /* always true */ struct union_node *un = VTOUNION(fvp); #if 0 struct union_mount *um = MOUNTTOUNIONMOUNT(fvp->v_mount); @@ -1406,7 +1406,7 @@ union_rename(struct vop_rename_args *ap) * reference. */ - if (tdvp->v_op == union_vnodeop_p) { + if (tdvp->v_vops == union_vnode_vops) { struct union_node *un = VTOUNION(tdvp); if (un->un_uppervp == NULLVP) { @@ -1436,7 +1436,7 @@ union_rename(struct vop_rename_args *ap) * file and change tvp to NULL. */ - if (tvp != NULLVP && tvp->v_op == union_vnodeop_p) { + if (tvp != NULLVP && tvp->v_vops == union_vnode_vops) { struct union_node *un = VTOUNION(tvp); tvp = union_lock_upper(un, ap->a_tcnp->cn_td); @@ -1578,7 +1578,7 @@ union_readdir(struct vop_readdir_args *ap) if ((uvp = union_lock_upper(un, td)) != NULLVP) { ap->a_vp = uvp; - error = VCALL(uvp, VOFFSET(vop_readdir), ap); + error = VCALL(uvp, VOFFSET(vop_readdir), &ap->a_head); union_unlock_upper(uvp, td); } return(error); @@ -1600,7 +1600,7 @@ union_readlink(struct vop_readlink_args *ap) KASSERT(vp != NULL, ("union_readlink: backing vnode missing!")); ap->a_vp = vp; - error = VCALL(vp, VOFFSET(vop_readlink), ap); + error = VCALL(vp, VOFFSET(vop_readlink), &ap->a_head); union_unlock_other(vp, td); return (error); @@ -1796,7 +1796,7 @@ union_pathconf(struct vop_pathconf_args *ap) KASSERT(vp != NULL, ("union_pathconf: backing vnode missing!")); ap->a_vp = vp; - error = VCALL(vp, VOFFSET(vop_pathconf), ap); + error = VCALL(vp, VOFFSET(vop_pathconf), &ap->a_head); union_unlock_other(vp, td); return (error); @@ -1812,7 +1812,7 @@ union_advlock(struct vop_advlock_args *ap) struct vnode *ovp = OTHERVP(ap->a_vp); ap->a_vp = ovp; - return (VCALL(ovp, VOFFSET(vop_advlock), ap)); + return (VCALL(ovp, VOFFSET(vop_advlock), &ap->a_head)); } @@ -1844,49 +1844,49 @@ union_strategy(struct vop_strategy_args *ap) /* * Global vfs data structures */ -vop_t **union_vnodeop_p; +struct vop_ops *union_vnode_vops; static struct vnodeopv_entry_desc union_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) vop_defaultop }, - { &vop_access_desc, (vop_t *) union_access }, - { &vop_advlock_desc, (vop_t *) union_advlock }, - { &vop_bmap_desc, (vop_t *) union_bmap }, - { &vop_close_desc, (vop_t *) union_close }, - { &vop_create_desc, (vop_t *) union_create }, - { &vop_fsync_desc, (vop_t *) union_fsync }, - { &vop_getpages_desc, (vop_t *) union_getpages }, - { &vop_putpages_desc, (vop_t *) union_putpages }, - { &vop_getattr_desc, (vop_t *) union_getattr }, - { &vop_inactive_desc, (vop_t *) union_inactive }, - { &vop_ioctl_desc, (vop_t *) union_ioctl }, - { &vop_islocked_desc, (vop_t *) vop_stdislocked }, - { &vop_lease_desc, (vop_t *) union_lease }, - { &vop_link_desc, (vop_t *) union_link }, - { &vop_lock_desc, (vop_t *) union_lock }, - { &vop_lookup_desc, (vop_t *) union_lookup }, - { &vop_mkdir_desc, (vop_t *) union_mkdir }, - { &vop_mknod_desc, (vop_t *) union_mknod }, - { &vop_mmap_desc, (vop_t *) union_mmap }, - { &vop_open_desc, (vop_t *) union_open }, - { &vop_pathconf_desc, (vop_t *) union_pathconf }, - { &vop_poll_desc, (vop_t *) union_poll }, - { &vop_print_desc, (vop_t *) union_print }, - { &vop_read_desc, (vop_t *) union_read }, - { &vop_readdir_desc, (vop_t *) union_readdir }, - { &vop_readlink_desc, (vop_t *) union_readlink }, - { &vop_reclaim_desc, (vop_t *) union_reclaim }, - { &vop_remove_desc, (vop_t *) union_remove }, - { &vop_rename_desc, (vop_t *) union_rename }, - { &vop_revoke_desc, (vop_t *) union_revoke }, - { &vop_rmdir_desc, (vop_t *) union_rmdir }, - { &vop_setattr_desc, (vop_t *) union_setattr }, - { &vop_strategy_desc, (vop_t *) union_strategy }, - { &vop_symlink_desc, (vop_t *) union_symlink }, - { &vop_unlock_desc, (vop_t *) union_unlock }, - { &vop_whiteout_desc, (vop_t *) union_whiteout }, - { &vop_write_desc, (vop_t *) union_write }, + { &vop_default_desc, vop_defaultop }, + { &vop_access_desc, (void *) union_access }, + { &vop_advlock_desc, (void *) union_advlock }, + { &vop_bmap_desc, (void *) union_bmap }, + { &vop_close_desc, (void *) union_close }, + { &vop_create_desc, (void *) union_create }, + { &vop_fsync_desc, (void *) union_fsync }, + { &vop_getpages_desc, (void *) union_getpages }, + { &vop_putpages_desc, (void *) union_putpages }, + { &vop_getattr_desc, (void *) union_getattr }, + { &vop_inactive_desc, (void *) union_inactive }, + { &vop_ioctl_desc, (void *) union_ioctl }, + { &vop_islocked_desc, (void *) vop_stdislocked }, + { &vop_lease_desc, (void *) union_lease }, + { &vop_link_desc, (void *) union_link }, + { &vop_lock_desc, (void *) union_lock }, + { &vop_lookup_desc, (void *) union_lookup }, + { &vop_mkdir_desc, (void *) union_mkdir }, + { &vop_mknod_desc, (void *) union_mknod }, + { &vop_mmap_desc, (void *) union_mmap }, + { &vop_open_desc, (void *) union_open }, + { &vop_pathconf_desc, (void *) union_pathconf }, + { &vop_poll_desc, (void *) union_poll }, + { &vop_print_desc, (void *) union_print }, + { &vop_read_desc, (void *) union_read }, + { &vop_readdir_desc, (void *) union_readdir }, + { &vop_readlink_desc, (void *) union_readlink }, + { &vop_reclaim_desc, (void *) union_reclaim }, + { &vop_remove_desc, (void *) union_remove }, + { &vop_rename_desc, (void *) union_rename }, + { &vop_revoke_desc, (void *) union_revoke }, + { &vop_rmdir_desc, (void *) union_rmdir }, + { &vop_setattr_desc, (void *) union_setattr }, + { &vop_strategy_desc, (void *) union_strategy }, + { &vop_symlink_desc, (void *) union_symlink }, + { &vop_unlock_desc, (void *) union_unlock }, + { &vop_whiteout_desc, (void *) union_whiteout }, + { &vop_write_desc, (void *) union_write }, { NULL, NULL } }; static struct vnodeopv_desc union_vnodeop_opv_desc = - { &union_vnodeop_p, union_vnodeop_entries }; + { &union_vnode_vops, union_vnodeop_entries }; VNODEOP_SET(union_vnodeop_opv_desc); diff --git a/sys/vm/vm_swap.c b/sys/vm/vm_swap.c index 2c765e8cf2..f89f178cd1 100644 --- a/sys/vm/vm_swap.c +++ b/sys/vm/vm_swap.c @@ -32,7 +32,7 @@ * * @(#)vm_swap.c 8.5 (Berkeley) 2/17/94 * $FreeBSD: src/sys/vm/vm_swap.c,v 1.96.2.2 2001/10/14 18:46:47 iedowse Exp $ - * $DragonFly: src/sys/vm/vm_swap.c,v 1.12 2004/05/19 22:53:06 dillon Exp $ + * $DragonFly: src/sys/vm/vm_swap.c,v 1.13 2004/08/13 17:51:14 dillon Exp $ */ #include "opt_swap.h" @@ -158,14 +158,14 @@ swapdev_strategy(struct vop_strategy_args /* { * Create a special vnode op vector for swapdev_vp - we only use * VOP_STRATEGY(), everything else returns an error. */ -vop_t **swapdev_vnodeop_p; +struct vop_ops *swapdev_vnode_vops; static struct vnodeopv_entry_desc swapdev_vnodeop_entries[] = { - { &vop_default_desc, (vop_t *) vop_defaultop }, - { &vop_strategy_desc, (vop_t *) swapdev_strategy }, + { &vop_default_desc, vop_defaultop }, + { &vop_strategy_desc, (void *) swapdev_strategy }, { NULL, NULL } }; static struct vnodeopv_desc swapdev_vnodeop_opv_desc = - { &swapdev_vnodeop_p, swapdev_vnodeop_entries }; + { &swapdev_vnode_vops, swapdev_vnodeop_entries }; VNODEOP_SET(swapdev_vnodeop_opv_desc); @@ -247,7 +247,7 @@ swaponvp(struct thread *td, struct vnode *vp, u_long nblks) cred = td->td_proc->p_ucred; if (!swapdev_vp) { - error = getnewvnode(VT_NON, NULL, swapdev_vnodeop_p, + error = getnewvnode(VT_NON, NULL, swapdev_vnode_vops, &swapdev_vp); if (error) panic("Cannot get vnode for swapdev");