head 1.53; access; symbols netbsd-10-0-RC6:1.53 netbsd-10-0-RC5:1.53 netbsd-10-0-RC4:1.53 netbsd-10-0-RC3:1.53 netbsd-10-0-RC2:1.53 thorpej-ifq:1.53.0.52 thorpej-ifq-base:1.53 thorpej-altq-separation:1.53.0.50 thorpej-altq-separation-base:1.53 netbsd-10-0-RC1:1.53 netbsd-10:1.53.0.48 netbsd-10-base:1.53 bouyer-sunxi-drm:1.53.0.46 bouyer-sunxi-drm-base:1.53 netbsd-9-3-RELEASE:1.53 thorpej-i2c-spi-conf2:1.53.0.44 thorpej-i2c-spi-conf2-base:1.53 thorpej-futex2:1.53.0.42 thorpej-futex2-base:1.53 thorpej-cfargs2:1.53.0.40 thorpej-cfargs2-base:1.53 cjep_sun2x-base1:1.53 cjep_sun2x:1.53.0.38 cjep_sun2x-base:1.53 cjep_staticlib_x-base1:1.53 netbsd-9-2-RELEASE:1.53 cjep_staticlib_x:1.53.0.36 cjep_staticlib_x-base:1.53 thorpej-i2c-spi-conf:1.53.0.34 thorpej-i2c-spi-conf-base:1.53 thorpej-cfargs:1.53.0.32 thorpej-cfargs-base:1.53 thorpej-futex:1.53.0.30 thorpej-futex-base:1.53 netbsd-9-1-RELEASE:1.53 bouyer-xenpvh-base2:1.53 phil-wifi-20200421:1.53 bouyer-xenpvh-base1:1.53 phil-wifi-20200411:1.53 bouyer-xenpvh:1.53.0.28 bouyer-xenpvh-base:1.53 is-mlppp:1.53.0.26 is-mlppp-base:1.53 phil-wifi-20200406:1.53 netbsd-8-2-RELEASE:1.53 ad-namecache-base3:1.53 netbsd-9-0-RELEASE:1.53 netbsd-9-0-RC2:1.53 ad-namecache-base2:1.53 ad-namecache-base1:1.53 ad-namecache:1.53.0.24 ad-namecache-base:1.53 netbsd-9-0-RC1:1.53 phil-wifi-20191119:1.53 netbsd-9:1.53.0.22 netbsd-9-base:1.53 phil-wifi-20190609:1.53 netbsd-8-1-RELEASE:1.53 netbsd-8-1-RC1:1.53 isaki-audio2:1.53.0.20 isaki-audio2-base:1.53 pgoyette-compat-merge-20190127:1.53 pgoyette-compat-20190127:1.53 pgoyette-compat-20190118:1.53 pgoyette-compat-1226:1.53 pgoyette-compat-1126:1.53 pgoyette-compat-1020:1.53 pgoyette-compat-0930:1.53 pgoyette-compat-0906:1.53 netbsd-7-2-RELEASE:1.52.2.1 pgoyette-compat-0728:1.53 netbsd-8-0-RELEASE:1.53 phil-wifi:1.53.0.18 phil-wifi-base:1.53 pgoyette-compat-0625:1.53 netbsd-8-0-RC2:1.53 pgoyette-compat-0521:1.53 pgoyette-compat-0502:1.53 pgoyette-compat-0422:1.53 netbsd-8-0-RC1:1.53 pgoyette-compat-0415:1.53 pgoyette-compat-0407:1.53 pgoyette-compat-0330:1.53 pgoyette-compat-0322:1.53 pgoyette-compat-0315:1.53 netbsd-7-1-2-RELEASE:1.52.2.1 pgoyette-compat:1.53.0.16 pgoyette-compat-base:1.53 netbsd-7-1-1-RELEASE:1.52.2.1 tls-maxphys-base-20171202:1.53 matt-nb8-mediatek:1.53.0.14 matt-nb8-mediatek-base:1.53 nick-nhusb-base-20170825:1.53 perseant-stdc-iso10646:1.53.0.12 perseant-stdc-iso10646-base:1.53 netbsd-8:1.53.0.10 netbsd-8-base:1.53 prg-localcount2-base3:1.53 prg-localcount2-base2:1.53 prg-localcount2-base1:1.53 prg-localcount2:1.53.0.8 prg-localcount2-base:1.53 pgoyette-localcount-20170426:1.53 bouyer-socketcan-base1:1.53 jdolecek-ncq:1.53.0.6 jdolecek-ncq-base:1.53 pgoyette-localcount-20170320:1.53 netbsd-7-1:1.52.2.1.0.4 netbsd-7-1-RELEASE:1.52.2.1 netbsd-7-1-RC2:1.52.2.1 nick-nhusb-base-20170204:1.53 netbsd-7-nhusb-base-20170116:1.52.2.1 bouyer-socketcan:1.53.0.4 bouyer-socketcan-base:1.53 pgoyette-localcount-20170107:1.53 netbsd-7-1-RC1:1.52.2.1 nick-nhusb-base-20161204:1.53 pgoyette-localcount-20161104:1.53 netbsd-7-0-2-RELEASE:1.52 nick-nhusb-base-20161004:1.53 localcount-20160914:1.53 netbsd-7-nhusb:1.52.2.1.0.2 netbsd-7-nhusb-base:1.52.2.1 pgoyette-localcount-20160806:1.53 pgoyette-localcount-20160726:1.53 pgoyette-localcount:1.53.0.2 pgoyette-localcount-base:1.53 nick-nhusb-base-20160907:1.53 nick-nhusb-base-20160529:1.53 netbsd-7-0-1-RELEASE:1.52 nick-nhusb-base-20160422:1.53 nick-nhusb-base-20160319:1.53 nick-nhusb-base-20151226:1.53 netbsd-7-0:1.52.0.6 netbsd-7-0-RELEASE:1.52 nick-nhusb-base-20150921:1.53 netbsd-7-0-RC3:1.52 netbsd-7-0-RC2:1.52 netbsd-7-0-RC1:1.52 nick-nhusb-base-20150606:1.52 nick-nhusb-base-20150406:1.52 nick-nhusb:1.52.0.4 nick-nhusb-base:1.52 netbsd-5-2-3-RELEASE:1.48 netbsd-5-1-5-RELEASE:1.48 netbsd-6-0-6-RELEASE:1.51 netbsd-6-1-5-RELEASE:1.51 netbsd-7:1.52.0.2 netbsd-7-base:1.52 yamt-pagecache-base9:1.51 yamt-pagecache-tag8:1.51 netbsd-6-1-4-RELEASE:1.51 netbsd-6-0-5-RELEASE:1.51 tls-earlyentropy:1.51.0.28 tls-earlyentropy-base:1.52 riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.51 riastradh-drm2-base3:1.51 netbsd-6-1-3-RELEASE:1.51 netbsd-6-0-4-RELEASE:1.51 netbsd-5-2-2-RELEASE:1.48 netbsd-5-1-4-RELEASE:1.48 netbsd-6-1-2-RELEASE:1.51 netbsd-6-0-3-RELEASE:1.51 netbsd-5-2-1-RELEASE:1.48 netbsd-5-1-3-RELEASE:1.48 rmind-smpnet-nbase:1.51 netbsd-6-1-1-RELEASE:1.51 riastradh-drm2-base2:1.51 riastradh-drm2-base1:1.51 riastradh-drm2:1.51.0.26 riastradh-drm2-base:1.51 rmind-smpnet:1.51.0.18 rmind-smpnet-base:1.51 netbsd-6-1:1.51.0.24 netbsd-6-0-2-RELEASE:1.51 netbsd-6-1-RELEASE:1.51 khorben-n900:1.51.0.22 netbsd-6-1-RC4:1.51 netbsd-6-1-RC3:1.51 agc-symver:1.51.0.20 agc-symver-base:1.51 netbsd-6-1-RC2:1.51 netbsd-6-1-RC1:1.51 yamt-pagecache-base8:1.51 netbsd-5-2:1.48.0.18 netbsd-6-0-1-RELEASE:1.51 yamt-pagecache-base7:1.51 netbsd-5-2-RELEASE:1.48 netbsd-5-2-RC1:1.48 matt-nb6-plus-nbase:1.51 yamt-pagecache-base6:1.51 netbsd-6-0:1.51.0.16 netbsd-6-0-RELEASE:1.51 netbsd-6-0-RC2:1.51 tls-maxphys:1.51.0.14 tls-maxphys-base:1.52 matt-nb6-plus:1.51.0.12 matt-nb6-plus-base:1.51 netbsd-6-0-RC1:1.51 jmcneill-usbmp-base10:1.51 yamt-pagecache-base5:1.51 jmcneill-usbmp-base9:1.51 yamt-pagecache-base4:1.51 jmcneill-usbmp-base8:1.51 jmcneill-usbmp-base7:1.51 jmcneill-usbmp-base6:1.51 jmcneill-usbmp-base5:1.51 jmcneill-usbmp-base4:1.51 jmcneill-usbmp-base3:1.51 jmcneill-usbmp-pre-base2:1.51 jmcneill-usbmp-base2:1.51 netbsd-6:1.51.0.10 netbsd-6-base:1.51 netbsd-5-1-2-RELEASE:1.48 netbsd-5-1-1-RELEASE:1.48 jmcneill-usbmp:1.51.0.8 jmcneill-usbmp-base:1.51 jmcneill-audiomp3:1.51.0.6 jmcneill-audiomp3-base:1.51 yamt-pagecache-base3:1.51 yamt-pagecache-base2:1.51 yamt-pagecache:1.51.0.4 yamt-pagecache-base:1.51 rmind-uvmplock-nbase:1.51 cherry-xenmp:1.51.0.2 cherry-xenmp-base:1.51 bouyer-quota2-nbase:1.51 bouyer-quota2:1.50.0.4 bouyer-quota2-base:1.51 jruoho-x86intr:1.50.0.2 jruoho-x86intr-base:1.50 matt-mips64-premerge-20101231:1.50 matt-nb5-mips64-premerge-20101231:1.48 matt-nb5-pq3:1.48.0.16 matt-nb5-pq3-base:1.48 netbsd-5-1:1.48.0.14 netbsd-5-1-RELEASE:1.48 uebayasi-xip-base4:1.50 uebayasi-xip-base3:1.50 yamt-nfs-mp-base11:1.50 netbsd-5-1-RC4:1.48 matt-nb5-mips64-k15:1.48 uebayasi-xip-base2:1.49 yamt-nfs-mp-base10:1.49 netbsd-5-1-RC3:1.48 netbsd-5-1-RC2:1.48 uebayasi-xip-base1:1.49 netbsd-5-1-RC1:1.48 rmind-uvmplock:1.49.0.4 rmind-uvmplock-base:1.51 yamt-nfs-mp-base9:1.49 uebayasi-xip:1.49.0.2 uebayasi-xip-base:1.49 netbsd-5-0-2-RELEASE:1.48 matt-nb5-mips64-premerge-20091211:1.48 matt-premerge-20091211:1.49 yamt-nfs-mp-base8:1.49 matt-nb5-mips64-u2-k2-k4-k7-k8-k9:1.48 matt-nb4-mips64-k7-u2a-k9b:1.48 matt-nb5-mips64-u1-k1-k5:1.48 yamt-nfs-mp-base7:1.49 matt-nb5-mips64:1.48.0.12 netbsd-5-0-1-RELEASE:1.48 jymxensuspend-base:1.49 yamt-nfs-mp-base6:1.49 yamt-nfs-mp-base5:1.49 yamt-nfs-mp-base4:1.49 jym-xensuspend-nbase:1.49 yamt-nfs-mp-base3:1.49 nick-hppapmap-base4:1.49 nick-hppapmap-base3:1.49 netbsd-5-0:1.48.0.10 netbsd-5-0-RELEASE:1.48 netbsd-5-0-RC4:1.48 netbsd-5-0-RC3:1.48 nick-hppapmap-base2:1.48 netbsd-5-0-RC2:1.48 jym-xensuspend:1.48.0.8 jym-xensuspend-base:1.49 netbsd-5-0-RC1:1.48 haad-dm-base2:1.48 haad-nbase2:1.48 ad-audiomp2:1.48.0.6 ad-audiomp2-base:1.48 netbsd-5:1.48.0.4 netbsd-5-base:1.48 nick-hppapmap:1.48.0.2 nick-hppapmap-base:1.49 matt-mips64-base2:1.48 matt-mips64:1.46.0.36 haad-dm-base1:1.46 wrstuden-revivesa-base-4:1.46 netbsd-4-0-1-RELEASE:1.40 wrstuden-revivesa-base-3:1.46 wrstuden-revivesa-base-2:1.46 wrstuden-fixsa-newbase:1.40 nick-csl-alignment-base5:1.46 haad-dm:1.46.0.34 haad-dm-base:1.48 wrstuden-revivesa-base-1:1.46 simonb-wapbl-nbase:1.46 yamt-pf42-base4:1.46 simonb-wapbl:1.46.0.32 simonb-wapbl-base:1.46 yamt-pf42-base3:1.46 hpcarm-cleanup-nbase:1.46 yamt-pf42-baseX:1.46 yamt-pf42-base2:1.46 yamt-nfs-mp-base2:1.46 wrstuden-revivesa:1.46.0.30 wrstuden-revivesa-base:1.46 yamt-nfs-mp:1.46.0.28 yamt-nfs-mp-base:1.46 yamt-pf42:1.46.0.26 yamt-pf42-base:1.46 ad-socklock-base1:1.46 yamt-lazymbuf-base15:1.46 yamt-lazymbuf-base14:1.46 keiichi-mipv6-nbase:1.46 mjf-devfs2:1.46.0.24 mjf-devfs2-base:1.48 nick-net80211-sync:1.46.0.22 nick-net80211-sync-base:1.46 keiichi-mipv6:1.46.0.20 keiichi-mipv6-base:1.46 bouyer-xeni386-merge1:1.46 matt-armv6-prevmlocking:1.46 wrstuden-fixsa-base-1:1.40 vmlocking2-base3:1.46 netbsd-4-0:1.40.0.14 netbsd-4-0-RELEASE:1.40 bouyer-xeni386-nbase:1.46 yamt-kmem-base3:1.46 cube-autoconf:1.46.0.18 cube-autoconf-base:1.46 yamt-kmem-base2:1.46 bouyer-xeni386:1.46.0.16 bouyer-xeni386-base:1.46 yamt-kmem:1.46.0.14 yamt-kmem-base:1.46 vmlocking2-base2:1.46 reinoud-bufcleanup-nbase:1.46 vmlocking2:1.46.0.12 vmlocking2-base1:1.46 netbsd-4-0-RC5:1.40 matt-nb4-arm:1.40.0.12 matt-nb4-arm-base:1.40 matt-armv6-nbase:1.46 jmcneill-base:1.46 netbsd-4-0-RC4:1.40 mjf-devfs:1.46.0.10 mjf-devfs-base:1.46 bouyer-xenamd64-base2:1.46 vmlocking-nbase:1.46 yamt-x86pmap-base4:1.46 bouyer-xenamd64:1.46.0.8 bouyer-xenamd64-base:1.46 netbsd-4-0-RC3:1.40 yamt-x86pmap-base3:1.46 yamt-x86pmap-base2:1.46 netbsd-4-0-RC2:1.40 yamt-x86pmap:1.46.0.6 yamt-x86pmap-base:1.46 netbsd-4-0-RC1:1.40 matt-armv6:1.46.0.4 matt-armv6-base:1.46 matt-mips64-base:1.46 jmcneill-pm:1.46.0.2 jmcneill-pm-base:1.46 hpcarm-cleanup:1.45.0.4 hpcarm-cleanup-base:1.46 nick-csl-alignment:1.45.0.2 nick-csl-alignment-base:1.45 netbsd-3-1-1-RELEASE:1.33.6.1 netbsd-3-0-3-RELEASE:1.33.6.1 yamt-idlelwp-base8:1.44 wrstuden-fixsa:1.40.0.10 wrstuden-fixsa-base:1.40 thorpej-atomic:1.42.0.12 thorpej-atomic-base:1.42 reinoud-bufcleanup:1.42.0.10 reinoud-bufcleanup-base:1.46 mjf-ufs-trans:1.42.0.8 mjf-ufs-trans-base:1.44 vmlocking:1.42.0.6 vmlocking-base:1.46 ad-audiomp:1.42.0.4 ad-audiomp-base:1.42 yamt-idlelwp:1.42.0.2 post-newlock2-merge:1.41 newlock2-nbase:1.41 yamt-splraiseipl-base5:1.40 yamt-splraiseipl-base4:1.40 yamt-splraiseipl-base3:1.40 abandoned-netbsd-4-base:1.40 abandoned-netbsd-4:1.40.0.2 netbsd-3-1:1.33.6.1.0.4 netbsd-3-1-RELEASE:1.33.6.1 netbsd-3-0-2-RELEASE:1.33.6.1 yamt-splraiseipl-base2:1.40 netbsd-3-1-RC4:1.33.6.1 yamt-splraiseipl:1.40.0.6 yamt-splraiseipl-base:1.40 netbsd-3-1-RC3:1.33.6.1 yamt-pdpolicy-base9:1.40 newlock2:1.40.0.4 newlock2-base:1.41 yamt-pdpolicy-base8:1.40 netbsd-3-1-RC2:1.33.6.1 netbsd-3-1-RC1:1.33.6.1 yamt-pdpolicy-base7:1.40 netbsd-4:1.40.0.8 netbsd-4-base:1.40 yamt-pdpolicy-base6:1.39 chap-midi-nbase:1.39 netbsd-3-0-1-RELEASE:1.33.6.1 gdamore-uart:1.39.0.4 gdamore-uart-base:1.39 simonb-timcounters-final:1.37.6.2 yamt-pdpolicy-base5:1.39 chap-midi:1.39.0.2 chap-midi-base:1.39 yamt-pdpolicy-base4:1.37 yamt-pdpolicy-base3:1.37 peter-altq-base:1.37 peter-altq:1.37.0.12 yamt-pdpolicy-base2:1.37 elad-kernelauth-base:1.38 elad-kernelauth:1.37.0.10 yamt-pdpolicy:1.37.0.8 yamt-pdpolicy-base:1.37 yamt-uio_vmspace-base5:1.37 simonb-timecounters:1.37.0.6 simonb-timecounters-base:1.39 rpaulo-netinet-merge-pcb:1.37.0.4 rpaulo-netinet-merge-pcb-base:1.40 yamt-uio_vmspace:1.37.0.2 netbsd-3-0:1.33.6.1.0.2 netbsd-3-0-RELEASE:1.33.6.1 netbsd-3-0-RC6:1.33.6.1 yamt-readahead-base3:1.36 netbsd-3-0-RC5:1.33.6.1 netbsd-3-0-RC4:1.33.6.1 netbsd-3-0-RC3:1.33.6.1 yamt-readahead-base2:1.35 netbsd-3-0-RC2:1.33.6.1 yamt-readahead-pervnode:1.35 yamt-readahead-perfile:1.35 yamt-readahead:1.35.0.6 yamt-readahead-base:1.35 netbsd-3-0-RC1:1.33.6.1 yamt-vop-base3:1.35 netbsd-2-0-3-RELEASE:1.29 netbsd-2-1:1.29.0.6 yamt-vop-base2:1.35 thorpej-vnode-attr:1.35.0.4 thorpej-vnode-attr-base:1.35 netbsd-2-1-RELEASE:1.29 yamt-vop:1.35.0.2 yamt-vop-base:1.35 netbsd-2-1-RC6:1.29 netbsd-2-1-RC5:1.29 netbsd-2-1-RC4:1.29 netbsd-2-1-RC3:1.29 netbsd-2-1-RC2:1.29 netbsd-2-1-RC1:1.29 yamt-lazymbuf:1.33.0.8 yamt-km-base4:1.33 netbsd-2-0-2-RELEASE:1.29 yamt-km-base3:1.33 netbsd-3:1.33.0.6 netbsd-3-base:1.33 yamt-km-base2:1.33 yamt-km:1.33.0.2 yamt-km-base:1.33 kent-audio2:1.32.0.4 kent-audio2-base:1.33 netbsd-2-0-1-RELEASE:1.29 kent-audio1-beforemerge:1.32 netbsd-2:1.29.0.4 netbsd-2-base:1.29 kent-audio1:1.32.0.2 kent-audio1-base:1.32 netbsd-2-0-RELEASE:1.29 netbsd-2-0-RC5:1.29 netbsd-2-0-RC4:1.29 netbsd-2-0-RC3:1.29 netbsd-2-0-RC2:1.29 netbsd-2-0-RC1:1.29 netbsd-2-0:1.29.0.2 netbsd-2-0-base:1.29 netbsd-1-6-PATCH002-RELEASE:1.21 netbsd-1-6-PATCH002:1.21 netbsd-1-6-PATCH002-RC4:1.21 netbsd-1-6-PATCH002-RC3:1.21 netbsd-1-6-PATCH002-RC2:1.21 netbsd-1-6-PATCH002-RC1:1.21 ktrace-lwp:1.27.0.2 ktrace-lwp-base:1.36 netbsd-1-6-PATCH001:1.21 netbsd-1-6-PATCH001-RELEASE:1.21 netbsd-1-6-PATCH001-RC3:1.21 netbsd-1-6-PATCH001-RC2:1.21 netbsd-1-6-PATCH001-RC1:1.21 nathanw_sa_end:1.20.2.2 nathanw_sa_before_merge:1.22 fvdl_fs64_base:1.22 gmcgarry_ctxsw:1.22.0.4 gmcgarry_ctxsw_base:1.22 gmcgarry_ucred:1.22.0.2 gmcgarry_ucred_base:1.22 nathanw_sa_base:1.22 kqueue-aftermerge:1.22 kqueue-beforemerge:1.22 netbsd-1-6-RELEASE:1.21 netbsd-1-6-RC3:1.21 netbsd-1-6-RC2:1.21 netbsd-1-6-RC1:1.21 netbsd-1-6:1.21.0.12 netbsd-1-6-base:1.21 gehenna-devsw:1.21.0.10 gehenna-devsw-base:1.21 netbsd-1-5-PATCH003:1.19 eeh-devprop:1.21.0.8 eeh-devprop-base:1.21 newlock:1.21.0.6 newlock-base:1.21 ifpoll-base:1.21 thorpej-mips-cache:1.21.0.2 thorpej-mips-cache-base:1.21 thorpej-devvp-base3:1.21 thorpej-devvp-base2:1.21 post-chs-ubcperf:1.21 pre-chs-ubcperf:1.21 thorpej-devvp:1.20.0.6 thorpej-devvp-base:1.20 netbsd-1-5-PATCH002:1.19 kqueue:1.20.0.4 kqueue-base:1.22 netbsd-1-5-PATCH001:1.19 thorpej_scsipi_beforemerge:1.20 nathanw_sa:1.20.0.2 thorpej_scsipi_nbase:1.20 netbsd-1-5-RELEASE:1.19 netbsd-1-5-BETA2:1.19 netbsd-1-5-BETA:1.19 netbsd-1-4-PATCH003:1.17.2.1 netbsd-1-5-ALPHA2:1.19 netbsd-1-5:1.19.0.4 netbsd-1-5-base:1.19 minoura-xpg4dl-base:1.19 minoura-xpg4dl:1.19.0.2 netbsd-1-4-PATCH002:1.17.2.1 chs-ubc2-newbase:1.18 wrstuden-devbsize-19991221:1.18 wrstuden-devbsize:1.18.0.8 wrstuden-devbsize-base:1.18 kame_141_19991130:1.17 comdex-fall-1999:1.18.0.6 comdex-fall-1999-base:1.18 fvdl-softdep:1.18.0.4 fvdl-softdep-base:1.18 thorpej_scsipi:1.18.0.2 thorpej_scsipi_base:1.20 netbsd-1-4-PATCH001:1.17 kame_14_19990705:1.17 kame_14_19990628:1.17 kame:1.17.0.6 chs-ubc2:1.17.0.4 chs-ubc2-base:1.18 netbsd-1-4-RELEASE:1.17 netbsd-1-4:1.17.0.2 netbsd-1-4-base:1.17 netbsd-1-3-PATCH003:1.15 netbsd-1-3-PATCH003-CANDIDATE2:1.15 kenh-if-detach:1.16.0.6 kenh-if-detach-base:1.16 netbsd-1-3-PATCH003-CANDIDATE1:1.15 netbsd-1-3-PATCH003-CANDIDATE0:1.15 chs-ubc:1.16.0.4 chs-ubc-base:1.16 eeh-paddr_t:1.16.0.2 eeh-paddr_t-base:1.16 netbsd-1-3-PATCH002:1.15 lite-2:1.1.1.2 lite-1:1.1.1.1 CSRG:1.1.1 netbsd-1-3-PATCH001:1.15 netbsd-1-3-RELEASE:1.15 netbsd-1-3-BETA:1.15 netbsd-1-3:1.15.0.2 netbsd-1-3-base:1.15 thorpej-signal:1.14.0.4 thorpej-signal-base:1.14 marc-pcmcia:1.14.0.2 marc-pcmcia-bp:1.14 marc-pcmcia-base:1.15 bouyer-scsipi:1.13.0.8 is-newarp-before-merge:1.13 netbsd-1-2-PATCH001:1.10 mrg-vm-swap:1.13.0.6 is-newarp:1.13.0.4 is-newarp-base:1.13 thorpej-setroot:1.13.0.2 netbsd-1-2-RELEASE:1.10 netbsd-1-2-BETA:1.10 netbsd-1-2:1.10.0.4 netbsd-1-2-base:1.10 date-03-may-96:1.1.1.1 netbsd:1.1.1 netbsd-1-1-PATCH001:1.8 netbsd-1-1-RELEASE:1.8 netbsd-1-1:1.8.0.2 netbsd-1-1-base:1.8 netbsd-1-0-PATCH06:1.5.2.1 netbsd-1-0-PATCH05:1.5.2.1 netbsd-1-0-PATCH04:1.5.2.1 netbsd-1-0-PATCH03:1.5.2.1 netbsd-1-0-PATCH02:1.5.2.1 netbsd-1-0-PATCH1:1.5.2.1 netbsd-1-0-PATCH0:1.5.2.1 netbsd-1-0-RELEASE:1.5.2.1 netbsd-1-0:1.5.0.2 netbsd-1-0-base:1.5 magnum-base:1.2 magnum:1.2.0.4 netbsd-0-9-patch-001:1.2 netbsd-0-9-RELEASE:1.2 netbsd-0-9-BETA:1.2 netbsd-0-9-ALPHA2:1.2 netbsd-0-9-ALPHA:1.2 netbsd-0-9:1.2.0.2 netbsd-0-9-base:1.2 netbsd-0-8:1.1 netbsd-alpha-1:1.1; locks; strict; comment @ * @; 1.53 date 2015.07.15.03.28.55; author manu; state Exp; branches; next 1.52; 1.52 date 2014.05.30.08.47.45; author hannken; state Exp; branches 1.52.2.1 1.52.4.1; next 1.51; 1.51 date 2011.01.22.22.26.10; author matt; state Exp; branches 1.51.14.1 1.51.28.1; next 1.50; 1.50 date 2010.09.25.01.42.39; author matt; state Exp; branches 1.50.2.1 1.50.4.1; next 1.49; 1.49 date 2009.03.14.14.46.11; author dsl; state Exp; branches 1.49.2.1 1.49.4.1; next 1.48; 1.48 date 2008.10.22.12.29.35; author matt; state Exp; branches 1.48.2.1 1.48.8.1; next 1.47; 1.47 date 2008.10.22.11.36.06; author matt; state Exp; branches; next 1.46; 1.46 date 2007.07.31.21.14.19; author pooka; state Exp; branches 1.46.24.1 1.46.28.1 1.46.34.1 1.46.36.1; next 1.45; 1.45 date 2007.07.12.19.35.36; author dsl; state Exp; branches 1.45.2.1; next 1.44; 1.44 date 2007.04.29.14.57.00; author yamt; state Exp; branches; next 1.43; 1.43 date 2007.04.29.10.30.19; author yamt; state Exp; branches; next 1.42; 1.42 date 2007.02.15.16.01.51; author yamt; state Exp; branches 1.42.2.1 1.42.6.1 1.42.8.1; next 1.41; 1.41 date 2006.12.27.12.10.09; author yamt; state Exp; branches; next 1.40; 1.40 date 2006.07.13.12.00.26; author martin; state Exp; branches 1.40.4.1; next 1.39; 1.39 date 2006.05.14.21.32.21; author elad; state Exp; branches 1.39.4.1; next 1.38; 1.38 date 2006.04.14.13.09.07; author blymn; state Exp; branches; next 1.37; 1.37 date 2005.12.11.12.25.17; author christos; state Exp; branches 1.37.4.1 1.37.6.1 1.37.8.1 1.37.10.1 1.37.12.1; next 1.36; 1.36 date 2005.11.25.20.01.38; author thorpej; state Exp; branches; next 1.35; 1.35 date 2005.09.23.12.10.33; author jmmv; state Exp; branches 1.35.6.1; next 1.34; 1.34 date 2005.09.18.23.44.54; author christos; state Exp; branches; next 1.33; 1.33 date 2005.01.19.16.22.19; author yamt; state Exp; branches 1.33.6.1 1.33.8.1; next 1.32; 1.32 date 2004.05.22.22.52.16; author jonathan; state Exp; branches 1.32.4.1; next 1.31; 1.31 date 2004.04.27.17.37.31; author jrf; state Exp; branches; next 1.30; 1.30 date 2004.04.21.01.05.43; author christos; state Exp; branches; next 1.29; 1.29 date 2003.10.03.16.34.31; author yamt; state Exp; branches 1.29.4.1; next 1.28; 1.28 date 2003.08.07.16.33.56; author agc; state Exp; branches; next 1.27; 1.27 date 2003.06.29.22.32.21; author fvdl; state Exp; branches 1.27.2.1; next 1.26; 1.26 date 2003.06.29.18.43.38; author thorpej; state Exp; branches; next 1.25; 1.25 date 2003.06.28.14.22.19; author darrenr; state Exp; branches; next 1.24; 1.24 date 2003.05.03.16.28.59; author yamt; state Exp; branches; next 1.23; 1.23 date 2003.04.09.14.21.24; author yamt; state Exp; branches; next 1.22; 1.22 date 2002.09.21.18.08.27; author christos; state Exp; branches; next 1.21; 1.21 date 2001.09.15.16.13.02; author chs; state Exp; branches; next 1.20; 1.20 date 2001.02.12.20.02.30; author fvdl; state Exp; branches 1.20.2.1 1.20.4.1 1.20.6.1; next 1.19; 1.19 date 2000.03.16.18.08.31; author jdolecek; state Exp; branches; next 1.18; 1.18 date 99.07.04.19.56.00; author sommerfeld; state Exp; branches 1.18.2.1; next 1.17; 1.17 date 99.02.26.23.44.48; author wrstuden; state Exp; branches 1.17.2.1 1.17.4.1; next 1.16; 1.16 date 98.03.01.02.24.29; author fvdl; state Exp; branches; next 1.15; 1.15 date 97.10.10.01.53.32; author fvdl; state Exp; branches; next 1.14; 1.14 date 97.07.17.23.54.33; author fvdl; state Exp; branches 1.14.2.1; next 1.13; 1.13 date 96.12.22.10.10.36; author cgd; state Exp; branches; next 1.12; 1.12 date 96.12.03.00.22.50; author thorpej; state Exp; branches; next 1.11; 1.11 date 96.12.02.22.55.47; author thorpej; state Exp; branches; next 1.10; 1.10 date 96.02.18.11.54.03; author fvdl; state Exp; branches; next 1.9; 1.9 date 96.02.09.21.48.44; author christos; state Exp; branches; next 1.8; 1.8 date 95.03.26.20.37.31; author jtc; state Exp; branches; next 1.7; 1.7 date 94.12.13.17.17.04; author mycroft; state Exp; branches; next 1.6; 1.6 date 94.08.18.22.48.03; author mycroft; state Exp; branches; next 1.5; 1.5 date 94.06.29.06.42.34; author cgd; state Exp; branches 1.5.2.1; next 1.4; 1.4 date 94.06.08.11.37.10; author mycroft; state Exp; branches; next 1.3; 1.3 date 94.03.27.09.09.26; author cgd; state Exp; branches; next 1.2; 1.2 date 93.05.20.03.19.09; author cgd; state Exp; branches 1.2.4.1; next 1.1; 1.1 date 93.04.20.11.20.49; author mycroft; state Exp; branches 1.1.1.1; next ; 1.52.2.1 date 2015.11.04.17.32.00; author riz; state Exp; branches; next ; 1.52.4.1 date 2015.09.22.12.06.12; author skrll; state Exp; branches; next ; 1.51.14.1 date 2014.08.20.00.04.36; author tls; state Exp; branches; next 1.51.14.2; 1.51.14.2 date 2017.12.03.11.39.06; author jdolecek; state Exp; branches; next ; commitid XcIYRZTAh1LmerhA; 1.51.28.1 date 2014.08.10.06.56.45; author tls; state Exp; branches; next ; 1.50.2.1 date 2011.06.06.09.10.03; author jruoho; state Exp; branches; next ; 1.50.4.1 date 2011.02.08.16.20.02; author bouyer; state Exp; branches; next ; 1.49.2.1 date 2010.10.22.07.22.43; author uebayasi; state Exp; branches; next ; 1.49.4.1 date 2011.03.05.20.56.04; author rmind; state Exp; branches; next ; 1.48.2.1 date 2009.04.28.07.37.45; author skrll; state Exp; branches; next ; 1.48.8.1 date 2009.05.13.17.22.51; author jym; state Exp; branches; next ; 1.46.24.1 date 2009.01.17.13.29.34; author mjf; state Exp; branches; next ; 1.46.28.1 date 2008.04.27.12.52.50; author yamt; state Exp; branches; next 1.46.28.2; 1.46.28.2 date 2009.05.04.08.14.22; author yamt; state Exp; branches; next 1.46.28.3; 1.46.28.3 date 2009.07.16.16.43.15; author yamt; state Exp; branches; next 1.46.28.4; 1.46.28.4 date 2010.10.09.03.32.40; author yamt; state Exp; branches; next ; 1.46.34.1 date 2008.12.13.01.15.29; author haad; state Exp; branches; next ; 1.46.36.1 date 2007.07.31.21.14.19; author pooka; state dead; branches; next 1.46.36.2; 1.46.36.2 date 2007.07.31.21.14.20; author pooka; state Exp; branches; next ; 1.45.2.1 date 2007.08.15.13.50.06; author skrll; state Exp; branches; next ; 1.42.2.1 date 2007.05.07.10.56.12; author yamt; state Exp; branches; next ; 1.42.6.1 date 2007.03.13.17.51.17; author ad; state Exp; branches; next 1.42.6.2; 1.42.6.2 date 2007.06.08.14.18.08; author ad; state Exp; branches; next 1.42.6.3; 1.42.6.3 date 2007.07.15.13.28.07; author ad; state Exp; branches; next 1.42.6.4; 1.42.6.4 date 2007.08.20.21.28.14; author ad; state Exp; branches; next ; 1.42.8.1 date 2007.07.11.20.12.16; author mjf; state Exp; branches; next ; 1.40.4.1 date 2007.01.12.01.04.20; author ad; state Exp; branches; next ; 1.39.4.1 date 2006.07.13.17.50.06; author gdamore; state Exp; branches; next ; 1.37.4.1 date 2006.09.09.02.59.25; author rpaulo; state Exp; branches; next ; 1.37.6.1 date 2006.04.22.11.40.16; author simonb; state Exp; branches; next 1.37.6.2; 1.37.6.2 date 2006.06.01.22.39.13; author kardel; state Exp; branches; next ; 1.37.8.1 date 2006.05.24.10.59.15; author yamt; state Exp; branches; next 1.37.8.2; 1.37.8.2 date 2006.08.11.15.47.05; author yamt; state Exp; branches; next ; 1.37.10.1 date 2006.03.08.01.06.28; author elad; state Exp; branches; next 1.37.10.2; 1.37.10.2 date 2006.04.19.05.06.37; author elad; state Exp; branches; next ; 1.37.12.1 date 2006.05.24.15.50.46; author tron; state Exp; branches; next ; 1.35.6.1 date 2005.11.29.21.23.33; author yamt; state Exp; branches; next ; 1.33.6.1 date 2005.09.26.20.31.03; author tron; state Exp; branches; next ; 1.33.8.1 date 2006.06.21.15.11.59; author yamt; state Exp; branches; next 1.33.8.2; 1.33.8.2 date 2006.12.30.20.50.52; author yamt; state Exp; branches; next 1.33.8.3; 1.33.8.3 date 2007.02.26.09.12.07; author yamt; state Exp; branches; next 1.33.8.4; 1.33.8.4 date 2007.09.03.14.44.22; author yamt; state Exp; branches; next ; 1.32.4.1 date 2005.04.29.11.29.37; author kent; state Exp; branches; next ; 1.29.4.1 date 2005.10.27.05.17.56; author riz; state Exp; branches; next ; 1.27.2.1 date 2003.07.02.15.27.13; author darrenr; state Exp; branches; next 1.27.2.2; 1.27.2.2 date 2004.08.03.10.56.24; author skrll; state Exp; branches; next 1.27.2.3; 1.27.2.3 date 2004.08.24.17.57.41; author skrll; state Exp; branches; next 1.27.2.4; 1.27.2.4 date 2004.09.18.14.56.20; author skrll; state Exp; branches; next 1.27.2.5; 1.27.2.5 date 2004.09.21.13.38.44; author skrll; state Exp; branches; next 1.27.2.6; 1.27.2.6 date 2004.10.30.07.36.47; author skrll; state Exp; branches; next 1.27.2.7; 1.27.2.7 date 2005.01.24.08.35.53; author skrll; state Exp; branches; next 1.27.2.8; 1.27.2.8 date 2005.11.10.14.11.56; author skrll; state Exp; branches; next 1.27.2.9; 1.27.2.9 date 2005.12.11.10.29.36; author christos; state Exp; branches; next ; 1.20.2.1 date 2001.09.21.22.36.58; author nathanw; state Exp; branches; next 1.20.2.2; 1.20.2.2 date 2002.10.06.00.01.55; author thorpej; state Exp; branches; next ; 1.20.4.1 date 2002.01.10.20.04.30; author thorpej; state Exp; branches; next 1.20.4.2; 1.20.4.2 date 2002.10.10.18.44.40; author jdolecek; state Exp; branches; next ; 1.20.6.1 date 2001.10.01.12.48.06; author fvdl; state Exp; branches; next ; 1.18.2.1 date 2000.11.20.18.11.21; author bouyer; state Exp; branches; next 1.18.2.2; 1.18.2.2 date 2001.03.12.13.32.02; author bouyer; state Exp; branches; next ; 1.17.2.1 date 99.11.05.07.13.31; author cgd; state Exp; branches; next ; 1.17.4.1 date 99.08.02.22.38.28; author thorpej; state Exp; branches; next ; 1.14.2.1 date 97.10.14.15.58.53; author thorpej; state Exp; branches; next ; 1.5.2.1 date 94.08.19.12.10.44; author mycroft; state Exp; branches; next ; 1.2.4.1 date 93.09.24.08.56.47; author mycroft; state Exp; branches; next ; 1.1.1.1 date 98.03.01.02.10.42; author fvdl; state Exp; branches; next 1.1.1.2; 1.1.1.2 date 98.03.01.02.13.44; author fvdl; state Exp; branches; next ; desc @@ 1.53 log @Fix soft NFS force unmount For many reasons, forcibly unmounting a soft NFS mount could hang forever. Here are the fixes: - Introduce decents timeouts in operation that awaited NFS server reply. - On timeout, fails operations on soft mounts with EIO. - Introduce NFSMNT_DISMNTFORCE to let the filesystem know that a force unmount is ongoing. This causes timeouts to be reduced and prevents the NFS client to attempt reconnecting to the NFS server. Also fix a race condition where some asynchronous I/O could reference destroyed mount structures. We fix this by awaiting asynchronous I/O to drain before proceeding. Reviewed by Chuck Silvers. @ text @/* $NetBSD: nfsmount.h,v 1.52 2014/05/30 08:47:45 hannken Exp $ */ /* * Copyright (c) 1989, 1993 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Rick Macklem at The University of Guelph. * * 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 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. * * @@(#)nfsmount.h 8.3 (Berkeley) 3/30/95 */ #ifndef _NFS_NFSMOUNT_H_ #define _NFS_NFSMOUNT_H_ #if defined(_KERNEL) && !defined(NFS_ARGS_ONLY) #include #include #include #include #endif /* * Arguments to mount NFS */ #define NFS_ARGSVERSION 3 /* change when nfs_args changes */ struct nfs_args { int version; /* args structure version number */ struct sockaddr *addr; /* file server address */ int addrlen; /* length of address */ int sotype; /* Socket type */ int proto; /* and Protocol */ u_char *fh; /* File handle to be mounted */ int fhsize; /* Size, in bytes, of fh */ int flags; /* flags */ int wsize; /* write size in bytes */ int rsize; /* read size in bytes */ int readdirsize; /* readdir size in bytes */ int timeo; /* initial timeout in .1 secs */ int retrans; /* times to retry send */ int maxgrouplist; /* Max. size of group list */ int readahead; /* # of blocks to readahead */ int leaseterm; /* Ignored; Term (sec) of lease */ int deadthresh; /* Retrans threshold */ char *hostname; /* server's name */ }; /* * NFS mount option flags (nm_flag) */ #define NFSMNT_SOFT 0x00000001 /* soft mount (hard is default) */ #define NFSMNT_WSIZE 0x00000002 /* set write size */ #define NFSMNT_RSIZE 0x00000004 /* set read size */ #define NFSMNT_TIMEO 0x00000008 /* set initial timeout */ #define NFSMNT_RETRANS 0x00000010 /* set number of request retries */ #define NFSMNT_MAXGRPS 0x00000020 /* set maximum grouplist size */ #define NFSMNT_INT 0x00000040 /* allow interrupts on hard mount */ #define NFSMNT_NOCONN 0x00000080 /* Don't Connect the socket */ #define NFSMNT_NQNFS 0x00000100 /* Use Nqnfs protocol */ #define NFSMNT_NFSV3 0x00000200 /* Use NFS Version 3 protocol */ #define NFSMNT_KERB 0x00000400 /* Use Kerberos authentication */ #define NFSMNT_DUMBTIMR 0x00000800 /* Don't estimate rtt dynamically */ #define NFSMNT_LEASETERM 0x00001000 /* Ignored; lease term (nqnfs) */ #define NFSMNT_READAHEAD 0x00002000 /* set read ahead */ #define NFSMNT_DEADTHRESH 0x00004000 /* set dead server retry thresh */ #define NFSMNT_RESVPORT 0x00008000 /* Allocate a reserved port */ #define NFSMNT_RDIRPLUS 0x00010000 /* Use Readdirplus for V3 */ #define NFSMNT_READDIRSIZE 0x00020000 /* Set readdir size */ #define NFSMNT_XLATECOOKIE 0x00040000 /* 32<->64 dir cookie xlation */ #define NFSMNT_NOAC 0x00080000 /* Turn off attribute cache */ #define NFSMNT_BITS "\177\20" \ "b\00soft\0b\01wsize\0b\02rsize\0b\03timeo\0" \ "b\04retrans\0b\05maxgrps\0b\06intr\0b\07noconn\0" \ "b\10nqnfs\0b\11nfsv3\0b\12kerb\0b\13dumbtimr\0" \ "b\14leaseterm\0b\15readahead\0b\16deadthresh\0b\17resvport\0" \ "b\20rdirplus\0b\21readdirsize\0b\22xlatecookie\0b\23noac\0" /* * NFS internal flags (nm_iflag) */ #define NFSMNT_HASWRITEVERF 0x00000001 /* Has write verifier for V3 */ #define NFSMNT_GOTPATHCONF 0x00000002 /* Got the V3 pathconf info */ #define NFSMNT_GOTFSINFO 0x00000004 /* Got the V3 fsinfo */ #define NFSMNT_MNTD 0x00000008 /* Mnt server for mnt point */ #define NFSMNT_DISMNT 0x00000020 /* Dismounted */ #define NFSMNT_SNDLOCK 0x00000040 /* Send socket lock */ #define NFSMNT_WANTSND 0x00000080 /* Want above */ #define NFSMNT_RCVLOCK 0x00000100 /* Rcv socket lock */ #define NFSMNT_WANTRCV 0x00000200 /* Want above */ #define NFSMNT_WAITAUTH 0x00000400 /* Wait for authentication */ #define NFSMNT_HASAUTH 0x00000800 /* Has authenticator */ #define NFSMNT_WANTAUTH 0x00001000 /* Wants an authenticator */ #define NFSMNT_AUTHERR 0x00002000 /* Authentication error */ #define NFSMNT_SWAPCOOKIE 0x00004000 /* XDR encode dir cookies */ #define NFSMNT_STALEWRITEVERF 0x00008000 /* Write verifier is changing */ #define NFSMNT_WCCKLUDGE 0x00010000 /* see nfs_check_wccdata() */ #define NFSMNT_DISMNTFORCE 0x00020000 /* force unmount requested */ #if defined(_KERNEL) && !defined(NFS_ARGS_ONLY) /* * Mount structure. * One allocated on every NFS mount. * Holds NFS specific information for mount. */ struct nfsmount { kmutex_t nm_lock; /* Lock for this structure */ kcondvar_t nm_rcvcv; kcondvar_t nm_sndcv; int nm_flag; /* Flags for soft/hard... */ struct mount *nm_mountp; /* Vfs structure for this filesystem */ int nm_numgrps; /* Max. size of groupslist */ struct vnode *nm_vnode; struct socket *nm_so; /* Rpc socket */ int nm_sotype; /* Type of socket */ int nm_soproto; /* and protocol */ int nm_soflags; /* pr_flags for socket protocol */ struct mbuf *nm_nam; /* Addr of server */ int nm_timeo; /* Init timer for NFSMNT_DUMBTIMR */ int nm_retry; /* Max retries */ int nm_srtt[4]; /* Timers for rpcs */ int nm_sdrtt[4]; int nm_sent; /* Request send count */ int nm_cwnd; /* Request send window */ int nm_timeouts; /* Request timeouts */ int nm_deadthresh; /* Threshold of timeouts-->dead server*/ int nm_rsize; /* Max size of read rpc */ int nm_wsize; /* Max size of write rpc */ int nm_readdirsize; /* Size of a readdir rpc */ int nm_readahead; /* Num. of blocks to readahead */ uid_t nm_authuid; /* Uid for authenticator */ int nm_authtype; /* Authenticator type */ int nm_authlen; /* and length */ char *nm_authstr; /* Authenticator string */ char *nm_verfstr; /* and the verifier */ int nm_verflen; krwlock_t nm_writeverflock; /* lock for below */ u_char nm_writeverf[NFSX_V3WRITEVERF]; /* V3 write verifier */ NFSKERBKEY_T nm_key; /* and the session key */ int nm_numuids; /* Number of nfsuid mappings */ TAILQ_HEAD(, nfsuid) nm_uidlruhead; /* Lists of nfsuid mappings */ LIST_HEAD(, nfsuid) nm_uidhashtbl[NFS_MUIDHASHSIZ]; TAILQ_HEAD(, buf) nm_bufq; /* async io buffer queue */ int nm_bufqlen; /* number of buffers in queue */ kcondvar_t nm_aiocv; int nm_bufqiods; /* number of iods processing queue */ u_int64_t nm_maxfilesize; /* maximum file size */ int nm_iflag; /* internal flags */ int nm_waiters; /* number of waiting listeners.. */ kcondvar_t nm_disconcv; long nm_wcckludgetime; /* see nfs_check_wccdata() */ struct io_stats *nm_stats; /* per nfs mount statistics */ }; /* * Convert mount ptr to nfsmount ptr. */ #define VFSTONFS(mp) ((struct nfsmount *)((mp)->mnt_data)) /* * Prototypes for NFS mount operations */ VFS_PROTOS(nfs); int mountnfs(struct nfs_args *argp, struct mount *mp, struct mbuf *nam, const char *pth, const char *hst, struct vnode **vpp, struct lwp *p); void nfs_decode_args(struct nfsmount *, struct nfs_args *, struct lwp *l); int nfs_fsinfo(struct nfsmount *, struct vnode *, kauth_cred_t, struct lwp *); void nfs_vfs_init(void); void nfs_vfs_done(void); #endif /* _KERNEL */ #endif @ 1.52 log @Change NFS from rbtree to vcache. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.51 2011/01/22 22:26:10 matt Exp $ */ d123 1 @ 1.52.2.1 log @Pull up following revision(s) (requested by manu in ticket #882): sbin/umount/umount.c: revision 1.48 sys/nfs/nfsmount.h: revision 1.53 sys/nfs/nfs_var.h: revision 1.94 sys/nfs/nfs_iod.c: revision 1.7 sys/nfs/nfs_socket.c: revision 1.197 sys/nfs/nfs_bio.c: revision 1.191 sys/nfs/nfs_vfsops.c: revision 1.230 sys/nfs/nfs_clntsocket.c: revision 1.3 Remove useless and harmful sync(2) call in umount(8) Remove sync(2) call before unmount(2) in umount(8). This sync(2) is useless since unmount(2) will perform a VFS_SYNC anyway. But moreover, this sync(2) may be harmful, as there are some situation where it cannot return (unreachable NFS server, for instance), causing umount -f to be uneffective. Fix soft NFS force unmount For many reasons, forcibly unmounting a soft NFS mount could hang forever. Here are the fixes: - Introduce decents timeouts in operation that awaited NFS server reply. - On timeout, fails operations on soft mounts with EIO. - Introduce NFSMNT_DISMNTFORCE to let the filesystem know that a force unmount is ongoing. This causes timeouts to be reduced and prevents the NFS client to attempt reconnecting to the NFS server. Also fix a race condition where some asynchronous I/O could reference destroyed mount structures. We fix this by awaiting asynchronous I/O to drain before proceeding. Reviewed by Chuck Silvers. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.52 2014/05/30 08:47:45 hannken Exp $ */ a122 1 #define NFSMNT_DISMNTFORCE 0x00020000 /* force unmount requested */ @ 1.52.4.1 log @Sync with HEAD @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.53 2015/07/15 03:28:55 manu Exp $ */ a122 1 #define NFSMNT_DISMNTFORCE 0x00020000 /* force unmount requested */ @ 1.51 log @Add the ability to mount NFS filesystems in COMPAT_NETBSD32 If in the kernel and NFS_ARGS_ONLY, just export struct nfs_args and its flags. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.50 2010/09/25 01:42:39 matt Exp $ */ a45 1 #include a131 1 krwlock_t nm_rbtlock; /* Lock for the rbtree */ a138 1 struct rb_tree nm_rbtree; /* red/black tree by fh for nfsnode */ @ 1.51.14.1 log @Rebase to HEAD as of a few days ago. @ text @d1 1 a1 1 /* $NetBSD$ */ d46 1 d133 1 d141 1 @ 1.51.14.2 log @update from HEAD @ text @a122 1 #define NFSMNT_DISMNTFORCE 0x00020000 /* force unmount requested */ @ 1.51.28.1 log @Rebase. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.52 2014/05/30 08:47:45 hannken Exp $ */ d46 1 d133 1 d141 1 @ 1.50 log @Rename rb.h to rbtree.h, as it is more appropriate (c.f. ptree.h). Also helps find code that hasn't been updated to use the new rbtree API. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.49 2009/03/14 14:46:11 dsl Exp $ */ d40 2 a41 1 #ifdef _KERNEL d125 1 a125 1 #ifdef _KERNEL @ 1.50.2.1 log @Sync with HEAD. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.51 2011/01/22 22:26:10 matt Exp $ */ d40 1 a40 2 #if defined(_KERNEL) && !defined(NFS_ARGS_ONLY) d124 1 a124 1 #if defined(_KERNEL) && !defined(NFS_ARGS_ONLY) @ 1.50.4.1 log @Sync with HEAD @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.51 2011/01/22 22:26:10 matt Exp $ */ d40 1 a40 2 #if defined(_KERNEL) && !defined(NFS_ARGS_ONLY) d124 1 a124 1 #if defined(_KERNEL) && !defined(NFS_ARGS_ONLY) @ 1.49 log @Remove all the __P() from sys (excluding sys/dist) Diff checked with grep and MK1 eyeball. i386 and amd64 GENERIC and sys still build. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.48 2008/10/22 12:29:35 matt Exp $ */ d45 1 a45 1 #include @ 1.49.4.1 log @sync with head @ text @d1 1 a1 1 /* $NetBSD$ */ d40 1 a40 2 #if defined(_KERNEL) && !defined(NFS_ARGS_ONLY) d45 1 a45 1 #include d124 1 a124 1 #if defined(_KERNEL) && !defined(NFS_ARGS_ONLY) @ 1.49.2.1 log @Sync with HEAD (-D20101022). @ text @d1 1 a1 1 /* $NetBSD$ */ d45 1 a45 1 #include @ 1.48 log @Don't need nfs_vfs_reinit anymore since we don't resize tables anymore. Move reinit code to init case. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.47 2008/10/22 11:36:06 matt Exp $ */ d191 1 a191 1 int mountnfs __P((struct nfs_args *argp, struct mount *mp, d193 5 a197 5 struct vnode **vpp, struct lwp *p)); void nfs_decode_args __P((struct nfsmount *, struct nfs_args *, struct lwp *l)); int nfs_fsinfo __P((struct nfsmount *, struct vnode *, kauth_cred_t, struct lwp *)); d199 2 a200 2 void nfs_vfs_init __P((void)); void nfs_vfs_done __P((void)); @ 1.48.8.1 log @Sync with HEAD. Commit is split, to avoid a "too many arguments" protocol error. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.49 2009/03/14 14:46:11 dsl Exp $ */ d191 1 a191 1 int mountnfs(struct nfs_args *argp, struct mount *mp, d193 5 a197 5 struct vnode **vpp, struct lwp *p); void nfs_decode_args(struct nfsmount *, struct nfs_args *, struct lwp *l); int nfs_fsinfo(struct nfsmount *, struct vnode *, kauth_cred_t, struct lwp *); d199 2 a200 2 void nfs_vfs_init(void); void nfs_vfs_done(void); @ 1.48.2.1 log @Sync with HEAD. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.49 2009/03/14 14:46:11 dsl Exp $ */ d191 1 a191 1 int mountnfs(struct nfs_args *argp, struct mount *mp, d193 5 a197 5 struct vnode **vpp, struct lwp *p); void nfs_decode_args(struct nfsmount *, struct nfs_args *, struct lwp *l); int nfs_fsinfo(struct nfsmount *, struct vnode *, kauth_cred_t, struct lwp *); d199 2 a200 2 void nfs_vfs_init(void); void nfs_vfs_done(void); @ 1.47 log @Change NFS to use a RB-tree for its FH->nfsnode lookups. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.46 2007/07/31 21:14:19 pooka Exp $ */ a199 1 void nfs_vfs_reinit __P((void)); @ 1.46 log @* nuke the nameidata parameter from VFS_MOUNT(). Nobody on tech-kern knew what it was supposed to be used for and wrstuden gave a go-ahead * while rototilling, convert file systems which went easily to use VFS_PROTOS() instead of manually prototyping the methods @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.45 2007/07/12 19:35:36 dsl Exp $ */ d45 1 d132 1 d138 1 a138 1 struct vnode *nm_vnode; d140 1 @ 1.46.36.1 log @file nfsmount.h was added on branch matt-mips64 on 2007-07-31 21:14:20 +0000 @ text @d1 202 @ 1.46.36.2 log @* nuke the nameidata parameter from VFS_MOUNT(). Nobody on tech-kern knew what it was supposed to be used for and wrstuden gave a go-ahead * while rototilling, convert file systems which went easily to use VFS_PROTOS() instead of manually prototyping the methods @ text @a0 202 /* $NetBSD: nfsmount.h,v 1.46 2007/07/31 21:14:19 pooka Exp $ */ /* * Copyright (c) 1989, 1993 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Rick Macklem at The University of Guelph. * * 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 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. * * @@(#)nfsmount.h 8.3 (Berkeley) 3/30/95 */ #ifndef _NFS_NFSMOUNT_H_ #define _NFS_NFSMOUNT_H_ #ifdef _KERNEL #include #include #include #include #endif /* * Arguments to mount NFS */ #define NFS_ARGSVERSION 3 /* change when nfs_args changes */ struct nfs_args { int version; /* args structure version number */ struct sockaddr *addr; /* file server address */ int addrlen; /* length of address */ int sotype; /* Socket type */ int proto; /* and Protocol */ u_char *fh; /* File handle to be mounted */ int fhsize; /* Size, in bytes, of fh */ int flags; /* flags */ int wsize; /* write size in bytes */ int rsize; /* read size in bytes */ int readdirsize; /* readdir size in bytes */ int timeo; /* initial timeout in .1 secs */ int retrans; /* times to retry send */ int maxgrouplist; /* Max. size of group list */ int readahead; /* # of blocks to readahead */ int leaseterm; /* Ignored; Term (sec) of lease */ int deadthresh; /* Retrans threshold */ char *hostname; /* server's name */ }; /* * NFS mount option flags (nm_flag) */ #define NFSMNT_SOFT 0x00000001 /* soft mount (hard is default) */ #define NFSMNT_WSIZE 0x00000002 /* set write size */ #define NFSMNT_RSIZE 0x00000004 /* set read size */ #define NFSMNT_TIMEO 0x00000008 /* set initial timeout */ #define NFSMNT_RETRANS 0x00000010 /* set number of request retries */ #define NFSMNT_MAXGRPS 0x00000020 /* set maximum grouplist size */ #define NFSMNT_INT 0x00000040 /* allow interrupts on hard mount */ #define NFSMNT_NOCONN 0x00000080 /* Don't Connect the socket */ #define NFSMNT_NQNFS 0x00000100 /* Use Nqnfs protocol */ #define NFSMNT_NFSV3 0x00000200 /* Use NFS Version 3 protocol */ #define NFSMNT_KERB 0x00000400 /* Use Kerberos authentication */ #define NFSMNT_DUMBTIMR 0x00000800 /* Don't estimate rtt dynamically */ #define NFSMNT_LEASETERM 0x00001000 /* Ignored; lease term (nqnfs) */ #define NFSMNT_READAHEAD 0x00002000 /* set read ahead */ #define NFSMNT_DEADTHRESH 0x00004000 /* set dead server retry thresh */ #define NFSMNT_RESVPORT 0x00008000 /* Allocate a reserved port */ #define NFSMNT_RDIRPLUS 0x00010000 /* Use Readdirplus for V3 */ #define NFSMNT_READDIRSIZE 0x00020000 /* Set readdir size */ #define NFSMNT_XLATECOOKIE 0x00040000 /* 32<->64 dir cookie xlation */ #define NFSMNT_NOAC 0x00080000 /* Turn off attribute cache */ #define NFSMNT_BITS "\177\20" \ "b\00soft\0b\01wsize\0b\02rsize\0b\03timeo\0" \ "b\04retrans\0b\05maxgrps\0b\06intr\0b\07noconn\0" \ "b\10nqnfs\0b\11nfsv3\0b\12kerb\0b\13dumbtimr\0" \ "b\14leaseterm\0b\15readahead\0b\16deadthresh\0b\17resvport\0" \ "b\20rdirplus\0b\21readdirsize\0b\22xlatecookie\0b\23noac\0" /* * NFS internal flags (nm_iflag) */ #define NFSMNT_HASWRITEVERF 0x00000001 /* Has write verifier for V3 */ #define NFSMNT_GOTPATHCONF 0x00000002 /* Got the V3 pathconf info */ #define NFSMNT_GOTFSINFO 0x00000004 /* Got the V3 fsinfo */ #define NFSMNT_MNTD 0x00000008 /* Mnt server for mnt point */ #define NFSMNT_DISMNT 0x00000020 /* Dismounted */ #define NFSMNT_SNDLOCK 0x00000040 /* Send socket lock */ #define NFSMNT_WANTSND 0x00000080 /* Want above */ #define NFSMNT_RCVLOCK 0x00000100 /* Rcv socket lock */ #define NFSMNT_WANTRCV 0x00000200 /* Want above */ #define NFSMNT_WAITAUTH 0x00000400 /* Wait for authentication */ #define NFSMNT_HASAUTH 0x00000800 /* Has authenticator */ #define NFSMNT_WANTAUTH 0x00001000 /* Wants an authenticator */ #define NFSMNT_AUTHERR 0x00002000 /* Authentication error */ #define NFSMNT_SWAPCOOKIE 0x00004000 /* XDR encode dir cookies */ #define NFSMNT_STALEWRITEVERF 0x00008000 /* Write verifier is changing */ #define NFSMNT_WCCKLUDGE 0x00010000 /* see nfs_check_wccdata() */ #ifdef _KERNEL /* * Mount structure. * One allocated on every NFS mount. * Holds NFS specific information for mount. */ struct nfsmount { kmutex_t nm_lock; /* Lock for this structure */ kcondvar_t nm_rcvcv; kcondvar_t nm_sndcv; int nm_flag; /* Flags for soft/hard... */ struct mount *nm_mountp; /* Vfs structure for this filesystem */ int nm_numgrps; /* Max. size of groupslist */ struct vnode *nm_vnode; struct socket *nm_so; /* Rpc socket */ int nm_sotype; /* Type of socket */ int nm_soproto; /* and protocol */ int nm_soflags; /* pr_flags for socket protocol */ struct mbuf *nm_nam; /* Addr of server */ int nm_timeo; /* Init timer for NFSMNT_DUMBTIMR */ int nm_retry; /* Max retries */ int nm_srtt[4]; /* Timers for rpcs */ int nm_sdrtt[4]; int nm_sent; /* Request send count */ int nm_cwnd; /* Request send window */ int nm_timeouts; /* Request timeouts */ int nm_deadthresh; /* Threshold of timeouts-->dead server*/ int nm_rsize; /* Max size of read rpc */ int nm_wsize; /* Max size of write rpc */ int nm_readdirsize; /* Size of a readdir rpc */ int nm_readahead; /* Num. of blocks to readahead */ uid_t nm_authuid; /* Uid for authenticator */ int nm_authtype; /* Authenticator type */ int nm_authlen; /* and length */ char *nm_authstr; /* Authenticator string */ char *nm_verfstr; /* and the verifier */ int nm_verflen; krwlock_t nm_writeverflock; /* lock for below */ u_char nm_writeverf[NFSX_V3WRITEVERF]; /* V3 write verifier */ NFSKERBKEY_T nm_key; /* and the session key */ int nm_numuids; /* Number of nfsuid mappings */ TAILQ_HEAD(, nfsuid) nm_uidlruhead; /* Lists of nfsuid mappings */ LIST_HEAD(, nfsuid) nm_uidhashtbl[NFS_MUIDHASHSIZ]; TAILQ_HEAD(, buf) nm_bufq; /* async io buffer queue */ int nm_bufqlen; /* number of buffers in queue */ kcondvar_t nm_aiocv; int nm_bufqiods; /* number of iods processing queue */ u_int64_t nm_maxfilesize; /* maximum file size */ int nm_iflag; /* internal flags */ int nm_waiters; /* number of waiting listeners.. */ kcondvar_t nm_disconcv; long nm_wcckludgetime; /* see nfs_check_wccdata() */ struct io_stats *nm_stats; /* per nfs mount statistics */ }; /* * Convert mount ptr to nfsmount ptr. */ #define VFSTONFS(mp) ((struct nfsmount *)((mp)->mnt_data)) /* * Prototypes for NFS mount operations */ VFS_PROTOS(nfs); int mountnfs __P((struct nfs_args *argp, struct mount *mp, struct mbuf *nam, const char *pth, const char *hst, struct vnode **vpp, struct lwp *p)); void nfs_decode_args __P((struct nfsmount *, struct nfs_args *, struct lwp *l)); int nfs_fsinfo __P((struct nfsmount *, struct vnode *, kauth_cred_t, struct lwp *)); void nfs_vfs_init __P((void)); void nfs_vfs_reinit __P((void)); void nfs_vfs_done __P((void)); #endif /* _KERNEL */ #endif @ 1.46.24.1 log @Sync with HEAD. @ text @d1 1 a1 1 /* $NetBSD$ */ a44 1 #include a130 1 krwlock_t nm_rbtlock; /* Lock for the rbtree */ d136 1 a136 1 struct vnode *nm_vnode; a137 1 struct rb_tree nm_rbtree; /* red/black tree by fh for nfsnode */ d197 1 @ 1.46.34.1 log @Update haad-dm branch to haad-dm-base2. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.48 2008/10/22 12:29:35 matt Exp $ */ a44 1 #include a130 1 krwlock_t nm_rbtlock; /* Lock for the rbtree */ d136 1 a136 1 struct vnode *nm_vnode; a137 1 struct rb_tree nm_rbtree; /* red/black tree by fh for nfsnode */ d197 1 @ 1.46.28.1 log @commit some work-in-progress changes to make nfs client mp-safe to a branch, so that they won't get lost. - sprinkle some locking - mark the filesystem, nfstimer callout, and kq kthread mp-safe - add assertions and comments - disable upgrade mount for now - some unrelated cosmetic changes @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.46 2007/07/31 21:14:19 pooka Exp $ */ d111 4 a127 3 * * R: nfs_reqq_lock * S: nm_solock a130 2 lwp_t *nm_rcvlwp; lwp_t *nm_sndlwp; d137 4 a140 5 krwlock_t nm_solock; struct socket *nm_so; /* S: Rpc socket */ int nm_sotype; /* S: Type of socket */ int nm_soproto; /* S: and protocol */ int nm_soflags; /* S: pr_flags for socket protocol */ d146 3 a148 3 int nm_sent; /* R: Request send count */ int nm_cwnd; /* R: Request send window */ int nm_timeouts; /* R: Request timeouts */ @ 1.46.28.2 log @sync with head. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.46.28.1 2008/04/27 12:52:50 yamt Exp $ */ a44 1 #include a131 1 krwlock_t nm_rbtlock; /* Lock for the rbtree */ a139 1 struct rb_tree nm_rbtree; /* red/black tree by fh for nfsnode */ d190 1 a190 1 int mountnfs(struct nfs_args *argp, struct mount *mp, d192 9 a200 8 struct vnode **vpp, struct lwp *p); void nfs_decode_args(struct nfsmount *, struct nfs_args *, struct lwp *l); int nfs_fsinfo(struct nfsmount *, struct vnode *, kauth_cred_t, struct lwp *); void nfs_vfs_init(void); void nfs_vfs_done(void); @ 1.46.28.3 log @remove sndlock. it's superseded by nm_solock. suggested by Andrew Doran. @ text @d1 1 a1 1 /* $NetBSD$ */ d132 1 @ 1.46.28.4 log @sync with head @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.46.28.3 2009/07/16 16:43:15 yamt Exp $ */ d45 1 a45 1 #include @ 1.45 log @Change the VFS_MOUNT() interface so that the 'data' buffer passed to the fs code is a kernel buffer, pass though the length of the buffer as well. Since the length of the userspace buffer isn'it (yet) passed through the mount system call, add a field to the vfsops structure containing the default length. Split sys_mount() for calls from compat code. Ride one of the recent kernel version changes - old fs LKMs will load, but sys_mount() will reject any attempt to use them. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.44 2007/04/29 14:57:00 yamt Exp $ */ d186 2 a187 2 int nfs_mount __P((struct mount *mp, const char *path, void *data, size_t *, struct nameidata *ndp, struct lwp *l)); a190 1 int nfs_mountroot __P((void)); a192 11 int nfs_start __P((struct mount *mp, int flags, struct lwp *l)); int nfs_unmount __P((struct mount *mp, int mntflags, struct lwp *l)); int nfs_root __P((struct mount *mp, struct vnode **vpp)); int nfs_quotactl __P((struct mount *mp, int cmds, uid_t uid, void *arg, struct lwp *l)); int nfs_statvfs __P((struct mount *mp, struct statvfs *sbp, struct lwp *l)); int nfs_sync __P((struct mount *mp, int waitfor, kauth_cred_t cred, struct lwp *p)); int nfs_vget __P((struct mount *, ino_t, struct vnode **)); int nfs_fhtovp __P((struct mount *mp, struct fid *fhp, struct vnode **vpp)); int nfs_vptofh __P((struct vnode *vp, struct fid *fhp, size_t *fh_size)); d195 1 @ 1.45.2.1 log @Sync with HEAD. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.46 2007/07/31 21:14:19 pooka Exp $ */ d186 2 a187 2 VFS_PROTOS(nfs); d191 1 d194 11 a206 1 @ 1.44 log @use condvar. @ text @d1 1 a1 1 /* $NetBSD$ */ d186 1 a186 1 int nfs_mount __P((struct mount *mp, const char *path, void *data, @ 1.43 log @use mutex and condver. @ text @d173 1 @ 1.42 log @use mutex and rwlock rather than lockmgr. @ text @d41 1 d43 1 d130 3 a132 1 struct simplelock nm_slock; /* Lock for this structure */ d167 2 a168 2 short nm_bufqlen; /* number of buffers in queue */ short nm_bufqwant; /* process wants to add to the queue */ @ 1.42.8.1 log @Sync with head. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.44 2007/04/29 14:57:00 yamt Exp $ */ a40 1 #include a41 1 #include d128 1 a128 3 kmutex_t nm_lock; /* Lock for this structure */ kcondvar_t nm_rcvcv; kcondvar_t nm_sndcv; d163 2 a164 2 int nm_bufqlen; /* number of buffers in queue */ kcondvar_t nm_aiocv; a168 1 kcondvar_t nm_disconcv; @ 1.42.2.1 log @sync with head. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.42 2007/02/15 16:01:51 yamt Exp $ */ a40 1 #include a41 1 #include d128 1 a128 3 kmutex_t nm_lock; /* Lock for this structure */ kcondvar_t nm_rcvcv; kcondvar_t nm_sndcv; d163 2 a164 2 int nm_bufqlen; /* number of buffers in queue */ kcondvar_t nm_aiocv; a168 1 kcondvar_t nm_disconcv; @ 1.42.6.1 log @Pull in the initial set of changes for the vmlocking branch. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.42 2007/02/15 16:01:51 yamt Exp $ */ d128 1 a128 1 kmutex_t nm_lock; /* Lock for this structure */ @ 1.42.6.2 log @Sync with head. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.42.6.1 2007/03/13 17:51:17 ad Exp $ */ a40 1 #include a41 1 #include a128 2 kcondvar_t nm_rcvcv; kcondvar_t nm_sndcv; d163 2 a164 2 int nm_bufqlen; /* number of buffers in queue */ kcondvar_t nm_aiocv; a168 1 kcondvar_t nm_disconcv; @ 1.42.6.3 log @Sync with head. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.42.6.2 2007/06/08 14:18:08 ad Exp $ */ d186 1 a186 1 int nfs_mount __P((struct mount *mp, const char *path, void *data, size_t *, @ 1.42.6.4 log @Sync with HEAD. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.42.6.3 2007/07/15 13:28:07 ad Exp $ */ d186 2 a187 2 VFS_PROTOS(nfs); d191 1 d194 11 a206 1 @ 1.41 log @remove nqnfs. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.40 2006/07/13 12:00:26 martin Exp $ */ d41 1 d156 1 a156 1 struct lock nm_writeverflock; /* lock for below */ @ 1.40 log @Fix alignement problems for fhandle_t, exposed by gcc4.1. While touching all vptofh/fhtovp functions, get rid of VFS_MAXFIDSIZ, version the getfh(2) syscall and explicitly pass the size available in the filehandle from userland. Discussed on tech-kern, with lots of help from yamt (thanks!). @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.39 2006/05/14 21:32:21 elad Exp $ */ d64 1 a64 1 int leaseterm; /* Term (sec) of lease */ d84 1 a84 1 #define NFSMNT_LEASETERM 0x00001000 /* set lease term (nqnfs) */ a106 1 #define NFSMNT_DISMINPROG 0x00000010 /* Dismount in progress */ a148 3 int nm_leaseterm; /* Term (sec) for NQNFS lease */ CIRCLEQ_HEAD(, nfsnode) nm_timerhead; /* Head of lease timer queue */ struct vnode *nm_inprog; /* Vnode in prog by nqnfs_clientd() */ @ 1.40.4.1 log @Sync with head. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.41 2006/12/27 12:10:09 yamt Exp $ */ d64 1 a64 1 int leaseterm; /* Ignored; Term (sec) of lease */ d84 1 a84 1 #define NFSMNT_LEASETERM 0x00001000 /* Ignored; lease term (nqnfs) */ d107 1 d150 3 @ 1.39 log @integrate kauth. @ text @d1 1 a1 1 /* $NetBSD$ */ d202 1 a202 1 int nfs_vptofh __P((struct vnode *vp, struct fid *fhp)); @ 1.39.4.1 log @Merge from HEAD. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.40 2006/07/13 12:00:26 martin Exp $ */ d202 1 a202 1 int nfs_vptofh __P((struct vnode *vp, struct fid *fhp, size_t *fh_size)); @ 1.38 log @Make i/o statistics collection more generic, include tape drives and nfs mounts in the set of devices that statistics will be reported on. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.37 2005/12/11 12:25:17 christos Exp $ */ d198 1 a198 1 int nfs_sync __P((struct mount *mp, int waitfor, struct ucred *cred, d203 1 a203 1 int nfs_fsinfo __P((struct nfsmount *, struct vnode *, struct ucred *, @ 1.37 log @merge ktrace-lwp. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.36 2005/11/25 20:01:38 thorpej Exp $ */ d40 3 d173 1 @ 1.37.4.1 log @sync with head @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.40 2006/07/13 12:00:26 martin Exp $ */ a39 3 #ifdef _KERNEL #include #endif a169 1 struct io_stats *nm_stats; /* per nfs mount statistics */ d194 1 a194 1 int nfs_sync __P((struct mount *mp, int waitfor, kauth_cred_t cred, d198 2 a199 2 int nfs_vptofh __P((struct vnode *vp, struct fid *fhp, size_t *fh_size)); int nfs_fsinfo __P((struct nfsmount *, struct vnode *, kauth_cred_t, @ 1.37.12.1 log @Merge 2006-05-24 NetBSD-current into the "peter-altq" branch. @ text @d1 1 a1 1 /* $NetBSD$ */ a39 3 #ifdef _KERNEL #include #endif a169 1 struct io_stats *nm_stats; /* per nfs mount statistics */ d194 1 a194 1 int nfs_sync __P((struct mount *mp, int waitfor, kauth_cred_t cred, d199 1 a199 1 int nfs_fsinfo __P((struct nfsmount *, struct vnode *, kauth_cred_t, @ 1.37.8.1 log @sync with head. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.37 2005/12/11 12:25:17 christos Exp $ */ a39 3 #ifdef _KERNEL #include #endif a169 1 struct io_stats *nm_stats; /* per nfs mount statistics */ d194 1 a194 1 int nfs_sync __P((struct mount *mp, int waitfor, kauth_cred_t cred, d199 1 a199 1 int nfs_fsinfo __P((struct nfsmount *, struct vnode *, kauth_cred_t, @ 1.37.8.2 log @sync with head @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.37.8.1 2006/05/24 10:59:15 yamt Exp $ */ d202 1 a202 1 int nfs_vptofh __P((struct vnode *vp, struct fid *fhp, size_t *fh_size)); @ 1.37.6.1 log @Sync with head. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.38 2006/04/14 13:09:07 blymn Exp $ */ a39 3 #ifdef _KERNEL #include #endif a169 1 struct io_stats *nm_stats; /* per nfs mount statistics */ @ 1.37.6.2 log @Sync with head. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.37.6.1 2006/04/22 11:40:16 simonb Exp $ */ d198 1 a198 1 int nfs_sync __P((struct mount *mp, int waitfor, kauth_cred_t cred, d203 1 a203 1 int nfs_fsinfo __P((struct nfsmount *, struct vnode *, kauth_cred_t, @ 1.37.10.1 log @Adapt to kernel authorization KPI. This could use some testing... @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.37 2005/12/11 12:25:17 christos Exp $ */ d194 1 a194 1 int nfs_sync __P((struct mount *mp, int waitfor, kauth_cred_t cred, d199 1 a199 1 int nfs_fsinfo __P((struct nfsmount *, struct vnode *, kauth_cred_t, @ 1.37.10.2 log @sync with head. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.37.10.1 2006/03/08 01:06:28 elad Exp $ */ a39 3 #ifdef _KERNEL #include #endif a169 1 struct io_stats *nm_stats; /* per nfs mount statistics */ @ 1.36 log @Use a once control to initialize the NFS server / client shared data from nfs_vfs_init() or sys_nfssvc(). Remove the nfs_init() call from main(). @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.35 2005/09/23 12:10:33 jmmv Exp $ */ d181 1 a181 1 struct nameidata *ndp, struct proc *p)); d184 1 a184 1 struct vnode **vpp, struct proc *p)); d187 3 a189 3 struct proc *p)); int nfs_start __P((struct mount *mp, int flags, struct proc *p)); int nfs_unmount __P((struct mount *mp, int mntflags, struct proc *p)); d192 2 a193 2 struct proc *p)); int nfs_statvfs __P((struct mount *mp, struct statvfs *sbp, struct proc *p)); d195 1 a195 1 struct proc *p)); d200 1 a200 1 struct proc *)); @ 1.35 log @Apply the NFS exports list rototill patch: - Remove all NFS related stuff from file system specific code. - Drop the vfs_checkexp hook and generalize it in the new nfs_check_export function, thus removing redundancy from all file systems. - Move all NFS export-related stuff from kern/vfs_subr.c to the new file sys/nfs/nfs_export.c. The former was becoming large and its code is always compiled, regardless of the build options. Using the latter, the code is only compiled in when NFSSERVER is enabled. While doing this, also make some functions in nfs_subs.c conditional to NFSSERVER. - Add a new command in nfssvc(2), called NFSSVC_SETEXPORTSLIST, that takes a path and a set of export entries. At the moment it can only clear the exports list or append entries, one by one, but it is done in a way that allows setting the whole set of entries atomically in the future (see the comment in mountd_set_exports_list or in doc/TODO). - Change mountd(8) to use the nfssvc(2) system call instead of mount(2) so that it becomes file system agnostic. In fact, all this whole thing was done to remove a 'XXX' block from this utility! - Change the mount*, newfs and fsck* userland utilities to not deal with NFS exports initialization; done internally by the kernel when initializing the NFS support for each file system. - Implement an interface for VFS (called VFS hooks) so that several kernel subsystems can run arbitrary code upon receipt of specific VFS events. At the moment, this only provides support for unmount and is used to destroy NFS exports lists from the file systems being unmounted, though it has room for extension. Thanks go to yamt@@, chs@@, thorpej@@, wrstuden@@ and others for their comments and advice in the development of this patch. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.34 2005/09/18 23:44:54 christos Exp $ */ a204 5 /* * Prototypes for miscellaneous exported NFS functions. */ void nfs_init __P((void)); @ 1.35.6.1 log @sync with head. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.35 2005/09/23 12:10:33 jmmv Exp $ */ d205 5 @ 1.34 log @Allow turning off the attribute cache. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.33 2005/01/19 16:22:19 yamt Exp $ */ a197 2 int nfs_checkexp __P((struct mount *mp, struct mbuf *nam, int *exflagsp, struct ucred **credanonp)); @ 1.33 log @implement inaccurate mtime/ctime detection. namely, if mtime or ctime are same between pre_op_attr and post_op_attr when we expected them to be changed, don't trust the server. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.32 2004/05/22 22:52:16 jonathan Exp $ */ d88 1 d95 1 a95 1 "b\20rdirplus\0b\21readdirsize\0b\22xlatecookie\0" @ 1.33.8.1 log @sync with head. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.33 2005/01/19 16:22:19 yamt Exp $ */ a39 3 #ifdef _KERNEL #include #endif a87 1 #define NFSMNT_NOAC 0x00080000 /* Turn off attribute cache */ d94 1 a94 1 "b\20rdirplus\0b\21readdirsize\0b\22xlatecookie\0b\23noac\0" a168 1 struct io_stats *nm_stats; /* per nfs mount statistics */ d180 1 a180 1 struct nameidata *ndp, struct lwp *l)); d183 1 a183 1 struct vnode **vpp, struct lwp *p)); d186 3 a188 3 struct lwp *l)); int nfs_start __P((struct mount *mp, int flags, struct lwp *l)); int nfs_unmount __P((struct mount *mp, int mntflags, struct lwp *l)); d191 4 a194 4 struct lwp *l)); int nfs_statvfs __P((struct mount *mp, struct statvfs *sbp, struct lwp *l)); int nfs_sync __P((struct mount *mp, int waitfor, kauth_cred_t cred, struct lwp *p)); d197 2 d200 2 a201 2 int nfs_fsinfo __P((struct nfsmount *, struct vnode *, kauth_cred_t, struct lwp *)); d206 5 @ 1.33.8.2 log @sync with head. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.33.8.1 2006/06/21 15:11:59 yamt Exp $ */ d64 1 a64 1 int leaseterm; /* Ignored; Term (sec) of lease */ d84 1 a84 1 #define NFSMNT_LEASETERM 0x00001000 /* Ignored; lease term (nqnfs) */ d107 1 d150 3 d202 1 a202 1 int nfs_vptofh __P((struct vnode *vp, struct fid *fhp, size_t *fh_size)); @ 1.33.8.3 log @sync with head. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.33.8.2 2006/12/30 20:50:52 yamt Exp $ */ a40 1 #include d155 1 a155 1 krwlock_t nm_writeverflock; /* lock for below */ @ 1.33.8.4 log @sync with head. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.33.8.3 2007/02/26 09:12:07 yamt Exp $ */ a40 1 #include a41 1 #include d128 1 a128 3 kmutex_t nm_lock; /* Lock for this structure */ kcondvar_t nm_rcvcv; kcondvar_t nm_sndcv; d163 2 a164 2 int nm_bufqlen; /* number of buffers in queue */ kcondvar_t nm_aiocv; a168 1 kcondvar_t nm_disconcv; d181 2 a182 2 VFS_PROTOS(nfs); d186 1 d189 11 a201 1 @ 1.33.6.1 log @Pull up following revision(s) (requested by christos in ticket #816): sys/nfs/nfs.h: revision 1.49 sys/nfs/nfsmount.h: revision 1.34 Allow turning off the attribute cache. @ text @d1 1 a1 1 /* $NetBSD$ */ a87 1 #define NFSMNT_NOAC 0x00080000 /* Turn off attribute cache */ d94 1 a94 1 "b\20rdirplus\0b\21readdirsize\0b\22xlatecookie\0b\23noac\0" @ 1.32 log @Eliminate several uses of `curproc' from the socket-layer code and from NFS. Add a new explicit `struct proc *p' argument to socreate(), sosend(). Use that argument instead of curproc. Follow-on changes to pass that argument to socreate(), sosend(), and (*so->so_send)() calls. These changes reviewed and independently recoded by Matt Thomas. Changes to soreceive() and (*dom->dom_exernalize() from Matt Thomas: pass soreceive()'s struct uio* uio->uio_procp to unp_externalize(). Eliminate curproc from unp_externalize. Also, now soreceive() uses its uio->uio_procp value, pass that same value downward to ((pr->pru_usrreq)() calls for consistency, instead of (struct proc * )0. Similar changes in sys/nfs to eliminate (most) uses of curproc, either via the req-> r_procp field of a struct nfsreq *req argument, or by passing down new explicit struct proc * arguments. Reviewed by: Matt Thomas, posted to tech-kern. NB: The (*pr->pru_usrreq)() change should be tested on more (all!) protocols. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.31 2004/04/27 17:37:31 jrf Exp $ */ d115 1 d168 1 @ 1.32.4.1 log @sync with -current @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.33 2005/01/19 16:22:19 yamt Exp $ */ a114 1 #define NFSMNT_WCCKLUDGE 0x00010000 /* see nfs_check_wccdata() */ a166 1 long nm_wcckludgetime; /* see nfs_check_wccdata() */ @ 1.31 log @First pass for some caddr_t removal and changes to get rid of it where we no longer use and/or need it - removed casts from unionfs, deadfs and fdesc (there are more to hunt down still) - changed vfs_quotactl args argumet from caddr_t to void * - changed vfs_quotactl structures/callers to reflect the api change Compiled fine and ran for about a day. Approved/reviewed by christos@@netbsd.org and gimpy@@netbsd.org. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.30 2004/04/21 01:05:43 christos Exp $ */ d183 2 a184 1 void nfs_decode_args __P((struct nfsmount *, struct nfs_args *)); @ 1.30 log @Replace the statfs() family of system calls with statvfs(). Retain binary compatibility. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.29 2003/10/03 16:34:31 yamt Exp $ */ d187 1 a187 1 int nfs_quotactl __P((struct mount *mp, int cmds, uid_t uid, caddr_t arg, @ 1.29 log @terminate snprintb 'new' format strings correctly. (fixes overrun in mount_*) @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.28 2003/08/07 16:33:56 agc Exp $ */ d189 1 a189 1 int nfs_statfs __P((struct mount *mp, struct statfs *sbp, struct proc *p)); @ 1.29.4.1 log @Pull up following revision(s) (requested by christos in ticket #5863): sys/nfs/nfs_subs.c: revision 1.152 via patch sys/nfs/nfs.h: revision 1.49 sys/nfs/nfs_vfsops.c: revision 1.149 via patch usr.sbin/amd/include/config.h: revision 1.36 sys/nfs/nfs_vnops.c: revision 1.227 via patch sys/nfs/nfsmount.h: revision 1.34 Allow the attribute cache to be turned off, and allow amd to do it. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.29 2003/10/03 16:34:31 yamt Exp $ */ a87 1 #define NFSMNT_NOAC 0x00080000 /* Turn off attribute cache */ d94 1 a94 1 "b\20rdirplus\0b\21readdirsize\0b\22xlatecookie\0b\23noac\0" @ 1.28 log @Move UCB-licensed code from 4-clause to 3-clause licence. Patches provided by Joel Baker in PR 22364, verified by myself. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.27 2003/06/29 22:32:21 fvdl Exp $ */ d94 1 a94 1 "b\20rdirplus\0b\21readdirsize\0b\22xlatecookie" @ 1.27 log @Back out the lwp/ktrace changes. They contained a lot of colateral damage, and need to be examined and discussed more. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.24 2003/05/03 16:28:59 yamt Exp $ */ d18 1 a18 5 * 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 @ 1.27.2.1 log @Apply the aborted ktrace-lwp changes to a specific branch. This is just for others to review, I'm concerned that patch fuziness may have resulted in some errant code being generated but I'll look at that later by comparing the diff from the base to the branch with the file I attempt to apply to it. This will, at the very least, put the changes in a better context for others to review them and attempt to tinker with removing passing of 'struct lwp' through the kernel. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.27 2003/06/29 22:32:21 fvdl Exp $ */ d182 1 a182 1 struct nameidata *ndp, struct lwp *p)); d185 1 a185 1 struct vnode **vpp, struct lwp *p)); d188 3 a190 3 int nfs_start __P((struct mount *mp, int flags, struct lwp *p)); int nfs_unmount __P((struct mount *mp, int mntflags, struct lwp *p)); int nfs_root __P((struct mount *mp, struct vnode **vpp, struct lwp *)); d192 2 a193 2 struct lwp *l)); int nfs_statfs __P((struct mount *mp, struct statfs *sbp, struct lwp *p)); d195 3 a197 3 struct lwp *p)); int nfs_vget __P((struct mount *, ino_t, struct vnode **, struct lwp *)); int nfs_fhtovp __P((struct mount *mp, struct fid *fhp, struct vnode **vpp, struct lwp *)); d202 1 a202 1 struct lwp *)); @ 1.27.2.2 log @Sync with HEAD @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.27.2.1 2003/07/02 15:27:13 darrenr Exp $ */ d18 5 a22 1 * 3. Neither the name of the University nor the names of its contributors d98 1 a98 1 "b\20rdirplus\0b\21readdirsize\0b\22xlatecookie\0" d187 5 a191 1 void nfs_decode_args __P((struct nfsmount *, struct nfs_args *, d193 1 a193 6 int nfs_start __P((struct mount *mp, int flags, struct lwp *l)); int nfs_unmount __P((struct mount *mp, int mntflags, struct lwp *l)); int nfs_root __P((struct mount *mp, struct vnode **vpp, struct lwp *l)); int nfs_quotactl __P((struct mount *mp, int cmds, uid_t uid, void *arg, struct lwp *l)); int nfs_statvfs __P((struct mount *mp, struct statvfs *sbp, struct lwp *l)); @ 1.27.2.3 log @Undo part of the ktrace/lwp changes. In particular: * Remove the "lwp *" argument that was added to vget(). Turns out that nothing actually used it! * Remove the "lwp *" arguments that were added to VFS_ROOT(), VFS_VGET(), and VFS_FHTOVP(); all they did was pass it to vget() (which, as noted above, didn't use it). * Remove all of the "lwp *" arguments to internal functions that were added just to appease the above. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.27.2.2 2004/08/03 10:56:24 skrll Exp $ */ d187 1 a187 1 int nfs_root __P((struct mount *mp, struct vnode **vpp)); d193 2 a194 2 int nfs_vget __P((struct mount *, ino_t, struct vnode **)); int nfs_fhtovp __P((struct mount *mp, struct fid *fhp, struct vnode **vpp)); @ 1.27.2.4 log @Sync with HEAD. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.32 2004/05/22 22:52:16 jonathan Exp $ */ d178 1 a178 1 struct nameidata *ndp, struct proc *p)); d181 1 a181 1 struct vnode **vpp, struct proc *p)); d184 3 a186 3 struct proc *p)); int nfs_start __P((struct mount *mp, int flags, struct proc *p)); int nfs_unmount __P((struct mount *mp, int mntflags, struct proc *p)); d189 2 a190 2 struct proc *p)); int nfs_statvfs __P((struct mount *mp, struct statvfs *sbp, struct proc *p)); d192 1 a192 1 struct proc *p)); d199 1 a199 1 struct proc *)); @ 1.27.2.5 log @Fix the sync with head I botched. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.27.2.3 2004/08/24 17:57:41 skrll Exp $ */ d178 1 a178 1 struct nameidata *ndp, struct lwp *p)); d181 1 a181 1 struct vnode **vpp, struct lwp *p)); d184 3 a186 3 struct lwp *l)); int nfs_start __P((struct mount *mp, int flags, struct lwp *l)); int nfs_unmount __P((struct mount *mp, int mntflags, struct lwp *l)); d189 2 a190 2 struct lwp *l)); int nfs_statvfs __P((struct mount *mp, struct statvfs *sbp, struct lwp *l)); d192 1 a192 1 struct lwp *p)); d199 1 a199 1 struct lwp *)); @ 1.27.2.6 log @s/p/l/ for the struct lwp * arg. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.27.2.5 2004/09/21 13:38:44 skrll Exp $ */ d178 1 a178 1 struct nameidata *ndp, struct lwp *l)); @ 1.27.2.7 log @Sync with HEAD. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.27.2.6 2004/10/30 07:36:47 skrll Exp $ */ a114 1 #define NFSMNT_WCCKLUDGE 0x00010000 /* see nfs_check_wccdata() */ a166 1 long nm_wcckludgetime; /* see nfs_check_wccdata() */ @ 1.27.2.8 log @Sync with HEAD. Here we go again... @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.27.2.7 2005/01/24 08:35:53 skrll Exp $ */ a87 1 #define NFSMNT_NOAC 0x00080000 /* Turn off attribute cache */ d94 1 a94 1 "b\20rdirplus\0b\21readdirsize\0b\22xlatecookie\0b\23noac\0" d197 2 @ 1.27.2.9 log @Sync with head. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.36 2005/11/25 20:01:38 thorpej Exp $ */ d205 5 @ 1.26 log @Undo part of the ktrace/lwp changes. In particular: * Remove the "lwp *" argument that was added to vget(). Turns out that nothing actually used it! * Remove the "lwp *" arguments that were added to VFS_ROOT(), VFS_VGET(), and VFS_FHTOVP(); all they did was pass it to vget() (which, as noted above, didn't use it). * Remove all of the "lwp *" arguments to internal functions that were added just to appease the above. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.25 2003/06/28 14:22:19 darrenr Exp $ */ d182 1 a182 1 struct nameidata *ndp, struct lwp *p)); d185 1 a185 1 struct vnode **vpp, struct lwp *p)); d188 2 a189 2 int nfs_start __P((struct mount *mp, int flags, struct lwp *p)); int nfs_unmount __P((struct mount *mp, int mntflags, struct lwp *p)); d192 2 a193 2 struct lwp *l)); int nfs_statfs __P((struct mount *mp, struct statfs *sbp, struct lwp *p)); d195 1 a195 1 struct lwp *p)); d202 1 a202 1 struct lwp *)); @ 1.25 log @Pass lwp pointers throughtout the kernel, as required, so that the lwpid can be inserted into ktrace records. The general change has been to replace "struct proc *" with "struct lwp *" in various function prototypes, pass the lwp through and use l_proc to get the process pointer when needed. Bump the kernel rev up to 1.6V @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.24 2003/05/03 16:28:59 yamt Exp $ */ d190 1 a190 1 int nfs_root __P((struct mount *mp, struct vnode **vpp, struct lwp *)); d196 2 a197 2 int nfs_vget __P((struct mount *, ino_t, struct vnode **, struct lwp *)); int nfs_fhtovp __P((struct mount *mp, struct fid *fhp, struct vnode **vpp, struct lwp *)); @ 1.24 log @better handling of write verifier change. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.23 2003/04/09 14:21:24 yamt Exp $ */ d182 1 a182 1 struct nameidata *ndp, struct proc *p)); d185 1 a185 1 struct vnode **vpp, struct proc *p)); d188 3 a190 3 int nfs_start __P((struct mount *mp, int flags, struct proc *p)); int nfs_unmount __P((struct mount *mp, int mntflags, struct proc *p)); int nfs_root __P((struct mount *mp, struct vnode **vpp)); d192 2 a193 2 struct proc *p)); int nfs_statfs __P((struct mount *mp, struct statfs *sbp, struct proc *p)); d195 3 a197 3 struct proc *p)); int nfs_vget __P((struct mount *, ino_t, struct vnode **)); int nfs_fhtovp __P((struct mount *mp, struct fid *fhp, struct vnode **vpp)); d202 1 a202 1 struct proc *)); @ 1.23 log @rename nm_verf to nm_writeverf because it's confusing with nm_verf{str,len}. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.22 2002/09/21 18:08:27 christos Exp $ */ d118 1 d127 1 d158 1 @ 1.22 log @MNT_GETARGS support @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.21 2001/09/15 16:13:02 chs Exp $ */ d156 1 a156 1 u_char nm_verf[NFSX_V3WRITEVERF]; /* V3 write verifier */ @ 1.21 log @add a new VFS op, vfs_reinit, which is called when desiredvnodes is adjusted via sysctl. file systems that have hash tables which are sized based on the value of this variable now resize those hash tables using the new value. the max number of FFS softdeps is also recalculated. convert various file systems to use the macros for their hash tables. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.20 2001/02/12 20:02:30 fvdl Exp $ */ d92 7 @ 1.20 log @Instead of storing the filehandle in the mount structure, store the vnode pointer. This avoids a locking problem with nfs_nget, and can be done because we always have a reference on the root vnode of the filesystem. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.19 2000/03/16 18:08:31 jdolecek Exp $ */ d194 1 @ 1.20.4.1 log @Sync kqueue branch with -current. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.21 2001/09/15 16:13:02 chs Exp $ */ a193 1 void nfs_vfs_reinit __P((void)); @ 1.20.4.2 log @sync kqueue with -current; this includes merge of gehenna-devsw branch, merge of i386 MP branch, and part of autoconf rototil work @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.20.4.1 2002/01/10 20:04:30 thorpej Exp $ */ a91 7 #define NFSMNT_BITS "\177\20" \ "b\00soft\0b\01wsize\0b\02rsize\0b\03timeo\0" \ "b\04retrans\0b\05maxgrps\0b\06intr\0b\07noconn\0" \ "b\10nqnfs\0b\11nfsv3\0b\12kerb\0b\13dumbtimr\0" \ "b\14leaseterm\0b\15readahead\0b\16deadthresh\0b\17resvport\0" \ "b\20rdirplus\0b\21readdirsize\0b\22xlatecookie" @ 1.20.6.1 log @Catch up with -current. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.21 2001/09/15 16:13:02 chs Exp $ */ a193 1 void nfs_vfs_reinit __P((void)); @ 1.20.2.1 log @Catch up to -current. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.20 2001/02/12 20:02:30 fvdl Exp $ */ a193 1 void nfs_vfs_reinit __P((void)); @ 1.20.2.2 log @Sync with HEAD. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.20.2.1 2001/09/21 22:36:58 nathanw Exp $ */ a91 7 #define NFSMNT_BITS "\177\20" \ "b\00soft\0b\01wsize\0b\02rsize\0b\03timeo\0" \ "b\04retrans\0b\05maxgrps\0b\06intr\0b\07noconn\0" \ "b\10nqnfs\0b\11nfsv3\0b\12kerb\0b\13dumbtimr\0" \ "b\14leaseterm\0b\15readahead\0b\16deadthresh\0b\17resvport\0" \ "b\20rdirplus\0b\21readdirsize\0b\22xlatecookie" @ 1.19 log @Add new VFS op routine - vfs_done and call it on filesystem detach in vfs_detach(). vfs_done may free global filesystem's resources, typically those allocated in respective filesystem's init function. Needed so those filesystems which went in via LKM have a chance to clean after themselves before unloading. This fixes random panics when LKM for filesystem using pools was loaded and unloaded several times. For each leaf filesystem, add appropriate vfs_done routine. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.18 1999/07/04 19:56:00 sommerfeld Exp $ */ d122 1 a122 2 u_char nm_fh[NFSX_V3FHMAX]; /* File handle of root dir */ int nm_fhsize; /* Size of root file handle */ @ 1.18 log @kern/5591: Fix race in the NFS socket code during umount -f and system shutdown: During an unmount, wake up all the processes which are waiting to lock the socket for receive, and wait for them (and the process blocked in soreceive, if any) to go away before blowing away the socket and the mount structure. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.17 1999/02/26 23:44:48 wrstuden Exp $ */ d195 1 @ 1.18.2.1 log @Update thorpej_scsipi to -current as of a month ago @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.19 2000/03/16 18:08:31 jdolecek Exp $ */ a194 1 void nfs_vfs_done __P((void)); @ 1.18.2.2 log @Sync with HEAD. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.18.2.1 2000/11/20 18:11:21 bouyer Exp $ */ d122 2 a123 1 struct vnode *nm_vnode; @ 1.17 log @Modify vfsops to seperate vfs_fhtovp() into two routines. vfs_fhtovp() now only handles the file handle to vnode conversion, and a new call, vfs_checkexp(), performs the export verification. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.16 1998/03/01 02:24:29 fvdl Exp $ */ d161 1 @ 1.17.2.1 log @pull up rev 1.18 from trunk (requested by fvdl): Avoid a panic when forcibly unmounting a hung NFS mount, e.g. at reboot. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.17 1999/02/26 23:44:48 wrstuden Exp $ */ a160 1 int nm_waiters; /* number of waiting listeners.. */ @ 1.17.4.1 log @Update from trunk. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.18 1999/07/04 19:56:00 sommerfeld Exp $ */ a160 1 int nm_waiters; /* number of waiting listeners.. */ @ 1.16 log @Merge with Lite2 + local changes @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.15 1997/10/10 01:53:32 fvdl Exp $ */ d187 3 a189 2 int nfs_fhtovp __P((struct mount *mp, struct fid *fhp, struct mbuf *nam, struct vnode **vpp, int *exflagsp, struct ucred **credanonp)); @ 1.15 log @* New directory entry caching system. Provides full caching of any directory cookie that may be thrown back at us from userspace, up to a size limit. Fixes double entry problem. * Split flags for internal and external use in the NFS mount structure. * Fix some buffer structure fields that weren're being used correctly. * Fix missing directory cache inval call in nfs_open. * Limit on NFS_DIRBLKSIZ no longer needed, bumped to the more reasonable value of 8k. * Various other things that I forget, all related to the dir caching somehow, though. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.14 1997/07/17 23:54:33 fvdl Exp $ */ d46 68 a162 1 #ifdef _KERNEL a166 1 #endif /* _KERNEL */ d198 2 @ 1.14 log @* Deal with servers that don't give complete FSINFO (like NT) From Olaf Seibert (PR 3687) * Make an attempt to check the maximum filesize before attempting a write to the server, as write RPCs will typically happen asynchronously, and the process will not see the error. Fixes problems with unexpectly truncated files at 4G * Pass up errors in nfs_writerpc correctly @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.13 1996/12/22 10:10:36 cgd Exp $ */ d92 1 d109 1 a109 1 struct vnode **vpp)); @ 1.14.2.1 log @Update marc-pcmcia branch from trunk. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.15 1997/10/10 01:53:32 fvdl Exp $ */ a91 1 int nm_iflag; /* internal flags */ d108 1 a108 1 struct vnode **vpp, struct proc *p)); @ 1.13 log @Change the second and third args to struct vfsops' (*vfs_mount)() to 'const char *', and 'void *', respectively. The second arg is taken directly from user arguments, and is const there, so must be const in the prototypes and functions. The third arg is also taken directly from user arguments. It doesn't have to be changed, but since it's cleaner to keep the type the same as the user arg's type, and I'm already making the 'const char *' change... @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.12 1996/12/03 00:22:50 thorpej Exp $ */ d91 1 @ 1.12 log @Make NFSSERVER work without NFSCLIENT. This is achieved by splitting the client and server/shared data initialization into separate functions, and calling the server/shared initialization directly from main(). Problem noted in PR #1308 (Kenneth Stailey) and PR #1780 (Chris Demetriou). Fix suggested in PR #1780 by Chris Demetriou, and munged a bit by me, and OK'd by Frank van der Linden . @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.11 1996/12/02 22:55:47 thorpej Exp $ */ d103 1 a103 1 int nfs_mount __P((struct mount *mp, char *path, caddr_t data, d106 2 a107 1 struct mbuf *nam, char *pth, char *hst, struct vnode **vpp)); @ 1.11 log @NFS performance improvement from Doug Rabson/FreeBSD: Improve the queuing algorithms used by NFS' asynchronous i/o. The existing mechanism uses a global queue for some buffers and the vp->b_dirtyblkhd queue for others. This turns sequential writes into randomly ordered writes to the server, affecting both read and write performance. The existing mechanism also copes badly with hung servers, tending to block accesses to other servers when all the iods are waiting for a hung server. The new mechanism uses a queue for each mount point. All asynchronous i/o goes through this queue which preserves the ordering of requests. A simple mechanism ensures that the iods are shared out fairly between active mount points. Reviewed/integrated/approved by Frank van der Linden @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.10 1996/02/18 11:54:03 fvdl Exp $ */ d123 5 @ 1.10 log @Bring in a merge of Rick Macklem's NFSv3 code from Lite2 @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.9 1996/02/09 21:48:44 christos Exp $ */ d87 4 @ 1.9 log @nfs prototype changes @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.8 1995/03/26 20:37:31 jtc Exp $ */ d38 1 a38 1 * @@(#)nfsmount.h 8.2 (Berkeley) 8/18/94 d41 4 d54 2 a55 1 nfsv2fh_t nm_fh; /* File handle of root dir */ d71 1 d80 7 d94 1 d99 21 a119 17 int nfs_statfs __P((struct mount *, struct statfs *, struct proc *)); int nfs_mountroot __P((void)); void nfs_decode_args __P((struct nfsmount *, struct nfs_args *)); int nfs_mount __P((struct mount *, char *, caddr_t, struct nameidata *, struct proc *)); int mountnfs __P((struct nfs_args *, struct mount *, struct mbuf *, char *, char *, struct vnode **)); int nfs_unmount __P((struct mount *, int, struct proc *)); int nfs_root __P((struct mount *, struct vnode **)); int nfs_sync __P((struct mount *, int, struct ucred *, struct proc *)); int nfs_vget __P((struct mount *, ino_t, struct vnode **)); int nfs_fhtovp __P((struct mount *, struct fid *, struct mbuf *, struct vnode **, int *, struct ucred **)); int nfs_vptofh __P((struct vnode *, struct fid *)); int nfs_start __P((struct mount *, int, struct proc *)); int nfs_quotactl __P((struct mount *, int, uid_t, caddr_t, struct proc *)); void nfs_init __P((void)); d121 1 a121 1 #endif /* _KERNEL */ @ 1.8 log @KERNEL -> _KERNEL @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.7 1994/12/13 17:17:04 mycroft Exp $ */ a80 1 #endif /* _KERNEL */ d85 19 a103 43 int nfs_mount __P(( struct mount *mp, char *path, caddr_t data, struct nameidata *ndp, struct proc *p)); int nfs_start __P(( struct mount *mp, int flags, struct proc *p)); int nfs_unmount __P(( struct mount *mp, int mntflags, struct proc *p)); int nfs_root __P(( struct mount *mp, struct vnode **vpp)); int nfs_quotactl __P(( struct mount *mp, int cmds, uid_t uid, caddr_t arg, struct proc *p)); int nfs_statfs __P(( struct mount *mp, struct statfs *sbp, struct proc *p)); int nfs_sync __P(( struct mount *mp, int waitfor, struct ucred *cred, struct proc *p)); int nfs_fhtovp __P(( struct mount *mp, struct fid *fhp, struct mbuf *nam, struct vnode **vpp, int *exflagsp, struct ucred **credanonp)); int nfs_vptofh __P(( struct vnode *vp, struct fid *fhp)); int nfs_init __P(()); @ 1.7 log @Sync with CSRG. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.6 1994/08/18 22:48:03 mycroft Exp $ */ d76 1 a76 1 #ifdef KERNEL d81 1 a81 1 #endif /* KERNEL */ @ 1.6 log @More LIST/CIRCLEQ migration. @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.5 1994/06/29 06:42:34 cgd Exp $ */ d38 1 a38 1 * @@(#)nfsmount.h 8.1 (Berkeley) 6/10/93 @ 1.5 log @New RCS ID's, take two. they're more aesthecially pleasant, and use 'NetBSD' @ text @d1 1 a1 1 /* $NetBSD$ */ d68 1 a68 2 struct nfsnode *nm_tnext; /* Head of lease timer queue */ struct nfsnode *nm_tprev; @ 1.5.2.1 log @update from trunk @ text @d1 1 a1 1 /* $NetBSD: nfsmount.h,v 1.6 1994/08/18 22:48:03 mycroft Exp $ */ d68 2 a69 1 CIRCLEQ_HEAD(, nfsnode) nm_timerhead; /* Head of lease timer queue */ @ 1.4 log @Update to 4.4-Lite fs code, with local changes. @ text @d1 2 d38 1 a38 2 * from: @@(#)nfsmount.h 8.1 (Berkeley) 6/10/93 * $Id: $ @ 1.3 log @expand uid_t/gid_t/off_t @ text @d2 2 a3 2 * Copyright (c) 1989 The Regents of the University of California. * All rights reserved. d36 2 a37 2 * from: @@(#)nfsmount.h 7.7 (Berkeley) 4/16/91 * $Id: nfsmount.h,v 1.2 1993/05/20 03:19:09 cgd Exp $ a39 3 #ifndef _NFS_NFSMOUNT_H_ #define _NFS_NFSMOUNT_H_ d48 1 d55 8 a62 13 short nm_retry; /* Max retry count */ short nm_rexmit; /* Rexmit on previous request */ short nm_rtt; /* Round trip timer ticks @@ NFS_HZ */ short nm_rto; /* Current timeout */ short nm_srtt; /* Smoothed round trip time */ short nm_rttvar; /* RTT variance */ short nm_currto; /* Current rto of any nfsmount */ short nm_currexmit; /* Max rexmit count of nfsmounts */ short nm_sent; /* Request send count */ short nm_window; /* Request send window (max) */ short nm_winext; /* Window incremental value */ short nm_ssthresh; /* Slowstart threshold */ short nm_salen; /* Actual length of nm_sockaddr */ d65 9 d115 3 a117 1 int waitfor)); d121 4 a124 1 struct vnode **vpp)); a128 2 #endif /* !_NFS_NFSMOUNT_H_ */ @ 1.2 log @more rcs id adding and header cleanup. i like vi macros! @ text @d37 1 a37 1 * $Id$ d104 1 a104 1 int uid, /* should be uid_t */ @ 1.2.4.1 log @Make all files using spl*() #include cpu.h. Changes from trunk. nfs_vfsops.c, nfsmount.h: Make nfs_quotactl() take an int rather than a uid_t, as it might be -1. nfs_vnops.c: va_size and va_bytes are now quads. @ text @d37 1 a37 1 * $Id: nfsmount.h,v 1.2 1993/05/20 03:19:09 cgd Exp $ d104 1 a104 1 int uid, @ 1.1 log @Restore files lost during crash. @ text @d36 2 a37 1 * @@(#)nfsmount.h 7.7 (Berkeley) 4/16/91 @ 1.1.1.1 log @Import 4.4BSD-Lite for reference @ text @d2 2 a3 2 * Copyright (c) 1989, 1993 * The Regents of the University of California. All rights reserved. d36 1 a36 1 * @@(#)nfsmount.h 8.1 (Berkeley) 6/10/93 d39 3 a49 1 int nm_numgrps; /* Max. size of groupslist */ d56 13 a68 8 int nm_timeo; /* Init timer for NFSMNT_DUMBTIMR */ int nm_retry; /* Max retries */ int nm_srtt[4]; /* Timers for rpcs */ int nm_sdrtt[4]; int nm_sent; /* Request send count */ int nm_cwnd; /* Request send window */ int nm_timeouts; /* Request timeouts */ int nm_deadthresh; /* Threshold of timeouts-->dead server*/ a70 9 int nm_readahead; /* Num. of blocks to readahead */ int nm_leaseterm; /* Term (sec) for NQNFS lease */ struct nfsnode *nm_tnext; /* Head of lease timer queue */ struct nfsnode *nm_tprev; struct vnode *nm_inprog; /* Vnode in prog by nqnfs_clientd() */ uid_t nm_authuid; /* Uid for authenticator */ int nm_authtype; /* Authenticator type */ int nm_authlen; /* and length */ char *nm_authstr; /* Authenticator string */ d103 1 a103 1 uid_t uid, d112 1 a112 3 int waitfor, struct ucred *cred, struct proc *p)); d116 1 a116 4 struct mbuf *nam, struct vnode **vpp, int *exflagsp, struct ucred **credanonp)); d121 2 @ 1.1.1.2 log @Import 4.4BSD-Lite2 @ text @d36 1 a36 1 * @@(#)nfsmount.h 8.3 (Berkeley) 3/30/95 a38 4 #ifndef _NFS_NFSMOUNT_H_ #define _NFS_NFSMOUNT_H_ d48 1 a48 2 u_char nm_fh[NFSX_V3FHMAX]; /* File handle of root dir */ int nm_fhsize; /* Size of root file handle */ a63 1 int nm_readdirsize; /* Size of a readdir rpc */ d66 2 a67 1 CIRCLEQ_HEAD(, nfsnode) nm_timerhead; /* Head of lease timer queue */ a72 7 char *nm_verfstr; /* and the verifier */ int nm_verflen; u_char nm_verf[NFSX_V3WRITEVERF]; /* V3 write verifier */ NFSKERBKEY_T nm_key; /* and the session key */ int nm_numuids; /* Number of nfsuid mappings */ TAILQ_HEAD(, nfsuid) nm_uidlruhead; /* Lists of nfsuid mappings */ LIST_HEAD(, nfsuid) nm_uidhashtbl[NFS_MUIDHASHSIZ]; a127 2 #endif @