[PATCH 04/12] splice: lift pipe_lock out of splice_to_pipe()
Al Viro
viro at ZenIV.linux.org.uk
Mon Sep 26 23:14:14 CDT 2016
On Mon, Sep 26, 2016 at 03:35:12PM +0200, Miklos Szeredi wrote:
> > - if (spd.nr_pages <= 0)
> > - ret = spd.nr_pages;
> > - else
> > - ret = splice_to_pipe(pipe, &spd);
> > -
> > + pipe_lock(pipe);
> > + ret = wait_for_space(pipe, flags);
> > + if (!ret) {
> > + spd.nr_pages = get_iovec_page_array(&from, spd.pages,
> > + spd.partial,
> > + spd.nr_pages_max);
> > + if (spd.nr_pages <= 0)
> > + ret = spd.nr_pages;
> > + else
> > + ret = splice_to_pipe(pipe, &spd);
> > + pipe_unlock(pipe);
^^^^^^^^^^^^^^^^
> > + if (ret > 0)
> > + wakeup_pipe_readers(pipe);
> > + }
>
> Unbalanced pipe_lock()?
Reordering braindamage; fixed.
> Also, while it doesn't hurt, the constification of the "from" argument
> of get_iovec_page_array() looks only noise in this patch.
Rudiment of earlier variant, when we did a non-trivial loop in the caller.
Not needed anymore, removed.
Fixed variant force-pushed to the same branch
More information about the xfs
mailing list