Date: Sat, 14 Jun 2003 17:23:43 -0700 From: David Schultz <das@FreeBSD.org> To: Nate Lawson <nate@root.org> Cc: cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/fs/unionfs union_vnops.c Message-ID: <20030615002343.GA714@HAL9000.homeunix.com> In-Reply-To: <20030614170529.C50064@root.org> References: <20030614235633.9A83137B490@hub.freebsd.org> <20030614170529.C50064@root.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Jun 14, 2003, Nate Lawson wrote:
> On Sat, 14 Jun 2003, David Schultz wrote:
> > If someone tries to mount a union filesystem with another unionfs as
> > the upper layer, fail gracefully instead of panicing.
> >
> > Revision Changes Path
> > 1.99 +14 -4 src/sys/fs/unionfs/union_vnops.c
> >
> > --- src/sys/fs/unionfs/union_vnops.c:1.98 Sat Jun 14 16:27:29 2003
> > +++ src/sys/fs/unionfs/union_vnops.c Sat Jun 14 16:56:27 2003
> > @@ -670,10 +670,20 @@
> > struct vnode *uppervp;
> > int error = EOPNOTSUPP;
> >
> > - if ((uppervp = union_lock_upper(un, cnp->cn_thread)) != NULLVP) {
> > - error = VOP_WHITEOUT(un->un_uppervp, cnp, ap->a_flags);
> > - union_unlock_upper(uppervp, cnp->cn_thread);
> > - }
> > + switch (ap->a_flags) {
> > + case LOOKUP:
> > + error = EOPNOTSUPP;
> > + break;
> > + case CREATE:
> > + case DELETE:
> > + if ((uppervp=union_lock_upper(un,cnp->cn_thread)) != NULLVP) {
> > + error = VOP_WHITEOUT(un->un_uppervp, cnp, ap->a_flags);
> > + union_unlock_upper(uppervp, cnp->cn_thread);
> > + }
> > + break;
> > + default:
> > + panic("union_whiteout: unknown op");
> > + }
> > return(error);
> > }
>
> Is that the default value you want for error? Perhaps you don't need to
> assign one?
Good eye. Until five minutes ago, my tree actually said
'error = 0' in the second assignment, but it turns out that
that doesn't quite work. Since whiteout entries in the upper
layer of a unionfs are special, it's hard to support
externally-visible whiteout entries in the way one would want.
The bottom line is that the assignment at the top of the function
is redundant now, but I don't see a compelling reason to nix it
unless someone else really cares.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030615002343.GA714>
