Re: Linus rollup

Andrew Morton
2003-01-30T02:03:06Z

Andrea Arcangeli <andrea@suse.de> wrote:
>
> On Wed, Jan 29, 2003 at 06:00:54PM -0800, Andrew Morton wrote:
> > Andrea Arcangeli <andrea@suse.de> wrote:
> > >
> > > On Wed, Jan 29, 2003 at 05:27:43PM -0800, Andrew Morton wrote:
> > > > @@ -82,11 +85,12 @@ static inline int fr_write_trylock(frloc
> > > >
> > > > if (ret) {
> > > > ++rw->pre_sequence;
> > > > - wmb();
> > > > + mb();
> > > > }
> > >
> > > this isn't needed
> > >
> > >
> > > if we hold the spinlock, the serialized memory can't be change under us,
> > > so there's no need to put a read barrier, we only care that pre_sequence
> > > is visible before the chagnes are visible and before post_sequence is
> > > visible, hence only wmb() (after spin_lock and pre_sequence++) is
> > > needed there and only rmb() is needed in the read-side.
> > >
> >
> > OK, thanks muchly.
> >
> > Lots more updates. Here's the version which I currently have. Looks like
> > fr_write_lock() and fr_write_unlock() need to be switched back to rmb()?
>
> you certainly mean wmb() not rmb(), right? If yes, then yes.

Yup.

> I actually didn't notice the write_begin/end, not sure who could need
> them, I would suggest removing them, rather than to revert the mb()
> there too.

The intent here was to use them for i_size updates. In situations where
writer serialisation was provided by external means (i_sem), and the spinlock
is not needed.

It's causing confusion so yeah, I'll probably pull them out.