Date: Sat, 7 Mar 1998 12:42:03 +1030 From: Greg Lehey <grog@lemis.com> To: FreeBSD Hackers <hackers@FreeBSD.ORG> Subject: Can I call scsi_strategy from the bottom half of a driver? Message-ID: <19980307124203.50681@freebie.lemis.com>
next in thread | raw e-mail | index | archive | help
I've come up with a rather strange problem: to perform a write in my RAID 5 driver, I need to first read in all two blocks, exclusive or the results and the block to be written, and write the block back to disk. This should be transparent to the caller. Normal requests, say a read, are straightforward enough: build subrequests to read the blocks needed, set the buffer headers to call an iodone function on completion (B_CALL). The top half issues all the requets in parallel, and the iodone function counts down and does a biodone () on the caller's bp when they're all complete. There'd be no particular difficulty issuing another VOP_STRATEGY call from the iodone function, but I seem to recall that the strategy routine belongs to the top half, and shouldn't be called from the bottom half. I've checked the code, and I can't see any reason why not, but I could well have missed something. Could anybody comment? If I can't call the strategy from the bottom half, I can't think of a clean way to do it, so I'd appreciate comments on that too. Greg To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19980307124203.50681>