From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <4445DFDA.4060501@9fs.org> Date: Wed, 19 Apr 2006 07:59:38 +0100 From: Nigel Roles User-Agent: Mozilla Thunderbird 1.0.7 (Windows/20050923) MIME-Version: 1.0 To: Fans of the OS Plan 9 from Bell Labs <9fans@cse.psu.edu> Subject: Re: [9fans] Writing device drivers References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Topicbox-Message-UUID: 3e9f134e-ead1-11e9-9d60-3106f5b1d025 jmk@plan9.bell-labs.com wrote: >i have no idea if it's a poor piece of hardware or not, i just >can't see me ever wanting to use one. > >On Tue Apr 18 23:12:50 EDT 2006, quanstro@quanstro.net wrote: > > >>am i missing something? is this a poor piece of hardware? >> >> >> RAID controllers (especially real ones which handle RAID 5 entirely onboard) tend to end up in a different bracket to host adaptors. Because they need to convert a single operation into a sequence of reads and writes to maintain the array, there is a need for substantially more computing power on board, and people will pay for this. As a result, they tend to look like the Adaptec card did in the early days with a fixed mailbox SCB API, but with a fast CPU (I960s are very popular) running a lot of firmware. The BIOS is used to configure groups of physical drives into logical drives, and the firmware presents those logical drives to the OS driver. Thus there is only one interface to write a driver to, you dont have to choose the firmware/driver split yourself, the firmware takes care of the scsi bus so you only need to understand SCSI protocol and not the physical layer as well, and the programming interface is often quite straightforward. In short, assuming you have some documentation (or if really desperate a Linux driver to look at), then writing a driver for a RAID controller could well be a lot easier. The trickiest part is often that the BIOS is not 'fully featured' as regards volume managment (or the machine is remote and so the console is inaccessible), and you really need to use a managment API from the host OS to do array management. This API is rarely documented in detail; instead in the Lunix world thet have in some cases resorted to finding ways to run the manufacturers DOS binary. Nigel