All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <gregkh@linuxfoundation.org>
To: Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: Christoph Hellwig <hch@lst.de>,
	arnd@arndb.de, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] /dev/zero: also implement ->read
Date: Thu, 3 Sep 2020 20:02:17 +0200	[thread overview]
Message-ID: <20200903180217.GA2038804@kroah.com> (raw)
In-Reply-To: <1bc34841-f1a3-8a9b-cb48-10930ec55d71@csgroup.eu>

On Thu, Sep 03, 2020 at 07:51:07PM +0200, Christophe Leroy wrote:
> 
> 
> Le 03/09/2020 à 17:59, Christoph Hellwig a écrit :
> > Christophe reported a major speedup due to avoiding the iov_iter
> > overhead, so just add this trivial function.  Note that /dev/zero
> > already implements both an iter and non-iter writes so this just
> > makes it more symmetric.
> > 
> > Christophe Leroy <christophe.leroy@csgroup.eu>
> > Signed-off-by: Christoph Hellwig <hch@lst.de>
> > ---
> >   drivers/char/mem.c | 22 ++++++++++++++++++++++
> >   1 file changed, 22 insertions(+)
> > 
> > diff --git a/drivers/char/mem.c b/drivers/char/mem.c
> > index abd4ffdc8cdebc..1dc99ab158457a 100644
> > --- a/drivers/char/mem.c
> > +++ b/drivers/char/mem.c
> > @@ -726,6 +726,27 @@ static ssize_t read_iter_zero(struct kiocb *iocb, struct iov_iter *iter)
> >   	return written;
> >   }
> > +static ssize_t read_zero(struct file *file, char __user *buf,
> > +			 size_t count, loff_t *ppos)
> > +{
> > +	size_t cleared = 0;
> > +
> > +	while (count) {
> > +		size_t chunk = min_t(size_t, count, PAGE_SIZE);
> > +
> > +		if (clear_user(buf + cleared, chunk))
> > +			return cleared ? cleared : -EFAULT;
> > +		cleared += chunk;
> > +		count -= chunk;
> > +
> > +		if (signal_pending(current))
> > +			return cleared ? cleared : -ERESTARTSYS;
> > +		cond_resched();
> > +	}
> > +
> > +	return cleared;
> > +}
> > +
> >   static int mmap_zero(struct file *file, struct vm_area_struct *vma)
> >   {
> >   #ifndef CONFIG_MMU
> > @@ -921,6 +942,7 @@ static const struct file_operations zero_fops = {
> >   	.llseek		= zero_lseek,
> >   	.write		= write_zero,
> >   	.read_iter	= read_iter_zero,
> > +	.read		= read_zero,
> 
> Wondering if .read should be before .write, so that we get in order read,
> write, read_iter, write_iter.

It really does not matter :)

thanks,

greg k-h

  reply	other threads:[~2020-09-03 18:02 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-03 15:59 [PATCH] /dev/zero: also implement ->read Christoph Hellwig
2020-09-03 16:05 ` Christophe Leroy
2020-09-03 21:35   ` David Laight
2020-09-06 18:21     ` Pavel Machek
2020-09-06 18:35       ` Christophe Leroy
2020-09-06 18:38         ` Pavel Machek
2020-09-06 18:47           ` Christophe Leroy
2020-09-06 20:09           ` gregkh
2020-09-06 20:52         ` David Laight
2020-09-07  4:44           ` Christophe Leroy
2020-09-07  8:18             ` David Laight
2020-09-03 17:51 ` Christophe Leroy
2020-09-03 18:02   ` Greg KH [this message]
2020-09-06 22:34 ` Rasmus Villemoes
2020-09-07  6:20   ` Christoph Hellwig
2020-09-07  6:50     ` Rasmus Villemoes
2020-09-07  7:30       ` Christoph Hellwig

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200903180217.GA2038804@kroah.com \
    --to=gregkh@linuxfoundation.org \
    --cc=arnd@arndb.de \
    --cc=christophe.leroy@csgroup.eu \
    --cc=hch@lst.de \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.