(* début de la table des blocs dans l'inode *)
  let blocktbl_offset = 3;;
  (* taille maximale d'un fichier *)
  let max_file_size = D.block_size * (D.block_size - blocktbl_offset);;
  (* construit un inode à partir des données du disque *)
  let read_inode n =
    let buffer = Array.create D.block_size 0 in
    D.read n buffer 0;
    let kind = match buffer.(0) with
      0 -> S_REG
    | 1 -> S_DIR
    | 2 -> S_LNK
    | _ -> raise (File_system_error "Inconsistant block"in
    if  buffer.(2) > max_file_size then
      raise (File_system_error "Inconsistant file system");
    let init_block i = buffer.(i + blocktbl_offsetin
    let nb = D.block_size - blocktbl_offset in
    let blocktbl = Array.init nb init_block in
    { reference_number = 0; stats =
      { st_dev = 0;
        st_ino = n ;
        st_kind = kind ;
        st_nlink = buffer.(1);
        st_size = buffer.(2)};
      blocktbl = blocktbl };;