Date: Wed, 10 Jul 1996 11:30:07 +0200 (MET DST) From: Nicolas Souchu <Nicolas.Souchu@prism.uvsq.fr> To: freebsd-fs@freebsd.org Cc: freebsd-scsi@freebsd.org Subject: msdosfs and scsi Message-ID: <199607100930.LAA02630@angrand.prism.uvsq.fr>
next in thread | raw e-mail | index | archive | help
I've developed a polling driver for an scsi drive ZIP 100 drive connected to the parallel port. http://www.prism.uvsq.fr/~son/ppa3.html Here is my question/problem: When polling, the system load is horrible... then I want to insert some tsleep() in the driver. In fact, when data is not available, the process which runs into the driver is scheduled with : s = splbio(); tsleep(..., PRIBIO, "mywait", 1); splx (s); BUT: doing this leads 2 concurent processes to a deadlock. $ mount -t msdos /dev/sd0s4 /zip $ time dd if=/dev/zero of=/zip/file bs=8192 count=512 & $ ls -l /zip dd is waiting on channel "getblk", ls is waiting on channel "msdhgt". Debugging the driver shows that dd is scheduled and ls starts reading data from the disk. But then everythings stop. Should the driver be atomic until returning SUCCESSFULLY_QUEUED ? Why ? Why not ? I may get more info. if you need... nicolas -- Nicolas.Souchu@prism.uvsq.fr Laboratoire PRiSM - Versailles, FRANCE
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199607100930.LAA02630>