Subject: Re: overlap, was Re: Work-in-progress "wedges" implementation
To: Jason Thorpe <thorpej@shagadelic.org>
From: Bill Studenmund <wrstuden@netbsd.org>
List: tech-kern
Date: 09/23/2004 10:15:57
--qjNfmADvan18RZcF
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
On Wed, Sep 22, 2004 at 05:11:59PM -0700, Jason Thorpe wrote:
>=20
> On Sep 22, 2004, at 4:55 PM, Bill Studenmund wrote:
>=20
> > 3) What do we want to do about overlapping wedges? The patch
> > currently doesn't permit them, which makes a lot of sense
> > at first glance - we want any block on the disk to be opened
> > by only one wedge at a time. However there's the MBR format.
> > It quite happily makes recursing partition entries.
> >
> > If each MBR partition were its own wedge, then it'd be
> > trivial to have partitioning tools deal with extended
> > partitions. We just create a wedge for the extended partition
> > then sick the tools on that wedge. Then make an extended
> > partition in there, and repeat. This behavior might also
> > help import things like FreeBSD slices.
>=20
> No problem. Overlapping is only disallowed on a given parent. So, to=20
> do what you're suggesting, a wedge would be the parent of the recursive=
=20
> wedges, not the actual disk, therefore no overlap would actually occur.
>=20
> That said, right now wedges can't be parents of other wedges. That was=
=20
> a conscious decision on my part. Maybe we can revisit that late :-)
Ok. We can revisit this later. However we don't seem to have a way to=20
prevent simultaneous access to both parent and child wedges. But we can=20
add that when we add wedge paternity.
> > The problems though are: a) we now have wedge overlap, and
> > b) I'm not really sure how one would name the MBR wedges.
> > Only partitioning tools would really care about them.
>=20
> Your partitioning tools still have to know they're creating "extended"=20
> partitions, because it needs to set the MBR partition type correctly. =20
Agreed.
> You also kind of want some way to tell a wedge "go explore for more=20
> wedges" or not, based on the parent wedge's partition type. I don't=20
> think it's a good thing to willy-nilly go explore for sub-wedges every=20
> time.
Oh, my thought would be that whatever created the wedge for the extended=20
partition would, just after creating the wedge, trigger the recursive=20
exploration.
So we only go exploring under controlled circumstances.
> >Hmmmm... Maybe the thing to do is add the concept of parent and child
> >wedges. Add a list (TAILQ?) head and entry point to struct=20
> >dkwedge_softc.
>=20
> There would be no need for that. There's a reason that a wedge is=20
> presented to the kernel as "just another disk" :-) If I chose to allow=
=20
> it, it could simply use the same discovery mechanism that all other=20
> disk drivers use.
Oh, the lists were more for preventing opening both a wedge and its=20
children. When we go to open a partition, we look to see if any of its=20
children or their children are open and also look to see if a parent is=20
open.
> >The one remaining issue I can see is that we would thus not make a=20
> >wedge
> >for a Disklabel partition that is outside the NetBSD MBR space. However
> >all the times I've seen us want to do that, we are bringing some other
> >partition (like an msdos or Linux one) into the NetBSD partitioning
> >scheme. Since we now can find the other partition natively, I think=20
> >we're
> >fine.
>=20
> See, now it's tricky... in the "BSD disklabel inside MBR partition"=20
> case, the block numbers in the BSD disklabel are absolute, not=20
> MBR-partition-relative. So you'd have to search up the tree to figure=20
> out how to create those. I haven't thought of a good way to handle=20
> this yet.
Oh, I thought wedges had a starting offset which was relative to the=20
underlying device. And then wedges short-circuited to the underlying=20
device (so that nesting partitions didn't end up nesting io processing).=20
So all the offsets of a child-wedge would both be 1) absolute in the=20
underlying device and 2) within the parent wedge. So BSD dislabel=20
partitions could just directly become wedges (within the NetBSD MBR=20
partition). MBR partitions would need a little help in that they are=20
relative to the parent partition, so partitions in an extended partition=20
would need to have its offset added in. But that shouldn't be hard.
Of course then this raises the question of what to do on really-old-style=
=20
BSD layouts where partitions g & h overlapped d, e, and f...
Take care,
Bill
--qjNfmADvan18RZcF
Content-Type: application/pgp-signature
Content-Disposition: inline
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (NetBSD)
iD8DBQFBUwTNWz+3JHUci9cRAsM4AJ9JS8aFrJ/R1qaczU013otpPfsUuwCfdbvD
EJmJnWjyRKpfvCBes1aAwz0=
=RzAS
-----END PGP SIGNATURE-----
--qjNfmADvan18RZcF--