FIXES 2967
this version deals with afs being multiply mounted.
return EXDEV on cross device rename attempts as upper layer doesn't deal for us
(cherry picked from commit
43118d9396d26adf107530d49b60245b756d7455)
register struct vnode *fdvp = ap->a_fdvp;
struct proc *p=fcnp->cn_proc;
+ /* Check for cross-device rename.
+ * For AFS, this means anything not in AFS-space
+ */
+ if ((0 != strcmp(tdvp->v_mount->mnt_stat.f_fstypename, "afs")) ||
+ (tvp && (0 != strcmp(tvp->v_mount->mnt_stat.f_fstypename, "afs")))) {
+ error = EXDEV;
+ goto abortit;
+ }
+
/*
* if fvp == tvp, we're just removing one name of a pair of
* directory entries for the same element. convert call into rename.