summaryrefslogtreecommitdiffstats
path: root/sys/fs/devfs/devfs_vnops.c
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2001-09-30 08:43:33 +0000
committerphk <phk@FreeBSD.org>2001-09-30 08:43:33 +0000
commit4d3230f1e77522265664d5246559edd3c5e2eb22 (patch)
treee593aa597b2515c29139a500fba3cc149a621907 /sys/fs/devfs/devfs_vnops.c
parent6f6b53959a47909867479a55e7e3377e0daf5d8b (diff)
downloadFreeBSD-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.c9
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);
}
OpenPOWER on IntegriCloud