freebsd.txt
FreeBSD 5 6 and 7 notes for Radiance Two imporant things to change before getting radiance to work with multiple processors and nfs: ---------------------------------- First - when using radiance over or with nfs, mount with the -L option to prevent hanging. activate in /etc/rc.conf: nfs_client_enable="YES" and mount in /etc/fstab (look at the very last line): # Device Mountpoint FStype Options Dump Pass# /dev/ad0s1b none swap sw 0 0 /dev/ad0s1a / ufs rw 2 1 /dev/ad0s1d /var ufs rw 2 2 /dev/ad0s1e /usr ufs rw 2 2 /dev/acd0 /cdrom cd9660 ro,noauto 0 0 radmachine:/share /share nfs rw,-L 0 0 ----------------------------------- Second - please duplicate and manually patch /usr/src/sys/fs/fifofs/fifo_vnops.c with changes below and then recompile the kernel as per http://www.freebsd.org/doc/en/books/handbook/kernelconfig-building.html. Brief instructions follow: ... Edit the file /usr/src/sys/fs/fifofs/fifo_vnops.c. I use vi but any text editor will do: $ cd /usr/src/sys/fs/fifofs $ vi fifo_vnops.c Basically remove the leading "!" from the line !(events & POLLINIGNEOF)) { so it reads (events & POLLINIGNEOF)) { and remove the leading "!" from the line !(ap->a_events & POLLINIGNEOF)) { so it reads (ap->a_events & POLLINIGNEOF)) { Save the file Next change back to the source and make install the kernel (here we use the SMP kernconf file - single processor users can replace the SMP with GENERIC) and lastly reboot into the new kernel. $ cd /usr/src/sys $ make installkernel KERNCONF=SMP $ init 6 If the new kernel does not boot - see http://www.freebsd.org/doc/en/books/handbook/kernelconfig-trouble.html second to last paragraph to boot the previous kernel and try again. ... Here is a snippet of a bug response letter (FreeBSD kern/6525) from Dorr Clark and Shikha Shrivastava of Santa Clara University which shows some context as to where in the fifo_vnops.c file the appropriate two lines two be changed can be found. * set POLLINIGNEOF to get non-blocking behavior. */ if (events & (POLLIN | POLLRDNORM) && - !(events & POLLINIGNEOF)) { + (events & POLLINIGNEOF)) { events &= ~(POLLIN | POLLRDNORM); events |= POLLINIGNEOF; } /* Reverse the above conversion. */ if ( (revents & POLLINIGNEOF) && - !(ap->a_events & POLLINIGNEOF)) { + (ap->a_events & POLLINIGNEOF)) { revents |= (ap->a_events & (POLLIN | POLLRDNORM)); revents &= ~POLLINIGNEOF; } ... -Daniel Fuller - Building Technologes - Berkeley Lab - defuller(at)lbl.gov
by
Daniel Fuller
—
last modified
Apr 21, 2025 09:12 PM