(* write inode to disk *) let write_inode inode = if inode.stats.st_size > max_file_size then raise (File_system_error "Inconsistant file system"); let buffer = Array.create D.block_size 0 in buffer.(0) <- begin match inode.stats.st_kind with S_REG -> 0 | S_DIR -> 1 | S_LNK -> 2 end; buffer.(1) <- inode.stats.st_nlink; buffer.(2) <- inode.stats.st_size; let last_block = D.block_size - blocktbl_offset - 1 in for i = 0 to last_block do buffer.(i+blocktbl_offset) <- inode.blocktbl.(i) done; D.write inode.stats.st_ino buffer 0;; |