Date: Sat, 13 Nov 2004 10:58:00 -0600 From: Tillman Hodgson <tillman@seekingfire.com> To: FreeBSD-Questions <freebsd-questions@freebsd.org> Subject: Re: Setting SCSI bus options before reaching fsck at boot time Message-ID: <20041113165800.GD33689@seekingfire.com> In-Reply-To: <20041113052818.GE37496@dan.emsphone.com> References: <20041113040749.GB33689@seekingfire.com> <20041113052818.GE37496@dan.emsphone.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Nov 12, 2004 at 11:28:18PM -0600, Dan Nelson wrote: > In the last episode (Nov 12), Tillman Hodgson said: > > I'd like to find a way to have camcontrol (or some other mechanism) > > set the SCSI bus speed on this particular SCSI chain early in the > > boot process, /before/ it encounters fsck and thus trips over it's > > own feet in bus resets. > > Since camcontrol is in /sbin, you can just add a line to the top of > /etc/rc. A cleaner solution would be to write a small /etc/rc.d/ > script and add a "BEFORE: fsck" line so it gets run before fsck. That seemed like a reasonable approach, so I took a stab at it. Unfortunately, I haven't worked with custom RCng scripts before and I can't seem to get the script to run. Here's what I have (blank lines removed to save some space): #!/bin/sh # # PROVIDE: camcontrol_start # REQUIRE: disks # BEFORE: bgfsck . /etc/rc.subr name="camcontrol_tillman" rcvar=`set rcvar` start_cmd="camcontrol_start" stop_cmd=":" camcontrol_start() { echo -n "camcontrol_tillman has started " echo -n "da0 " camcontrol negotiate da0 -R10 -a -q ... (repeated for da1 through da6 (it's a 7 bay JBOD tower)) ... info "camcontrol_tillman has finished" } load_rc_config $name run_rc_command "$1" I also have the following in /etc/rc.conf: ### Tillmans custom RCng scripts camcontrol_tillman_enable="YES" When I run the following by hand, it works: root@thoth# camcontrol negotiate da6 | grep freq (pass6:sym1:0:6:0): frequency: 20.000MHz root@thoth# camcontrol negotiate da6 -R10 -q -a root@thoth# camcontrol negotiate da6 | grep freq (pass6:sym1:0:6:0): frequency: 10.000MHz Yet when I run `/etc/rc.d/camcontrol_tillman start` (or even forcestart), all I get is: root@thoth# /etc/rc.d/camcontrol_tillman forcestart # camcontrol_tillman Aside from the echo statements not outputting anything, a quick check confirms that it really didn't do anything: root@thoth# camcontrol neg da5 | grep freq (pass5:sym1:0:5:0): frequency: 20.000MHz I'm assuming that I just don't understand something relatively simple about the RCng system and that the script is missing something relatively minor. Anyone care to enlighten me? -T -- "The important thing is not to stop questioning. Curiosity has its own reason for existing." -- Albert Einstein
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20041113165800.GD33689>