(* 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;;