nfsd4: don't remap EISDIR errors in rename
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / fs / nfsd / nfs4proc.c
index 5dee81141ab71983f0f8985d1969fc8ab738a967..8ae5abfe6ba24fd699aed2e156a2b2f815695c04 100644 (file)
@@ -813,21 +813,11 @@ nfsd4_rename(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
        status = nfsd_rename(rqstp, &cstate->save_fh, rename->rn_sname,
                             rename->rn_snamelen, &cstate->current_fh,
                             rename->rn_tname, rename->rn_tnamelen);
-
-       /* the underlying filesystem returns different error's than required
-        * by NFSv4. both save_fh and current_fh have been verified.. */
-       if (status == nfserr_isdir)
-               status = nfserr_exist;
-       else if ((status == nfserr_notdir) &&
-                  (S_ISDIR(cstate->save_fh.fh_dentry->d_inode->i_mode) &&
-                   S_ISDIR(cstate->current_fh.fh_dentry->d_inode->i_mode)))
-               status = nfserr_exist;
-
-       if (!status) {
-               set_change_info(&rename->rn_sinfo, &cstate->current_fh);
-               set_change_info(&rename->rn_tinfo, &cstate->save_fh);
-       }
-       return status;
+       if (status)
+               return status;
+       set_change_info(&rename->rn_sinfo, &cstate->current_fh);
+       set_change_info(&rename->rn_tinfo, &cstate->save_fh);
+       return nfs_ok;
 }
 
 static __be32