Detecting cards in USB card reader
Mike Clarke
jmc-freebsd2 at milibyte.co.uk
Wed Feb 10 17:54:02 UTC 2010
On Sunday 07 February 2010, Nikos Vassiliadis wrote:
> While it may feel dangerous, is perfectly safe. There is no
> way doing an IO operation on a disk-like device using requests
> othen than multiplies of the physical block which currently is
> 512 bytes. Opening the disk for writing and trying to do a
> write request, will just force GEOM to re-examine the device.
>
> > lab# echo asd | cat > /dev/da0
> > cat: stdout: Invalid argument
>
> failed
>
> > lab# echo > /dev/da0
> > lab# echo $?
> > 1
>
> failed
>
> > lab# /bin/echo asd > /dev/da0
> > /bin/echo: write: Invalid argument
>
> failed
>
> Closer look:
> > lab# truss sh -c "echo > /dev/da0"
>
> snip
>
> > open("/dev/da0",O_WRONLY|O_CREAT|O_TRUNC,0666) = 2 (0x2)
> > dup2(0x2,0x1,0x1b6,0x1000008,0x2830d040,0x2830235c) = 1 (0x1)
> > close(2) = 0 (0x0)
> > write(1,"\n",1) ERR#22 'Invalid
> > argument'
>
> failed
>
> FreeBSD lost the ability of doing such transparent
> transformations when the support for block devices
> went away.
>
> Yes, I know, it feels awkward.
>
> Apparently, you can easily drop the support for block
> devices but not the habitual feeling of danger of UNIX
> tradition.
Thanks for the enlightening information. Although I didn't doubt that
this was safe I couldn't help feeling that it seemed "a wrong thing to
do" - a case of old habits being hard to loose. After seeing your
explanation I feel much more confident about this.
It does seem a pity though that we have to rely on the side effect of
having no support for writing to block devices instead of having a
specific means of detecting or checking for a media change in the card
reader.
--
Mike Clarke
More information about the freebsd-questions
mailing list