let read_block p n =
      if not p.part_alive then
        system_error EIO "read_block: not alive" p.part_name;
      let buffer = String.create p.block_size in
      try lseek_block p nreally_read p.part_fd buffer 0 p.block_sizebuffer
      with Unix.Unix_error (_,_,_) | End_of_file ->
          system_error EIO "readblock: Unix_error" p.part_name