public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] fs/fuse/dev.c: use zero_user_page instead
@ 2007-07-20  9:37 Denis Cheng
  2007-07-20 10:09 ` Dave Young
  0 siblings, 1 reply; 4+ messages in thread
From: Denis Cheng @ 2007-07-20  9:37 UTC (permalink / raw)
  To: Miklos Szeredi; +Cc: fuse-devel, viro, linux-kernel, Denis Cheng

Signed-off-by: Denis Cheng <crquan@gmail.com>
---
I'm not very sure zero_user_page is correctly used here,
so please feel free to give comments.

and why here it uses KM_USER1 not KM_USER0, What are the differences?

 fs/fuse/dev.c |    8 +++-----
 1 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
index 3ad22be..e55b5e8 100644
--- a/fs/fuse/dev.c
+++ b/fs/fuse/dev.c
@@ -533,11 +533,9 @@ static int fuse_copy_do(struct fuse_copy_state *cs, void **val, unsigned *size)
 static int fuse_copy_page(struct fuse_copy_state *cs, struct page *page,
 			  unsigned offset, unsigned count, int zeroing)
 {
-	if (page && zeroing && count < PAGE_SIZE) {
-		void *mapaddr = kmap_atomic(page, KM_USER1);
-		memset(mapaddr, 0, PAGE_SIZE);
-		kunmap_atomic(mapaddr, KM_USER1);
-	}
+	if (page && zeroing && count < PAGE_SIZE)
+		zero_user_page(page, 0, PAGE_SIZE, KM_USER1);
+
 	while (count) {
 		int err;
 		if (!cs->len && (err = fuse_copy_fill(cs)))
-- 
1.5.2.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] fs/fuse/dev.c: use zero_user_page instead
  2007-07-20  9:37 [PATCH] fs/fuse/dev.c: use zero_user_page instead Denis Cheng
@ 2007-07-20 10:09 ` Dave Young
  2007-07-20 10:12   ` rae l
  0 siblings, 1 reply; 4+ messages in thread
From: Dave Young @ 2007-07-20 10:09 UTC (permalink / raw)
  To: Denis Cheng; +Cc: Miklos Szeredi, fuse-devel, viro, linux-kernel

>On 7/20/07, Denis Cheng <crquan@gmail.com> wrote:
> Signed-off-by: Denis Cheng <crquan@gmail.com>
> ---
> I'm not very sure zero_user_page is correctly used here,
> so please feel free to give comments.
>
> and why here it uses KM_USER1 not KM_USER0, What are the differences?
>
>  fs/fuse/dev.c |    8 +++-----
>  1 files changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
> index 3ad22be..e55b5e8 100644
> --- a/fs/fuse/dev.c
> +++ b/fs/fuse/dev.c
> @@ -533,11 +533,9 @@ static int fuse_copy_do(struct fuse_copy_state *cs, void **val, unsigned *size)
>  static int fuse_copy_page(struct fuse_copy_state *cs, struct page *page,
>                           unsigned offset, unsigned count, int zeroing)
>  {
> -       if (page && zeroing && count < PAGE_SIZE) {
> -               void *mapaddr = kmap_atomic(page, KM_USER1);
> -               memset(mapaddr, 0, PAGE_SIZE);
> -               kunmap_atomic(mapaddr, KM_USER1);
> -       }
> +       if (page && zeroing && count < PAGE_SIZE)
> +               zero_user_page(page, 0, PAGE_SIZE, KM_USER1);
Why clear all page? IMHO,only count bytes need to be cleared.
> +
>         while (count) {
>                 int err;
>                 if (!cs->len && (err = fuse_copy_fill(cs)))

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] fs/fuse/dev.c: use zero_user_page instead
  2007-07-20 10:09 ` Dave Young
@ 2007-07-20 10:12   ` rae l
  2007-07-20 10:16     ` Dave Young
  0 siblings, 1 reply; 4+ messages in thread
From: rae l @ 2007-07-20 10:12 UTC (permalink / raw)
  To: Dave Young; +Cc: Miklos Szeredi, fuse-devel, viro, linux-kernel

On 7/20/07, Dave Young <hidave.darkstar@gmail.com> wrote:
> > -       if (page && zeroing && count < PAGE_SIZE) {
> > -               void *mapaddr = kmap_atomic(page, KM_USER1);
> > -               memset(mapaddr, 0, PAGE_SIZE);
> > -               kunmap_atomic(mapaddr, KM_USER1);
> > -       }
> > +       if (page && zeroing && count < PAGE_SIZE)
> > +               zero_user_page(page, 0, PAGE_SIZE, KM_USER1);
> Why clear all page? IMHO,only count bytes need to be cleared.
The original one is memset(mapaddr, 0, PAGE_SIZE), namely clear the whole page.

-- 
Denis Cheng
Linux Application Developer

"One of my most productive days was throwing away 1000 lines of code."
 - Ken Thompson.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] fs/fuse/dev.c: use zero_user_page instead
  2007-07-20 10:12   ` rae l
@ 2007-07-20 10:16     ` Dave Young
  0 siblings, 0 replies; 4+ messages in thread
From: Dave Young @ 2007-07-20 10:16 UTC (permalink / raw)
  To: rae l; +Cc: Miklos Szeredi, fuse-devel, viro, linux-kernel

>On 7/20/07, rae l <crquan@gmail.com> wrote:
> On 7/20/07, Dave Young <hidave.darkstar@gmail.com> wrote:
> > > -       if (page && zeroing && count < PAGE_SIZE) {
> > > -               void *mapaddr = kmap_atomic(page, KM_USER1);
> > > -               memset(mapaddr, 0, PAGE_SIZE);
> > > -               kunmap_atomic(mapaddr, KM_USER1);
> > > -       }
> > > +       if (page && zeroing && count < PAGE_SIZE)
> > > +               zero_user_page(page, 0, PAGE_SIZE, KM_USER1);
> > Why clear all page? IMHO,only count bytes need to be cleared.
> The original one is memset(mapaddr, 0, PAGE_SIZE), namely clear the whole page.
Yes, I have same suspicion with original code.
>
> --
> Denis Cheng
> Linux Application Developer
>
> "One of my most productive days was throwing away 1000 lines of code."
>  - Ken Thompson.
>

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2007-07-20 10:16 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-07-20  9:37 [PATCH] fs/fuse/dev.c: use zero_user_page instead Denis Cheng
2007-07-20 10:09 ` Dave Young
2007-07-20 10:12   ` rae l
2007-07-20 10:16     ` Dave Young

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox