Re: [RFC v2] nvfs: a filesystem for persistent memory

From: Al Viro
Date: Mon Jan 11 2021 - 09:45:27 EST


On Mon, Jan 11, 2021 at 11:57:08AM +0000, David Laight wrote:
> > > > size = copy_to_iter(to, ptr, size);
> > > > if (unlikely(!size)) {
> > > > r = -EFAULT;
> > > > goto ret_r;
> > > > }
> > > >
> > > > pos += size;
> > > > total += size;
> > > > } while (iov_iter_count(to));
> > >
> > > That isn't the best formed loop!
> > >
> > > David
> >
> > I removed the second "while" statement and fixed the arguments to
> > copy_to_iter - other than that, Al's function works.
>
> The extra while is easy to write and can be difficult to spot.
> I've found them looking as the object code before now!

That extra while comes from editing cut'n'pasted piece of
source while writing a reply. Hint: original had been a do-while.

> Oh - the error return for copy_to_iter() is wrong.
> It should (probably) return 'total' if it is nonzero.

copy_to_iter() call there has an obvious problem
(arguments in the wrong order), but return value is handled
correctly. It does not do a blind return -EFAULT. RTFS...