kernel - Improve NFS server error responses when an inode goes away
authorMatthew Dillon <dillon@apollo.backplane.com>
Fri, 23 Mar 2012 20:38:29 +0000 (13:38 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Thu, 29 Mar 2012 23:06:58 +0000 (16:06 -0700)
* When an inode goes away and FHTOVP fails return ESTALE instead of
  what the VFS returned.

* Greatly improves the re-acquisition of files on NFS clients which have
  been ripped out by the server or other clients.

sys/vfs/nfs/nfs_subs.c

index 3e98d5f..0e12c6c 100644 (file)
@@ -1228,7 +1228,7 @@ nfsrv_fhtovp(fhandle_t *fhp, int lockflag,
                return (error); 
        error = VFS_FHTOVP(mp, NULL, &fhp->fh_fid, vpp);
        if (error)
-               return (error);
+               return (ESTALE);
 #ifdef MNT_EXNORESPORT
        if (!(exflags & (MNT_EXNORESPORT|MNT_EXPUBLIC))) {
                saddr = (struct sockaddr_in *)nam;