You are here: Home / archived / radsite / radiance / misc / freebsd.txt

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 DEFuller – last modified Nov 09, 2019 09:22 AM