aboutsummaryrefslogtreecommitdiff
path: root/sys/fs/devfs
diff options
context:
space:
mode:
authorPoul-Henning Kamp <phk@FreeBSD.org>2001-09-30 08:43:33 +0000
committerPoul-Henning Kamp <phk@FreeBSD.org>2001-09-30 08:43:33 +0000
commit40739c02ae98972c78b231e2b406606aa9d58c9b (patch)
treee593aa597b2515c29139a500fba3cc149a621907 /sys/fs/devfs
parent66a686ee82d45335dffc818a613e330308b276d5 (diff)
Notes
Diffstat (limited to 'sys/fs/devfs')
-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 ba6231c5b826..e8477b7edcc0 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);
}