fusefs_link returns the wrong error code when attempting to create a hard link to a directory. It returns EISDIR when it should instead return EPERM. Discovered while running the ffs test suite on ntfs-3g and confirmed by comparing to ufs.
This is the description for the test that fails: </usr/src/regress/sys/ffs/tests/link/11.t> "link returns EPERM if the source file is a directory" This patch changes the error code to EPERM. ok? Index: fuse_vnops.c =================================================================== RCS file: /cvs/src/sys/miscfs/fuse/fuse_vnops.c,v retrieving revision 1.35 diff -u -p -u -p -r1.35 fuse_vnops.c --- fuse_vnops.c 27 Nov 2017 12:54:13 -0000 1.35 +++ fuse_vnops.c 27 Nov 2017 13:49:15 -0000 @@ -565,7 +565,7 @@ fusefs_link(void *v) } if (vp->v_type == VDIR) { VOP_ABORTOP(dvp, cnp); - error = EISDIR; + error = EPERM; goto out2; } if (dvp->v_mount != vp->v_mount) {