SCSI device not created upon a CF card plug in

Eugene Grosbein eugen at kuzbass.ru
Wed Jul 22 14:20:38 UTC 2009


On Wed, Jul 22, 2009 at 10:20:27AM +0800, Sagara Wijetunga wrote:

> My questions in this regards are:
> 1. Is this an error/bug in FreeBSD 7.2? 

This is regression from pre-5.x days. In 4.x and earlier,
you can have static device nodes and access them just fine.

> 2. Or, does it require some configuration tweak? 

As a workaround, you should drop cardreader.conf into /usr/local/etc/devd/
(create directory if it does not exist) with contents like:

attach 1000 {
        device-name "umass[0-9]+";
        action "/usr/local/libexec/umass/attach-umass $device-name";
};

Script /usr/local/libexec/umass/attach-umass is invoked
when umassX appears:

#!/bin/sh

PATH=/bin:/sbin:/usr/bin:/usr/sbin
DEV=/dev
p=`dirname $0`

[ -z "$1" ] && exit 1
u="$1"

# wait until dust settles
i=1;
while [ $i -le 10 ]	
do
  sleep 1
  device=`$p/umass2da $u`
  if [ $? = 0 ]; then
    : > $DEV/${device}
    break
  fi
  i=$(($i+1))
done

This script calls /usr/local/libexec/umass/umass2da helper
to translate umassX to daY (in hope this translation is possible):

#!/bin/sh
PATH=/sbin:/usr/bin

camcontrol devlist -v | awk -v u=$1 '\
BEGIN { s = ""; e = 1; }
$3 ~ /umass-sim[0-9]+/ { s = $3; sub("-sim","",s); }
/[,(]da[0-9]+.*\)$/ {
  if(s == u) {
    match($NF, /da[0-9]+/);
    print substr($NF, RSTART, RLENGTH);
    e=0; exit 0;
  }
}
END { exit e; }'

Eugene Grosbein


More information about the freebsd-stable mailing list