Implemented fs.allocateInode.

geesefs-0-30-9
Aaron Jacobs 2015-03-03 09:39:01 +11:00
parent d81d961c04
commit b6e50a1953
1 changed files with 18 additions and 1 deletions

View File

@ -147,7 +147,24 @@ func (fs *memFS) getInodeForReadingOrDie(id fuse.InodeID) (inode *inode) {
//
// EXCLUSIVE_LOCKS_REQUIRED(fs.mu)
// EXCLUSIVE_LOCK_FUNCTION(inode.mu)
func (fs *memFS) allocateInode(mode os.FileMode) (id fuse.InodeID, inode *inode)
func (fs *memFS) allocateInode(
mode os.FileMode) (id fuse.InodeID, inode *inode) {
// Create the inode.
inode = newInode(mode)
// Re-use a free ID if possible. Otherwise mint a new one.
numFree := len(fs.freeInodes)
if numFree != 0 {
id = fs.freeInodes[numFree-1]
fs.freeInodes = fs.freeInodes[:numFree-1]
fs.inodes[id] = inode
} else {
id = fuse.InodeID(len(fs.inodes))
fs.inodes = append(fs.inodes, inode)
}
return
}
func (fs *memFS) LookUpInode(
ctx context.Context,