Subject: Re: port bio(4) and bioctl(8) from openbsd ?
To: Bill Stouder-Studenmund <wrstuden@NetBSD.org>
From: Manuel Bouyer <bouyer@antioche.eu.org>
List: tech-kern
Date: 04/24/2007 01:16:49
--C7zPtVaVf+AK4Oqc
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Sun, Apr 22, 2007 at 11:01:41PM +0200, Manuel Bouyer wrote:
> [...]
> 
> Would anyone object if I commit the code as is, with bio_unregister() just
> calling panic() for now, and dealing properly with this later when
> mfi(4) gets converted to mutexes ? We need this for mfi(4), as currently
> there's no way to report drive failures with NetBSD (not even a line
> in dmesg). I want to get this pulled up to netbsd-4 and possibly netbsd-3,
> and I'd like to first commit something not too far from the code we'll
> have in the branches.

Attached is the code I'd like to commit. Changes with previous versions:
- kauth(9) support in bio
- more locking adjustement. It's not complete yet but is good enough as
  long as nothing calls bio_unregister(). I need more thoughs about how to
  handle bio_unregister().

this diff also contains fixes for debug printfs in mfi(4)

-- 
Manuel Bouyer <bouyer@antioche.eu.org>
     NetBSD: 26 ans d'experience feront toujours la difference
--

--C7zPtVaVf+AK4Oqc
Content-Type: application/x-gunzip
Content-Disposition: attachment; filename="diff.gz"
Content-Transfer-Encoding: base64

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

--C7zPtVaVf+AK4Oqc--