<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/include/linux/nfs_fs.h, branch linux-2.6.23.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.</subtitle>
<id>https://universe.0xinfinity.dev/distro/kernel/atom?h=linux-2.6.23.y</id>
<link rel='self' href='https://universe.0xinfinity.dev/distro/kernel/atom?h=linux-2.6.23.y'/>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/'/>
<updated>2007-09-01T14:14:54Z</updated>
<entry>
<title>NFS: Fix a write request leak in nfs_invalidate_page()</title>
<updated>2007-09-01T14:14:54Z</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2007-08-28T14:29:36Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=1b3b4a1a2deb7d3e5d66063bd76304d840c966b3'/>
<id>urn:sha1:1b3b4a1a2deb7d3e5d66063bd76304d840c966b3</id>
<content type='text'>
Ryusuke Konishi says:

The recent truncate_complete_page() clears the dirty flag from a page
before calling a_ops-&gt;invalidatepage(),
^^^^^^
static void
truncate_complete_page(struct address_space *mapping, struct page *page)
{
        ...
        cancel_dirty_page(page, PAGE_CACHE_SIZE);  &lt;--- Inserted here at
kernel 2.6.20

        if (PagePrivate(page))
                do_invalidatepage(page, 0);   ---&gt; will call
a_ops-&gt;invalidatepage()
        ...
}

and this is disturbing nfs_wb_page_priority() from calling 
nfs_writepage_locked() that is expected to handle the pending
request (=nfs_page) associated with the page.

int nfs_wb_page_priority(struct inode *inode, struct page *page, int how)
{
        ...
        if (clear_page_dirty_for_io(page)) {
                ret = nfs_writepage_locked(page, &amp;wbc);
                if (ret &lt; 0)
                        goto out;
        }
        ...
}

Since truncate_complete_page() will get rid of the page after
a_ops-&gt;invalidatepage() returns, the request (=nfs_page) associated
with the page becomes a garbage in nfs_inode-&gt;nfs_page_tree.
------------------------

Fix this by ensuring that nfs_wb_page_priority() recognises that it may
also need to clear out non-dirty pages that have an nfs_page associated
with them.

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>NFS: Fix put_nfs_open_context</title>
<updated>2007-08-07T19:13:17Z</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2007-07-26T16:06:17Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=5e11934d13c9a3bcb0cadad6c7a7de5c32660422'/>
<id>urn:sha1:5e11934d13c9a3bcb0cadad6c7a7de5c32660422</id>
<content type='text'>
We need to grab the inode-&gt;i_lock atomically with the last reference put in
order to remove the open context that is being freed from the
nfsi-&gt;open_files list.

Fix by converting the kref to a standard atomic counter and then using
atomic_dec_and_lock()...

Thanks to Arnd Bergmann for pointing out the problem.

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>SUNRPC: Clean up the sillyrename code</title>
<updated>2007-07-19T19:21:39Z</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2007-07-14T19:39:58Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=e4eff1a622edd6ab7b73acd5d8763aa2fa3fee49'/>
<id>urn:sha1:e4eff1a622edd6ab7b73acd5d8763aa2fa3fee49</id>
<content type='text'>
Fix a couple of bugs:
 - Don't rely on the parent dentry still being valid when the call completes.
   Fixes a race with shrink_dcache_for_umount_subtree()

 - Don't remove the file if the filehandle has been labelled as stale.

Fix a couple of inefficiencies
 - Remove the global list of sillyrenamed files. Instead we can cache the
   sillyrename information in the dentry-&gt;d_fsdata
 - Move common code from unlink_setup/unlink_done into fs/nfs/unlink.c

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>NFS: Remake nfsroot_mount as a permanent part of NFS client</title>
<updated>2007-07-11T03:40:46Z</updated>
<author>
<name>Chuck Lever</name>
<email>chuck.lever@oracle.com</email>
</author>
<published>2007-07-01T16:13:27Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=3ea97309e6b18bce200211b3f9188e8023321adc'/>
<id>urn:sha1:3ea97309e6b18bce200211b3f9188e8023321adc</id>
<content type='text'>
In preparation for supporting NFSv2 and NFSv3 mount option handling in the
kernel NFS client, convert mount_clnt.c to be a permanent part of the NFS
client, instead of built only when CONFIG_ROOT_NFS is enabled.

In addition, we also replace the "struct sockaddr_in *" argument with
something more generic, to help support IPv6 at some later point.

Signed-off-by: Chuck Lever &lt;chuck.lever@oracle.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>NFS: Add a new NFS debugging flag just for mount processing</title>
<updated>2007-07-11T03:40:45Z</updated>
<author>
<name>Chuck Lever</name>
<email>chuck.lever@oracle.com</email>
</author>
<published>2007-07-01T16:12:51Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=f18289931d705f9c4634b361341a1677bea97aca'/>
<id>urn:sha1:f18289931d705f9c4634b361341a1677bea97aca</id>
<content type='text'>
Note to self: fix up /usr/sbin/rpcdebug too

Signed-off-by: Chuck Lever &lt;chuck.lever@oracle.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>NFS: Clean up nfs_size_to_loff_t()</title>
<updated>2007-07-11T03:40:43Z</updated>
<author>
<name>Chuck Lever</name>
<email>chuck.lever@oracle.com</email>
</author>
<published>2007-07-01T16:12:14Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=433c92379d9c2c59c2ebc7628fe4fb02cfc2daf8'/>
<id>urn:sha1:433c92379d9c2c59c2ebc7628fe4fb02cfc2daf8</id>
<content type='text'>
Use the same file size limit that lockd uses.

Signed-off-by: Chuck Lever &lt;chuck.lever@oracle.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>NFSv4: Defer inode revalidation when setting up a delegation</title>
<updated>2007-07-11T03:40:41Z</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2007-07-03T20:10:55Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=412c77cee6d6e73fbe1dc3d67f52163efed33fc4'/>
<id>urn:sha1:412c77cee6d6e73fbe1dc3d67f52163efed33fc4</id>
<content type='text'>
Currently we force a synchronous call to __nfs_revalidate_inode() in
nfs_inode_set_delegation(). This not only ensures that we cannot call
nfs_inode_set_delegation from an asynchronous context, but it also slows
down any call to open().

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>NFS: Replace NFS_I(inode)-&gt;req_lock with inode-&gt;i_lock</title>
<updated>2007-07-11T03:40:38Z</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2007-07-02T13:57:54Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=587142f85f796cf0b823dd3080e815f02ff6b952'/>
<id>urn:sha1:587142f85f796cf0b823dd3080e815f02ff6b952</id>
<content type='text'>
There is no justification for keeping a special spinlock for the exclusive
use of the NFS writeback code.

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>NFS: Convert struct nfs_open_context to use a kref</title>
<updated>2007-07-11T03:40:27Z</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2007-06-17T20:02:44Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=3bec63db55463365110d00721ed60a31e4614cb6'/>
<id>urn:sha1:3bec63db55463365110d00721ed60a31e4614cb6</id>
<content type='text'>
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>NFS: Prevent integer overflow in nfs_scan_list()</title>
<updated>2007-07-11T03:40:27Z</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2007-06-17T19:47:53Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=dce34ce298d85b81630401f4feb4bd7ac77fe9c7'/>
<id>urn:sha1:dce34ce298d85b81630401f4feb4bd7ac77fe9c7</id>
<content type='text'>
Also ensure that nfs_inode ncommit and npages are large enough to represent
all possible values for the number of pages.

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
</feed>
