If nfsd_unlink() is called with @type equal to 0, then let it do the right thing regardless of the type of the file being unlinked. This is needed for the NFSv4 REMOVE operation, which works for any type of file, even directories. --- old/fs/nfsd/vfs.c Sun Aug 11 23:08:03 2002 +++ new/fs/nfsd/vfs.c Sun Aug 11 23:08:24 2002 @@ -1329,6 +1329,9 @@ nfsd_unlink(struct svc_rqst *rqstp, stru goto out; } + if (!type) + type = rdentry->d_inode->i_mode & S_IFMT; + if (type != S_IFDIR) { /* It's UNLINK */ #ifdef MSNFS if ((fhp->fh_export->ex_flags & NFSEXP_MSNFS) &&