let alloc_inode () = let start = super_block.last_free_inode + 1 in let rec find current = let current = current mod super_block.inode_nb + 1 in let inode = read_inode current in if inode.stats.st_nlink = 0 then begin super_block.last_free_inode <- current; inode end else let next = current + 1 in if next = start then failwith "Disk is full" else find next in find start;;; |