Your patch applies correctly. 5>sysctl kern.version kern.version=OpenBSD 5.4-beta (GENERIC.MP) #27: Fri Jul 12 10:35:54 MDT 2013 dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP 6>mount /dev/sd0a on / type ffs (local, softdep) mfs:26558 on /tmp type mfs (asynchronous, local, nodev, nosuid, size=512000 1K-blocks) /dev/sd0d on /usr type ffs (local, nodev, read-only) /dev/sd2l on /usr/local type ffs (local, nodev, read-only) /dev/sd0e on /var type ffs (local, nodev, nosuid, softdep) /dev/sd2h on /home type ffs (local, nodev, nosuid, softdep) /dev/sd2p on /pub type ffs (NFS exported, local, nodev, nosuid, softdep) /dev/sd3p on /v type ffs (NFS exported, local, nodev, nosuid) /dev/wd0m on /var/crash type ffs (local, nodev, nosuid, softdep) /dev/wd0o on /usr/obj type ffs (asynchronous, local, noatime, nodev) /dev/sd1d on /cosmo-rescue type ffs (local, nodev, nosuid, read-only, softdep) /dev/sd1e on /another-rescue type ffs (local, nodev, nosuid, read-only, softdep) /dev/sd1f on /p type ffs (NFS exported, local, nodev, nosuid, read-only, softdep) localhost:/pub/cvsroot on /var/www/cvs type nfs (nosuid, read-only, v3, udp, timeo=100, retrans=101) localhost:/pub/src on /var/www/htdocs/src type nfs (nosuid, read-only, v3, udp, timeo=100, retrans=101) a8v:/pub on /a8v/pub type nfs (nodev, nosuid, read-only, v3, udp, timeo=100, retrans=101) a8v:/pub2 on /a8v/pub2 type nfs (nodev, nosuid, read-only, v3, udp, timeo=100, retrans=101) nas2:/work on /nas2/work type nfs (nodev, nosuid, v3, udp, timeo=100, retrans=101) 7>sysctl vfs | tee before vfs.mounts.nfs has 12 mounted instances vfs.mounts.mfs has 5 mounted instances vfs.mounts.msdos has 1 mounted instance vfs.ffs.doclusterread=1 vfs.ffs.doclusterwrite=1 vfs.ffs.doreallocblks=1 vfs.ffs.doasyncfree=1 vfs.ffs.max_softdeps=23704 vfs.ffs.sd_tickdelay=2 vfs.ffs.sd_worklist_push=0 vfs.ffs.sd_blk_limit_push=0 vfs.ffs.sd_ino_limit_push=0 vfs.ffs.sd_blk_limit_hit=0 vfs.ffs.sd_ino_limit_hit=0 vfs.ffs.sd_sync_limit_hit=0 vfs.ffs.sd_indir_blk_ptrs=43 vfs.ffs.sd_inode_bitmap=66 vfs.ffs.sd_direct_blk_ptrs=427 vfs.ffs.sd_dir_entry=35 vfs.ffs.dirhash_dirsize=2560 vfs.ffs.dirhash_maxmem=2097152 vfs.ffs.dirhash_mem=236147 vfs.nfs.iothreads=4 8>/usr/src/sbin/sysctl/obj/sysctl vfs | tee after vfs.mounts.ffs has 12 mounted instances vfs.mounts.nfs has 5 mounted instances vfs.mounts.mfs has 1 mounted instance vfs.ffs.doclusterread=1 vfs.ffs.doclusterwrite=1 vfs.ffs.doreallocblks=1 vfs.ffs.doasyncfree=1 vfs.ffs.max_softdeps=23704 vfs.ffs.sd_tickdelay=2 vfs.ffs.sd_worklist_push=0 vfs.ffs.sd_blk_limit_push=0 vfs.ffs.sd_ino_limit_push=0 vfs.ffs.sd_blk_limit_hit=0 vfs.ffs.sd_ino_limit_hit=0 vfs.ffs.sd_sync_limit_hit=0 vfs.ffs.sd_indir_blk_ptrs=43 vfs.ffs.sd_inode_bitmap=68 vfs.ffs.sd_direct_blk_ptrs=427 vfs.ffs.sd_dir_entry=37 vfs.ffs.dirhash_dirsize=2560 vfs.ffs.dirhash_maxmem=2097152 vfs.ffs.dirhash_mem=241014 vfs.nfs.iothreads=4 9>diff -wbu before after --- before Sun Jul 14 06:27:13 2013 +++ after Sun Jul 14 06:31:50 2013 @@ -16,9 +16,9 @@ a8v:/pub on /a8v/pub type nfs (nodev, nosuid, read-only, v3, udp, timeo=100, retrans=101) a8v:/pub2 on /a8v/pub2 type nfs (nodev, nosuid, read-only, v3, udp, timeo=100, retrans=101) nas2:/work on /nas2/work type nfs (nodev, nosuid, v3, udp, timeo=100, retrans=101) -vfs.mounts.nfs has 12 mounted instances -vfs.mounts.mfs has 5 mounted instances -vfs.mounts.msdos has 1 mounted instance +vfs.mounts.ffs has 12 mounted instances +vfs.mounts.nfs has 5 mounted instances +vfs.mounts.mfs has 1 mounted instance vfs.ffs.doclusterread=1 vfs.ffs.doclusterwrite=1 vfs.ffs.doreallocblks=1 @@ -32,10 +32,10 @@ vfs.ffs.sd_ino_limit_hit=0 vfs.ffs.sd_sync_limit_hit=0 vfs.ffs.sd_indir_blk_ptrs=43 -vfs.ffs.sd_inode_bitmap=67 +vfs.ffs.sd_inode_bitmap=68 vfs.ffs.sd_direct_blk_ptrs=427 -vfs.ffs.sd_dir_entry=36 +vfs.ffs.sd_dir_entry=37 vfs.ffs.dirhash_dirsize=2560 vfs.ffs.dirhash_maxmem=2097152 -vfs.ffs.dirhash_mem=236147 +vfs.ffs.dirhash_mem=241014 vfs.nfs.iothreads=4
Thanks. On 07/14/13 03:54, Rafael Neves wrote: > Hi tech@, > > The patch below fixes a bug on sysctl(8) introduced by revision 1.191 > of sysctl.c. After rev1.191, `sysctl vfs' mangles information about > filesystems (mounted instances of ffs are attributed to nfs, of nfs > are atrributed to mfs, and so on). As a consequence, `sysctl > vfs.mounts.nfs' reports 0 mounted instances on a diskless(8) setup, > thus /etc/rc script (lines 335 to 342) doesn't add pf rules that allow > NFS, and system hangs when it enables pf. > > For example, on -current I get (dmesg at end): > output of mount(8): > /dev/wd0a on / type ffs (local) > /dev/wd0k on /home type ffs (local, nodev, nosuid) > /dev/wd0d on /tmp type ffs (local, nodev, nosuid) > /dev/wd0f on /usr type ffs (local, nodev) > /dev/wd0g on /usr/X11R6 type ffs (local, nodev) > /dev/wd0h on /usr/local type ffs (local, nodev) > /dev/wd0j on /usr/obj type ffs (local, nodev, nosuid) > /dev/wd0e on /var type ffs (local, nodev, nosuid) > /dev/sd1i on /usr/src type ffs (local, nodev, nosuid, softdep) > /dev/sd2a on /mnt2 type ext2fs (local) > > output of sysctl(8) (`sysctl vfs'): > vfs.mounts.nfs has 9 mounted instances > vfs.ffs.doclusterread=1 > vfs.ffs.doclusterwrite=1 > vfs.ffs.doreallocblks=1 > vfs.ffs.doasyncfree=1 > vfs.ffs.max_softdeps=23704 > vfs.ffs.sd_tickdelay=2 > vfs.ffs.sd_worklist_push=0 > vfs.ffs.sd_blk_limit_push=0 > vfs.ffs.sd_ino_limit_push=0 > vfs.ffs.sd_blk_limit_hit=0 > vfs.ffs.sd_ino_limit_hit=0 > vfs.ffs.sd_sync_limit_hit=0 > vfs.ffs.sd_indir_blk_ptrs=0 > vfs.ffs.sd_inode_bitmap=37 > vfs.ffs.sd_direct_blk_ptrs=26 > vfs.ffs.sd_dir_entry=14 > vfs.ffs.dirhash_dirsize=2560 > vfs.ffs.dirhash_maxmem=2097152 > vfs.ffs.dirhash_mem=325453 > vfs.nfs.iothreads=-1 > > > The problem is that sysctl(8) expects that vfsvars->list[] and > filesystem indexes match, so findname() result could be used in > sysctl(2) to get filesystem information. Currently, it is not the case > because vfsvars->list[] is filled with: > vfsvars->list[0].ctl_name = ffs > vfsvars->list[1].ctl_name = nfs > vfsvars->list[2].ctl_name = mfs > vfsvars->list[3].ctl_name = msdos > vfsvars->list[4].ctl_name = NULL > vfsvars->list[5].ctl_name = ntfs > vfsvars->list[6].ctl_name = NULL > vfsvars->list[7].ctl_name = NULL > vfsvars->list[8].ctl_name = NULL > vfsvars->list[9].ctl_name = NULL > vfsvars->list[10].ctl_name = NULL > vfsvars->list[11].ctl_name = procfs > vfsvars->list[12].ctl_name = udf > vfsvars->list[13].ctl_name = cd9660 > vfsvars->list[14].ctl_name = NULL > vfsvars->list[15].ctl_name = NULL > vfsvars->list[16].ctl_name = ext2fs > > > The patch completes the off-by-one adjust needed to access the last > filesystem and works with FUSE enabled. After the patch I get: > vfs.mounts.ffs has 9 mounted instances > vfs.mounts.ext2fs has 1 mounted instance > vfs.ffs.doclusterread=1 > vfs.ffs.doclusterwrite=1 > vfs.ffs.doreallocblks=1 > vfs.ffs.doasyncfree=1 > vfs.ffs.max_softdeps=23704 > vfs.ffs.sd_tickdelay=2 > vfs.ffs.sd_worklist_push=0 > vfs.ffs.sd_blk_limit_push=0 > vfs.ffs.sd_ino_limit_push=0 > vfs.ffs.sd_blk_limit_hit=0 > vfs.ffs.sd_ino_limit_hit=0 > vfs.ffs.sd_sync_limit_hit=0 > vfs.ffs.sd_indir_blk_ptrs=0 > vfs.ffs.sd_inode_bitmap=37 > vfs.ffs.sd_direct_blk_ptrs=26 > vfs.ffs.sd_dir_entry=14 > vfs.ffs.dirhash_dirsize=2560 > vfs.ffs.dirhash_maxmem=2097152 > vfs.ffs.dirhash_mem=325453 > vfs.nfs.iothreads=-1 > > Thanks in advance for any comments. > > Regards > Rafael Neves > > dmesg: > OpenBSD 5.3-current (GENERIC) #15: Thu Jul 4 11:52:29 MDT 2013 > dera...@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC > cpu0: Intel(R) Pentium(R) 4 CPU 1.80GHz ("GenuineIntel" 686-class) 1.81 GHz > cpu0: > FPU,V86,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PERF > real mem = 771223552 (735MB) > avail mem = 747171840 (712MB) > mainbus0 at root > bios0 at mainbus0: AT/286+ BIOS, date 03/10/03, BIOS32 rev. 0 @ > 0xfdad0, SMBIOS rev. 2.3 @ 0xf0630 (19 entries) > bios0: vendor American Megatrends Inc. version "07.00T" date 04/02/01 > bios0: ECS P4VMM2 > acpi0 at bios0: rev 0 > acpi0: sleep states S0 S1 S4 S5 > acpi0: tables DSDT FACP > acpi0: wakeup devices UAR1(S4) USB1(S4) USB2(S4) USB3(S4) EHCI(S4) > AC9_(S4) MC9_(S4) ILAN(S4) PCI0(S4) SLPB(S4) > acpitimer0 at acpi0: 3579545 Hz, 24 bits > acpiprt0 at acpi0: bus 0 (PCI0) > acpicpu0 at acpi0 > acpipwrres0 at acpi0: URP1 > acpipwrres1 at acpi0: URP2 > acpipwrres2 at acpi0: FDDP > acpipwrres3 at acpi0: LPTP > acpibtn0 at acpi0: PWRB > acpibtn1 at acpi0: SLPB > bios0: ROM list: 0xc0000/0xc000 0xcc000/0x4000! > cpu0 at mainbus0: (uniprocessor) > pci0 at mainbus0 bus 0: configuration mode 1 (bios) > pchb0 at pci0 dev 0 function 0 "VIA VT8751 PCI" rev 0x00 > viaagp0 at pchb0: v2 > agp0 at viaagp0: aperture at 0xe0000000, size 0x10000000 > ppb0 at pci0 dev 1 function 0 "VIA VT8633 AGP" rev 0x00 > pci1 at ppb0 bus 1 > vga1 at pci1 dev 0 function 0 "S3 ProSavage DDR-K" rev 0x00 > wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation) > wsdisplay0: screen 1-5 added (80x25, vt100 emulation) > uhci0 at pci0 dev 16 function 0 "VIA VT83C572 USB" rev 0x80: irq 11 > uhci1 at pci0 dev 16 function 1 "VIA VT83C572 USB" rev 0x80: irq 5 > uhci2 at pci0 dev 16 function 2 "VIA VT83C572 USB" rev 0x80: irq 12 > ehci0 at pci0 dev 16 function 3 "VIA VT6202 USB" rev 0x82: irq 10 > usb0 at ehci0: USB revision 2.0 > uhub0 at usb0 "VIA EHCI root hub" rev 2.00/1.00 addr 1 > viapm0 at pci0 dev 17 function 0 "VIA VT8235 ISA" rev 0x00: SMI > iic0 at viapm0 > spdmem0 at iic0 addr 0x50: 1GB DDR SDRAM non-parity PC3200CL3.0 > spdmem1 at iic0 addr 0x51: 256MB DDR SDRAM non-parity PC3200CL3.0 > pciide0 at pci0 dev 17 function 1 "VIA VT82C571 IDE" rev 0x06: ATA133, > channel 0 configured to compatibility, channel 1 configured to > compatibility > wd0 at pciide0 channel 0 drive 0: <SAMSUNG SP0411N> > wd0: 16-sector PIO, LBA48, 38204MB, 78242976 sectors > atapiscsi0 at pciide0 channel 0 drive 1 > scsibus0 at atapiscsi0: 2 targets > cd0 at scsibus0 targ 0 lun 0: <HL-DT-ST, CD-ROM GCR-8523B, 1.00> ATAPI > 5/cdrom removable > wd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 5 > cd0(pciide0:0:1): using PIO mode 4, DMA mode 2 > pciide0: channel 1 disabled (no drives) > auvia0 at pci0 dev 17 function 5 "VIA VT8233 AC97" rev 0x50: irq 12 > ac97: codec id 0x56494161 (VIA Technologies VT1612A) > ac97: codec features headphone, 18 bit DAC, 18 bit ADC, KS Waves 3D > audio0 at auvia0 > vr0 at pci0 dev 18 function 0 "VIA RhineII-2" rev 0x74: irq 11, > address 00:0d:87:11:e8:f4 > ukphy0 at vr0 phy 1: Generic IEEE 802.3u media interface, rev. 8: OUI > 0x004063, model 0x0032 > usb1 at uhci0: USB revision 1.0 > uhub1 at usb1 "VIA UHCI root hub" rev 1.00/1.00 addr 1 > usb2 at uhci1: USB revision 1.0 > uhub2 at usb2 "VIA UHCI root hub" rev 1.00/1.00 addr 1 > usb3 at uhci2: USB revision 1.0 > uhub3 at usb3 "VIA UHCI root hub" rev 1.00/1.00 addr 1 > isa0 at mainbus0 > isadma0 at isa0 > com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo > com0: console > pckbc0 at isa0 port 0x60/5 > pckbd0 at pckbc0 (kbd slot) > pckbc0: using irq 1 for kbd slot > wskbd0 at pckbd0: console keyboard, using wsdisplay0 > pcppi0 at isa0 port 0x61 > spkr0 at pcppi0 > lpt0 at isa0 port 0x378/4 irq 7 > it0 at isa0 port 0x2e/2: IT8705F rev 2, EC port 0x290 > npx0 at isa0 port 0xf0/16: reported by CPUID; using exception 16 > fdc0 at isa0 port 0x3f0/6 irq 6 drq 2 > mtrr: Pentium Pro MTRR support > umass0 at uhub0 port 2 configuration 1 interface 0 "JMicron Samsung S2 > Portable" rev 2.00/0.00 addr 2 > umass0: using SCSI over Bulk-Only > scsibus1 at umass0: 2 targets, initiator 0 > sd0 at scsibus1 targ 1 lun 0: <Samsung, S2 Portable, > SCSI2 0/direct > fixed serial.04e81f05000002CE09CE > sd0: 476940MB, 512 bytes/sector, 976773168 sectors > vscsi0 at root > scsibus2 at vscsi0: 256 targets > softraid0 at root > scsibus3 at softraid0: 256 targets > root on wd0a (c329692700b15a23.a) swap on wd0b dump on wd0b > wd0a: aborted command, interface CRC error reading fsbn 128 of 128-143 > (wd0 bn 42662016; cn 2655 tn 149 sn 54), retrying > wd0: transfer error, downgrading to Ultra-DMA mode 4 > wd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 4 > cd0(pciide0:0:1): using PIO mode 4, DMA mode 2 > wd0a: aborted command, interface CRC error reading fsbn 128 of 128-143 > (wd0 bn 42662016; cn 2655 tn 149 sn 54), retrying > wd0: soft error (corrected) > wd0: transfer error, downgrading to Ultra-DMA mode 3 > wd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 3 > cd0(pciide0:0:1): using PIO mode 4, DMA mode 2 > wd0e: aborted command, interface CRC error writing fsbn 1665280 of > 1665280-1665311 (wd0 bn 48662144; cn 3029 tn 19 sn 62), retrying > wd0: soft error (corrected) > sd1 at scsibus3 targ 1 lun 0: <OPENBSD, SR CRYPTO, 005> SCSI2 0/direct fixed > sd1: 51205MB, 512 bytes/sector, 104869297 sectors > softraid0: volume sd1 is roaming, it used to be sd2, updating metadata > softraid0: roaming device sd1a -> sd0a > umass1 at uhub0 port 4 configuration 1 interface 0 " USB DISK 2.0" rev > 2.00/1.00 addr 3 > umass1: using SCSI over Bulk-Only > scsibus4 at umass1: 2 targets, initiator 0 > sd2 at scsibus4 targ 1 lun 0: <, USB DISK 2.0, PMAP> SCSI2 0/direct > removable serial.13fe41002C36A0FFFF48 > sd2: 3769MB, 512 bytes/sector, 7719360 sectors > > > > Patch: > > Index: sysctl.c > =================================================================== > RCS file: /cvs/src/sbin/sysctl/sysctl.c,v > retrieving revision 1.192 > diff -u -p -r1.192 sysctl.c > --- sysctl.c 9 Jun 2013 12:54:38 -0000 1.192 > +++ sysctl.c 14 Jul 2013 07:09:28 -0000 > @@ -1175,8 +1175,8 @@ vfsinit(void) > > vfsname[0].ctl_name = "mounts"; > vfsname[0].ctl_type = CTLTYPE_NODE; > - vfsvars[0].list = vfsname + 1; > - vfsvars[0].size = maxtypenum - 1; > + vfsvars[0].list = vfsname; > + vfsvars[0].size = maxtypenum; > > secondlevel[CTL_VFS].list = vfsname; > secondlevel[CTL_VFS].size = maxtypenum; > >