diff options
author | phk <phk@FreeBSD.org> | 2001-09-30 08:43:33 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2001-09-30 08:43:33 +0000 |
commit | 4d3230f1e77522265664d5246559edd3c5e2eb22 (patch) | |
tree | e593aa597b2515c29139a500fba3cc149a621907 /sys/fs/devfs/devfs_vnops.c | |
parent | 6f6b53959a47909867479a55e7e3377e0daf5d8b (diff) | |
download | FreeBSD-src-4d3230f1e77522265664d5246559edd3c5e2eb22.zip FreeBSD-src-4d3230f1e77522265664d5246559edd3c5e2eb22.tar.gz |
The behaviour of whiteout'ing symlinks were too confusing, instead
remove them when asked to.
Diffstat (limited to 'sys/fs/devfs/devfs_vnops.c')
-rw-r--r-- | sys/fs/devfs/devfs_vnops.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sys/fs/devfs/devfs_vnops.c b/sys/fs/devfs/devfs_vnops.c index ba6231c..e8477b7 100644 --- a/sys/fs/devfs/devfs_vnops.c +++ b/sys/fs/devfs/devfs_vnops.c @@ -613,7 +613,14 @@ devfs_remove(ap) lockmgr(&dmp->dm_lock, LK_EXCLUSIVE, 0, curthread); dd = ap->a_dvp->v_data; de = vp->v_data; - de->de_flags |= DE_WHITEOUT; + if (de->de_dirent->d_type == DT_LNK) { + TAILQ_REMOVE(&dd->de_dlist, de, de_list); + if (de->de_vnode) + de->de_vnode->v_data = NULL; + FREE(de, M_DEVFS); + } else { + de->de_flags |= DE_WHITEOUT; + } lockmgr(&dmp->dm_lock, LK_RELEASE, 0, curthread); return (0); } |