cvs commit: src/sys/fs/unionfs union_vnops.c

Nate Lawson nate at root.org
Sat Jun 14 17:07:18 PDT 2003


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


More information about the cvs-src mailing list