--- vfs_lookup.c 2009-11-06 16:14:41.000000000 +0100 +++ /usr/src/sys/kern/vfs_lookup.c 2009-11-06 16:13:19.000000000 +0100 @@ -35,7 +35,7 @@ */ #include -__FBSDID("$FreeBSD$"); +__FBSDID("$FreeBSD: head/sys/kern/vfs_lookup.c 195939 2009-07-29 07:44:43Z rwatson $"); #include "opt_kdtrace.h" #include "opt_ktrace.h" @@ -563,8 +563,12 @@ error = ENOTDIR; goto bad; } - if (cnp->cn_nameiop != LOOKUP) { - error = EISDIR; + if (cnp->cn_nameiop != LOOKUP && cnp->cn_nameiop == DELETE) { + error = EBUSY; + goto bad; + } + if (cnp->cn_nameiop != LOOKUP && cnp->cn_nameiop == CREATE) { + error = EEXIST; goto bad; } if (wantparent) {