// LOCKS_EXCLUDED(fs.mu) func (fs *fileSystem) OpenDir( op *fuseops.OpenDirOp) (err error) { fs.mu.Lock() defer fs.mu.Unlock() // Make sure the inode still exists and is a directory. If not, something has // screwed up because the VFS layer shouldn't have let us forget the inode // before opening it. in := fs.inodes[op.Inode].(inode.DirInode) // Allocate a handle. handleID := fs.nextHandleID fs.nextHandleID++ fs.handles[handleID] = newDirHandle(in, fs.implicitDirs) op.Handle = handleID return }
func (fs *Goofys) OpenDir( ctx context.Context, op *fuseops.OpenDirOp) (err error) { fs.mu.Lock() handleID := fs.nextHandleID fs.nextHandleID++ in := fs.getInodeOrDie(op.Inode) fs.mu.Unlock() // XXX/is this a dir? dh := in.OpenDir() fs.mu.Lock() defer fs.mu.Unlock() fs.dirHandles[handleID] = dh op.Handle = handleID return }