Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 14 Jun 2003 17:07:17 -0700 (PDT)
From:      Nate Lawson <nate@root.org>
To:        David Schultz <das@FreeBSD.org>
Cc:        cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/fs/unionfs union_vnops.c
Message-ID:  <20030614170529.C50064@root.org>
In-Reply-To: <20030614235633.9A83137B490@hub.freebsd.org>
References:  <20030614235633.9A83137B490@hub.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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?

-Nate



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