Here is the latest version of my patch that's revised according to my
discussions with Heikki and Simon:
Changes:
  * uses LWLocks when accessing shared memory
  * removes the "sync_seqscan_offset" feature
  * uses the relfilenode as a key rather than relation OID
  * fixes regression test failure
  * uses a simple LRU (that stays in fixed-size shared memory) to track
the locations of other concurrent scans
For the LRU I used a doubly-linked list, which isn't strictly necessary.
However, we may decide to use a hash table for the lookup, in which case
the extra pointers will be useful.
Regards,
    Jeff Davis