<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/nfs/write.c, branch linux-2.6.37.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.37.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.37.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2011-03-27T19:00:43Z</updated>
<entry>
<title>NFS: Fix a hang/infinite loop in nfs_wb_page()</title>
<updated>2011-03-27T19:00:43Z</updated>
<author>
<name>Trond Myklebust</name>
</author>
<published>2011-03-21T19:37:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5460834c2384874904358ad2191f947a2d83ec72'/>
<id>urn:sha1:5460834c2384874904358ad2191f947a2d83ec72</id>
<content type='text'>
commit b8413f98f997bb3ed7327e6d7117e7e91ce010c3 upstream.

When one of the two waits in nfs_commit_inode() is interrupted, it
returns a non-negative value, which causes nfs_wb_page() to think
that the operation was successful causing it to busy-loop rather
than exiting.
It also causes nfs_file_fsync() to incorrectly report the file as
being successfully committed to disk.

This patch fixes both problems by ensuring that we return an error
if the attempts to wait fail.

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>nfs: remove extraneous and problematic calls to nfs_clear_request</title>
<updated>2010-12-08T04:02:44Z</updated>
<author>
<name>Trond Myklebust</name>
</author>
<published>2010-12-08T03:39:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2df485a774ba59c3f43bfe84107672c1d9b731a0'/>
<id>urn:sha1:2df485a774ba59c3f43bfe84107672c1d9b731a0</id>
<content type='text'>
When a nfs_page is freed, nfs_free_request is called which also calls
nfs_clear_request to clean out the lock and open contexts and free the
pagecache page.

However, a couple of places in the nfs code call nfs_clear_request
themselves. What happens here if the refcount on the request is still high?
We'll be releasing contexts and freeing pointers while the request is
possibly still in use.

Remove those bare calls to nfs_clear_context. That should only be done when
the request is being freed.

Note that when doing this, we need to watch out for tests of req-&gt;wb_page.
Previously, nfs_set_page_tag_locked() and nfs_clear_page_tag_locked()
would check the value of req-&gt;wb_page to figure out if the page is mapped
into the nfsi-&gt;nfs_page_tree. We now indicate the page is mapped using
the new bit PG_MAPPED in req-&gt;wb_flags .

Reported-by: Jeff Layton &lt;jlayton@redhat.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>writeback: remove nonblocking/encountered_congestion references</title>
<updated>2010-10-26T23:52:05Z</updated>
<author>
<name>Wu Fengguang</name>
</author>
<published>2010-10-26T21:21:26Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1b430beee5e388605dfb092b214ef0320f752cf6'/>
<id>urn:sha1:1b430beee5e388605dfb092b214ef0320f752cf6</id>
<content type='text'>
This removes more dead code that was somehow missed by commit 0d99519efef
(writeback: remove unused nonblocking and congestion checks).  There are
no behavior change except for the removal of two entries from one of the
ext4 tracing interface.

The nonblocking checks in -&gt;writepages are no longer used because the
flusher now prefer to block on get_request_wait() than to skip inodes on
IO congestion.  The latter will lead to more seeky IO.

The nonblocking checks in -&gt;writepage are no longer used because it's
redundant with the WB_SYNC_NONE check.

We no long set -&gt;nonblocking in VM page out and page migration, because
a) it's effectively redundant with WB_SYNC_NONE in current code
b) it's old semantic of "Don't get stuck on request queues" is mis-behavior:
   that would skip some dirty inodes on congestion and page out others, which
   is unfair in terms of LRU age.

Inspired by Christoph Hellwig. Thanks!

Signed-off-by: Wu Fengguang &lt;fengguang.wu@intel.com&gt;
Cc: Theodore Ts'o &lt;tytso@mit.edu&gt;
Cc: David Howells &lt;dhowells@redhat.com&gt;
Cc: Sage Weil &lt;sage@newdream.net&gt;
Cc: Steve French &lt;sfrench@samba.org&gt;
Cc: Chris Mason &lt;chris.mason@oracle.com&gt;
Cc: Jens Axboe &lt;axboe@kernel.dk&gt;
Cc: Christoph Hellwig &lt;hch@infradead.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>NFS: don't use FLUSH_SYNC on WB_SYNC_NONE COMMIT calls (try #2)</title>
<updated>2010-09-29T18:42:30Z</updated>
<author>
<name>Jeff Layton</name>
</author>
<published>2010-09-28T13:14:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a00dd6c03dd97a777c291a8af8682be4b5fadf8d'/>
<id>urn:sha1:a00dd6c03dd97a777c291a8af8682be4b5fadf8d</id>
<content type='text'>
WB_SYNC_NONE is supposed to mean "don't wait on anything". That should
also include not waiting for COMMIT calls to complete.

WB_SYNC_NONE is also implied when wbc-&gt;nonblocking and
wbc-&gt;for_background are set, so we can replace those checks in
nfs_commit_unstable_pages with a check for WB_SYNC_NONE.

Signed-off-by: Jeff Layton &lt;jlayton@redhat.com&gt;
Reviewed-by: Wu Fengguang &lt;fengguang.wu@intel.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>NFSv4.1: keep seq_res.sr_slot as pointer rather than an index</title>
<updated>2010-09-24T13:17:01Z</updated>
<author>
<name>Benny Halevy</name>
</author>
<published>2010-09-24T13:17:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=dfb4f309830359352539919f23accc59a20a3758'/>
<id>urn:sha1:dfb4f309830359352539919f23accc59a20a3758</id>
<content type='text'>
Having to explicitly initialize sr_slotid to NFS4_MAX_SLOT_TABLE
resulted in numerous bugs.  Keeping the current slot as a pointer
to the slot table is more straight forward and robust as it's
implicitly set up to NULL wherever the seq_res member is initialized
to zeroes.

Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'nfs-for-2.6.36' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6</title>
<updated>2010-08-07T20:19:36Z</updated>
<author>
<name>Linus Torvalds</name>
</author>
<published>2010-08-07T20:19:36Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5df6b8e65ad0f2eaee202ff002ac00d1ac605315'/>
<id>urn:sha1:5df6b8e65ad0f2eaee202ff002ac00d1ac605315</id>
<content type='text'>
* 'nfs-for-2.6.36' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (42 commits)
  NFS: NFSv4.1 is no longer a "developer only" feature
  NFS: NFS_V4 is no longer an EXPERIMENTAL feature
  NFS: Fix /proc/mount for legacy binary interface
  NFS: Fix the locking in nfs4_callback_getattr
  SUNRPC: Defer deleting the security context until gss_do_free_ctx()
  SUNRPC: prevent task_cleanup running on freed xprt
  SUNRPC: Reduce asynchronous RPC task stack usage
  SUNRPC: Move the bound cred to struct rpc_rqst
  SUNRPC: Clean up of rpc_bindcred()
  SUNRPC: Move remaining RPC client related task initialisation into clnt.c
  SUNRPC: Ensure that rpc_exit() always wakes up a sleeping task
  SUNRPC: Make the credential cache hashtable size configurable
  SUNRPC: Store the hashtable size in struct rpc_cred_cache
  NFS: Ensure the AUTH_UNIX credcache is allocated dynamically
  NFS: Fix the NFS users of rpc_restart_call()
  SUNRPC: The function rpc_restart_call() should return success/failure
  NFSv4: Get rid of the bogus RPC_ASSASSINATED(task) checks
  NFSv4: Clean up the process of renewing the NFSv4 lease
  NFSv4.1: Handle NFS4ERR_DELAY on SEQUENCE correctly
  NFS: nfs_rename() should not have to flush out writebacks
  ...
</content>
</entry>
<entry>
<title>NFS: Fix a typo in include/linux/nfs_fs.h</title>
<updated>2010-08-01T22:10:01Z</updated>
<author>
<name>Trond Myklebust</name>
</author>
<published>2010-08-01T17:40:40Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=77a63f3d1e0a3e7ede8d10f569e8481b13ff47c5'/>
<id>urn:sha1:77a63f3d1e0a3e7ede8d10f569e8481b13ff47c5</id>
<content type='text'>
nfs_commit_inode() needs to be defined irrespectively of whether or not
we are supporting NFSv3 and NFSv4.

Allow the compiler to optimise away code in the NFSv2-only case by
converting it into an inlined stub function.

Reported-and-tested-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>NFS: Ensure that writepage respects the nonblock flag</title>
<updated>2010-07-30T19:38:56Z</updated>
<author>
<name>Trond Myklebust</name>
</author>
<published>2010-07-30T19:31:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=cfb506e1d330387dfaf334dd493b3773d388863d'/>
<id>urn:sha1:cfb506e1d330387dfaf334dd493b3773d388863d</id>
<content type='text'>
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>NFS: kswapd must not block in nfs_release_page</title>
<updated>2010-07-30T19:38:42Z</updated>
<author>
<name>Trond Myklebust</name>
</author>
<published>2010-07-30T19:31:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b608b283a962caaa280756bc8563016a71712acf'/>
<id>urn:sha1:b608b283a962caaa280756bc8563016a71712acf</id>
<content type='text'>
See https://bugzilla.kernel.org/show_bug.cgi?id=16056

If other processes are blocked waiting for kswapd to free up some memory so
that they can make progress, then we cannot allow kswapd to block on those
processes.

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
Cc: stable@kernel.org
</content>
</entry>
<entry>
<title>NFSv4: Ensure that we track the NFSv4 lock state in read/write requests.</title>
<updated>2010-07-30T18:41:56Z</updated>
<author>
<name>Trond Myklebust</name>
</author>
<published>2010-06-25T20:35:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f11ac8db5d07b6e99d41ff4aa39d878ee5cef1c5'/>
<id>urn:sha1:f11ac8db5d07b6e99d41ff4aa39d878ee5cef1c5</id>
<content type='text'>
This patch fixes bugzilla entry 14501:
  https://bugzilla.kernel.org/show_bug.cgi?id=14501

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