On Mon, Oct 26, 2020 at 05:14:35PM -0700, Linus Torvalds wrote: > On Mon, Oct 26, 2020 at 4:50 PM Jason Gunthorpe <jgg@xxxxxxxxxx> wrote: > > > > Right, it isn't a "seqcount" because the read side doesn't spin. > > Not all readers spin for seqcount either. > > Sure, it's the *common* case, but look at name resolution - it will > basically fail on a seqcount failure in RCU mode, and go to the "slow > and safe" version: > > if (unlikely(read_seqcount_retry(&d->d_seq, nd->seq))) > return -ECHILD; > > Exactly like gup_fast vs fork, in fact. > > So no, you don't need to retry for seqcount failures, doing > > seq = seqcount_begin(..); > ... optimistic fast case ... > if (!read_seqcount_retry(.., seq)) > return 0; // success > .. do slow case ... > > is valid and happens. Okay, I see d_seq using one of the raw_write versions, so I'll make this look like that Thanks, Jason