From 43118d9396d26adf107530d49b60245b756d7455 Mon Sep 17 00:00:00 2001 From: Shantonu Sen Date: Tue, 3 Feb 2004 05:10:24 +0000 Subject: [PATCH] darwin-avoid-hang-on-rename-20040202 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 --- src/afs/DARWIN/osi_vnodeops.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/afs/DARWIN/osi_vnodeops.c b/src/afs/DARWIN/osi_vnodeops.c index d51c10cd5..61693c7c4 100644 --- a/src/afs/DARWIN/osi_vnodeops.c +++ b/src/afs/DARWIN/osi_vnodeops.c @@ -899,6 +899,15 @@ afs_vop_rename(ap) 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. -- 2.39.5