Messages in this thread | | | Subject | Re: [PATCH v2 4/4] splice: fix updating sd->pos wrongly | From | Miklos Szeredi <> | Date | Fri, 28 May 2010 13:11:37 +0200 |
| |
On Fri, 28 May 2010, Changli Gao wrote: > On Fri, May 28, 2010 at 6:13 PM, Miklos Szeredi <miklos@szeredi.hu> wrote: > > On Fri, 28 May 2010, Changli Gao wrote: > >> On Fri, May 28, 2010 at 5:42 PM, Miklos Szeredi <miklos@szeredi.hu> wrote: > >> > On Wed, 26 May 2010, Changli Gao wrote: > >> >> fix updating sd->pos wrongly. > >> >> > >> >> In error path, we don't need to updating sd->pos, if the file isn't seekable. > >> > > >> > This patch is nonsense. Why should we handle sd->pos != 0 case > >> > differently? > >> > > >> > >> If the in file isn't seekable, its splice_read won't update *ppos, so > >> in the error path, we'd better not change it too. Otherwise, some > >> assumption will go wrong. > > > > That may be true, but the patch is still nonsense. > > > > Look, your patch is updating/not updating sd->pos based on whether it > > is zero or not. It will prevent updating the position for sockets, > > but it will also prevent updating the position for regular files if > > the position is zero, which is really not what we want. > > I think you misread my patch.
Right :)
> Before checking the sd->pos, sd->pos > already is updated with the value returned by splice_read(), so if in > file is seekabble, sd->pos is non-zero when I checking it.
I see the logic now. But it's really confusing, at least some comments would be needed.
But I think it would be better not to try reusing sd->pos for reading, but supplying an "loff_t *read_ppos" to splice_direct_to_actor and leaving sd->pos alone (for the write side to use and update as necessary).
Thanks, Miklos -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |