MCPcopy Create free account
hub / github.com/F-Stack/f-stack / pwd_ensure_dirs

Function pwd_ensure_dirs

freebsd/kern/kern_descrip.c:4005–4039  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4003}
4004
4005void
4006pwd_ensure_dirs(void)
4007{
4008 struct pwddesc *pdp;
4009 struct pwd *oldpwd, *newpwd;
4010
4011 pdp = curproc->p_pd;
4012 PWDDESC_XLOCK(pdp);
4013 #pragma GCC diagnostic ignored "-Wcast-qual"
4014 oldpwd = PWDDESC_XLOCKED_LOAD_PWD(pdp);
4015 #pragma GCC diagnostic error "-Wcast-qual"
4016 if (oldpwd->pwd_cdir != NULL && oldpwd->pwd_rdir != NULL) {
4017 PWDDESC_XUNLOCK(pdp);
4018 return;
4019 }
4020 PWDDESC_XUNLOCK(pdp);
4021
4022 newpwd = pwd_alloc();
4023 PWDDESC_XLOCK(pdp);
4024 #pragma GCC diagnostic ignored "-Wcast-qual"
4025 oldpwd = PWDDESC_XLOCKED_LOAD_PWD(pdp);
4026 #pragma GCC diagnostic error "-Wcast-qual"
4027 pwd_fill(oldpwd, newpwd);
4028 if (newpwd->pwd_cdir == NULL) {
4029 vrefact(rootvnode);
4030 newpwd->pwd_cdir = rootvnode;
4031 }
4032 if (newpwd->pwd_rdir == NULL) {
4033 vrefact(rootvnode);
4034 newpwd->pwd_rdir = rootvnode;
4035 }
4036 pwd_set(pdp, newpwd);
4037 PWDDESC_XUNLOCK(pdp);
4038 pwd_drop(oldpwd);
4039}
4040
4041void
4042pwd_set_rootvnode(void)

Callers 3

zfs_file_openFunction · 0.85
open_fileFunction · 0.85
set_rootvnodeFunction · 0.85

Calls 5

pwd_allocFunction · 0.85
pwd_fillFunction · 0.85
pwd_setFunction · 0.85
pwd_dropFunction · 0.85
vrefactFunction · 0.70

Tested by

no test coverage detected