The storeFileScanner's seekAtOrAfter method will position at the beginning of the file when the passed KV is smaller than first KV in file. While for reseekAtOrAfter, I think it should also do the same thing when it is the first time it been seeked. originally, this is workaround by adding a isReseekable property in StoreFileScanner, and is checked upon each enforceSeek(), if it is not seeked before, it will go with seek approaching instead of reseek approaching. While why not make reseekAtOrAfter working correctly for the first time it been reseek (also never been seek before), since the file is never seeked before, so position it at the beginning of the file don't break the idea of "reseek", say never rewind.
It will save the effort for
HBASE-8001, with this fixed, it won't need to check isReseekable any more.