(* retourne un bloc libre et met à jour la liste des blocks libres *)
  let alloc_block () =
    if super_block.free_blocks.head = 0 then
      raise (File_system_exception "File system full");
    if super_block.free_blocks.nb_free == 0 then
      begin
        let fresh_item = super_block.free_blocks.head in
        let buffer = Array.create D.block_size 0 in
        D.read fresh_item buffer 0;
        super_block.free_blocks.head <- buffer.(0);
        super_block.free_blocks.nb_free <- D.block_size - 1;
        fresh_item
      end
    else
      begin
        let buffer = Array.create D.block_size 0 in
        D.read super_block.free_blocks.head buffer 0;
        let fresh_item = buffer.(super_block.free_blocks.nb_freein
        super_block.free_blocks.nb_free <- super_block.free_blocks.nb_free - 1;
        fresh_item
      end;;