Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 29 Jan 2001 18:38:24 +0000
From:      Brian Somers <brian@Awfulhak.org>
To:        Peter Wemm <peter@netplex.com.au>
Cc:        Brian Somers <brian@Awfulhak.org>, freebsd-arch@FreeBSD.ORG, brian@Awfulhak.org
Subject:   Re: Cloned open support 
Message-ID:  <200101291838.f0TIcO203434@hak.lan.Awfulhak.org>
In-Reply-To: Message from Peter Wemm <peter@netplex.com.au>  of "Mon, 29 Jan 2001 06:02:10 PST." <200101291402.f0TE2A451479@mobile.wemm.org> 

next in thread | previous in thread | raw e-mail | index | archive | help
> Brian Somers wrote:
> > Hi,
> > 
> > I'm considering having a crack at adding support for cloned opens.
> > Before I start, I guess I've got two questions:
> > 
> > 1.  Is anybody else doing this.
> > 
> > 2.  Given that I'll need to change the d_open prototype (and
> >     thus cdevsw), I'm going to affect every device driver in the
> >     tree - although only changing the first arg to a (dev_t)
> >     pointer, making things pretty easy to change and not too
> >     unexpected for anyone that's written sysv drivers.
> 
> Not necessary.  dev_t *is* a pointer.  Add a flag to the device flags to

Ach, I was thinking userland-dev_t aka udev_t :-/  Yes, the 
prototypes don't need to change :-D

> indicate that it allows clone opens, and maybe teach specfs a little about
> it (ie: that the unit will be reassigned on a clone open) and you're done.

I don't think it's that easy.  I believe the vnode that's attached 
to the specinfo needs to be discarded (and any VN_RELE()s done) when 
the open routine changes dev->si_udev, and probably dev->si_udev 
needs to be put back.  The specinfo code then needs to create a new 
vnode and return that from VOP_OPEN() - changing the VOP_OPEN() 
prototype to be passed a vnode **....

I tried before to get things to work by adjusting the vnode that's 
passed into VOP_OPEN(), but failed miserably - probably because I 
don't fully understand the relationship between vnodes and the namei 
stuff....

I *guess* it's cleaner to create the new vnode so that the namei 
caching side of things can do it's job on the clone device.

> Cheers,
> -Peter
> --
> Peter Wemm - peter@FreeBSD.org; peter@yahoo-inc.com; peter@netplex.com.au
> "All of this is for nothing if we don't go to the stars" - JMS/B5

-- 
Brian <brian@Awfulhak.org>                        <brian@[uk.]FreeBSD.org>
      <http://www.Awfulhak.org>;                   <brian@[uk.]OpenBSD.org>
Don't _EVER_ lose your sense of humour !




To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200101291838.f0TIcO203434>