| vfs_may_link#(INO, USER, DIRS, FILES, ASYNCED; INODE, DENT, ERR) {afs_iget#(INO, DIRS, FILES, ASYNCED; INODE, ERR); if ERR = ESUCCESS then if ¬ INODE.directory then ERR := ENOTDIR else if ¬ px(USER, INODE.meta) then ERR := EACCESS else {afs_lookup#(INO, DIRS, FILES, ASYNCED; DENT, ERR); if ERR = ESUCCESS then afs_iget#(DENT.ino, DIRS, FILES, ASYNCED; INODE, ERR); if ERR = ESUCCESS ∧ INODE.directory then ERR := EISDIR} } |