From: Miklos Szeredi <miklos@szeredi.hu>
To: linux-fsdevel@vger.kernel.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org
Cc: jens.axboe@oracle.com, akpm@linux-foundation.org,
torvalds@linux-foundation.org
Subject: [RFC PATCH 4/6] fuse: get page reference for readpages
Date: Wed, 28 Apr 2010 18:16:40 +0200 [thread overview]
Message-ID: <20100428161713.971813259@szeredi.hu> (raw)
In-Reply-To: <20100428161636.272097923@szeredi.hu>
[-- Attachment #1: fuse-get-page-ref-for-readpages.patch --]
[-- Type: text/plain, Size: 1386 bytes --]
Acquire a page ref on pages in ->readpages() and release them when the
read has finished. Not acquiring a reference didn't seem to cause any
trouble since the page is locked and will not be kicked out of the
page cache during the read.
However the following patches will want to remove the page from the
cache so a separate ref is needed. Making the reference in req->pages
explicit also makes the code easier to understand.
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
---
fs/fuse/file.c | 2 ++
1 file changed, 2 insertions(+)
Index: linux-2.6/fs/fuse/file.c
===================================================================
--- linux-2.6.orig/fs/fuse/file.c 2010-04-28 15:50:32.000000000 +0200
+++ linux-2.6/fs/fuse/file.c 2010-04-28 15:50:35.000000000 +0200
@@ -536,6 +536,7 @@ static void fuse_readpages_end(struct fu
else
SetPageError(page);
unlock_page(page);
+ page_cache_release(page);
}
if (req->ff)
fuse_file_put(req->ff);
@@ -589,6 +590,7 @@ static int fuse_readpages_fill(void *_da
return PTR_ERR(req);
}
}
+ page_cache_get(page);
req->pages[req->num_pages] = page;
req->num_pages++;
return 0;
--
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2010-04-28 16:17 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-28 16:16 [RFC PATCH 0/6] fuse: implement zero copy read Miklos Szeredi
2010-04-28 16:16 ` [RFC PATCH 1/6] mm: export lru_cache_add_*() to modules Miklos Szeredi
2010-04-28 16:16 ` [RFC PATCH 2/6] mm: export remove_from_page_cache() " Miklos Szeredi
2010-04-28 16:16 ` [RFC PATCH 3/6] fuse: use get_user_pages_fast() Miklos Szeredi
2010-04-28 16:16 ` Miklos Szeredi [this message]
2010-04-28 16:16 ` [RFC PATCH 5/6] fuse: support splice() writing to fuse device Miklos Szeredi
2010-04-28 16:16 ` [RFC PATCH 6/6] fuse: allow splice to move pages Miklos Szeredi
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=20100428161713.971813259@szeredi.hu \
--to=miklos@szeredi.hu \
--cc=akpm@linux-foundation.org \
--cc=jens.axboe@oracle.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox