When write accessing a shared resource protected by a seqlock, a writer must obtain an exclusive lock before entering the critical section. So, as with spinlocks, it makes sense for write accessing with seqlock to have common variants like *_irqsave and *_bh. But LDD3 (on page 128) says:
If your seqlock might be accessed from an interrupt handler, you should use the IRQ-safe versions instead:
unsigned int read_seqbegin_irqsave(seqlock_t *lock, unsigned long flags); int read_seqretry_irqrestore(seqlock_t *lock, unsigned int seq, unsigned long flags);
In my understanding, since it's designed for readers to be able to freely access the shared resource (only check consistencies at the end and retry if needed), it's perfectly OK for a read access to be interrupted by the scheduler or an hardware interrupt. Am I missing something? Thanks.