void afsusrdir::clrulink (const str &name) { negcache.remove (name); unlink (name); bumpmtime (); }
bool afsdir::link (afsnode *node, const str &name) { if (entries[name]) return false; vNew afsdirentry (this, name, node); bumpmtime (); return true; }
bool afsdir::unlink (const str &name) { afsdirentry *e = entries[name]; if (e) { bumpmtime (); delete e; } return e; }
void afsroot::mkfattr3 (fattr3 *f, sfs_aid aid) { /* BSD needs the seconds (not just milliseconds/nanoseconds) of the * mtime to change on every lookup/getattr in order to defeat the * name cache. */ if (aid != lastaid) { lastaid = aid; bumpmtime (); } afsdir::mkfattr3 (f, aid); if (afsdir *d = userdir (aid)) { if (d != afs_naroot) f->mode |= 0222; f->nlink += d->getnlinks () - 2; } }