(* clear file *)
  let itrunc inode size =
    let bs = block_size in
    if size < inode.stats.st_size then
      for k = (size + bs -1) / bs to inode.stats.st_size / bs do
        if inode.blocktbl.(k) > 0 then
          begin
            free_block inode.blocktbl.(k);
            (* on maintient un 0 dans blocktbl pour les blocs non alloués *)
            inode.blocktbl.(k) <- 0;
          end
      done;
    inode.stats.st_size <- size;;
      
let ftruncate descr size =
  if descr.closed
  then system_error EINVAL "ftruncate" "closed descr"
  else if descr.inode.stats.st_kind = S_DIR
  then system_error EISDIR "ftruncate" ""
  else itrunc descr.inode size