diff options
| author | Konstantin Belousov <kib@FreeBSD.org> | 2006-09-18 13:23:08 +0000 |
|---|---|---|
| committer | Konstantin Belousov <kib@FreeBSD.org> | 2006-09-18 13:23:08 +0000 |
| commit | e7f9b74438fd1e69883729b7159a18c313bed769 (patch) | |
| tree | a22547e48d6aa3545a66b54d100fbcab374bd630 /sys/fs/devfs/devfs_devs.c | |
| parent | 827293df543fb175ab1b289c47d2fbb9f1273c36 (diff) | |
Notes
Diffstat (limited to 'sys/fs/devfs/devfs_devs.c')
| -rw-r--r-- | sys/fs/devfs/devfs_devs.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/sys/fs/devfs/devfs_devs.c b/sys/fs/devfs/devfs_devs.c index d933f9f19fba..c8408ce4ac19 100644 --- a/sys/fs/devfs/devfs_devs.c +++ b/sys/fs/devfs/devfs_devs.c @@ -179,6 +179,7 @@ devfs_newdirent(char *name, int namelen) vfs_timestamp(&de->de_ctime); de->de_mtime = de->de_atime = de->de_ctime; de->de_links = 1; + de->de_holdcnt = 1; #ifdef MAC mac_init_devfsdirent(de); #endif @@ -230,9 +231,18 @@ devfs_vmkdir(struct devfs_mount *dmp, char *name, int namelen, struct devfs_dire } void +devfs_dirent_free(struct devfs_dirent *de) +{ + free(de, M_DEVFS3); +} + +void devfs_delete(struct devfs_mount *dm, struct devfs_dirent *de) { + KASSERT((de->de_flags & DE_DOOMED) == 0, + ("devfs_delete doomed dirent")); + de->de_flags |= DE_DOOMED; if (de->de_symlink) { free(de->de_symlink, M_DEVFS); de->de_symlink = NULL; @@ -251,7 +261,8 @@ devfs_delete(struct devfs_mount *dm, struct devfs_dirent *de) free_unr(devfs_inos, de->de_inode); de->de_inode = 0; } - free(de, M_DEVFS3); + if (DEVFS_DE_DROP(de)) + devfs_dirent_free(de); } /* |
