(* déplace le descripteur à une position donnée dans le flot *)
  let lseek desc offset from =
    if desc.inode.stats.st_size > max_file_size then
      raise (File_system_error "Inconsistant file system");
    let new_block,new_pos = match from with
      SEEK_SET ->
        (offset mod D.block_size,
         offset / D.block_size)
    | SEEK_CUR ->
        ((desc.pos + offsetmod D.block_size,
         (desc.pos + offset) / D.block_size)
    | SEEK_END ->
        ((desc.inode.stats.st_size + offsetmod D.block_size,
         (desc.inode.stats.st_size + offset) / D.block_size)
    in
    if new_block < 0 || new_pos < 0 then
      raise (File_system_exception "Invalid position")
    else
      begin
        desc.pos <- new_pos;
        desc.block <- new_block;
        desc_offset desc
      end;;