Re: [PATCH 05/19] NFS: Use local caching
- From: Trond Myklebust <trond.myklebust@xxxxxxxxxx>
- Date: Wed, 15 Nov 2006 11:52:45 -0500
On Wed, 2006-11-15 at 16:00 +0000, David Howells wrote:
Trond Myklebust <trond.myklebust@xxxxxxxxxx> wrote:
Why is fscache being given a vote on whether or not the NFS page can be
removed from the mapping? If the file has changed on the server, so that
we have to invalidate the mapping, then I don't care about the fact that
fscache is busy: the page has to go.
This is releasepage() not invalidatepage(). It is conditional.
...and invalidate_complete_page2() calls try_to_release_page() which
again calls releasepage(). Success or failure of the latter should
therefore not depend on the internal fscache state.
@@ -942,11 +954,13 @@ static int nfs_update_inode(struct inode
...
+ nfs_fscache_set_size(inode);
Doesn't nfs_fscache_set_size try to grab rw_semaphores? This function is
_always_ called with the inode->i_lock spinlock held.
Hmmm... I wonder if I need to do this in nfs_update_inode() at all. Won't the
pages and the cache object attached to an inode be discarded anyway if the file
attributes returned by the server change?
In the case of a read-only file, yes. That is not true of a read/write
file.
static void nfs_readpage_release(struct nfs_page *req)
{
+ struct inode *d_inode = req->wb_context->dentry->d_inode;
+
+ if (PageUptodate(req->wb_page))
+ nfs_readpage_to_fscache(d_inode, req->wb_page, 0);
+
Will usually be called from an rpciod context. Should therefore not be
grabbing semaphores, doing memory allocation etc.
Is it possible to make an NFS kernel thread that can have completed nfs_page
structs queued for writing to the cache?
Why should we add extra context switches for the non-fscache case? Just
move the call to nfs_readpage_to_fscache into its own kernel thread.
Trond
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
- References:
- Re: [PATCH 05/19] NFS: Use local caching
- From: Trond Myklebust
- [PATCH 00/19] Permit filesystem local caching and NFS superblock sharing
- From: David Howells
- [PATCH 05/19] NFS: Use local caching
- From: David Howells
- Re: [PATCH 05/19] NFS: Use local caching
- From: David Howells
- Re: [PATCH 05/19] NFS: Use local caching
- Prev by Date: Re: Yet another borken page_count() check in invalidate_inode_pages2()....
- Next by Date: Re: [discuss] Re: 2.6.19-rc5: known regressions (v3)
- Previous by thread: Re: [PATCH 05/19] NFS: Use local caching
- Next by thread: Re: [PATCH 05/19] NFS: Use local caching
- Index(es):
Relevant Pages
|