<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/net/sunrpc/cache.c, branch linux-2.6.20.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.20.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.20.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2006-12-13T17:05:54Z</updated>
<entry>
<title>[PATCH] knfsd: svcrpc: remove another silent drop from deferral code</title>
<updated>2006-12-13T17:05:54Z</updated>
<author>
<name>J.Bruce Fields</name>
</author>
<published>2006-12-13T08:35:26Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=01f3bd1f03599470e4695392b6ae055ed8506978'/>
<id>urn:sha1:01f3bd1f03599470e4695392b6ae055ed8506978</id>
<content type='text'>
There's no point deferring something just to immediately fail the deferral,
especially now that we can do something more useful in the failure case by
returning an error.

Signed-off-by: J. Bruce Fields &lt;bfields@citi.umich.edu&gt;
Signed-off-by: Neil Brown &lt;neilb@suse.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] knfsd: nfsd: don't drop silently on upcall deferral</title>
<updated>2006-12-13T17:05:54Z</updated>
<author>
<name>J.Bruce Fields</name>
</author>
<published>2006-12-13T08:35:25Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e0bb89ef031f76dcb9c9d920d18b13948f1418da'/>
<id>urn:sha1:e0bb89ef031f76dcb9c9d920d18b13948f1418da</id>
<content type='text'>
To avoid tying up server threads when nfsd makes an upcall (to mountd, to get
export options, to idmapd, for nfsv4 name&lt;-&gt;id mapping, etc.), we temporarily
"drop" the request and save enough information so that we can revisit it
later.

Certain failures during the deferral process can cause us to really drop the
request and never revisit it.

This is often less than ideal, and is unacceptable in the NFSv4 case--rfc 3530
forbids the server from dropping a request without also closing the
connection.

As a first step, we modify the deferral code to return -ETIMEDOUT (which is
translated to nfserr_jukebox in the v3 and v4 cases, and remains a drop in the
v2 case).

Signed-off-by: J. Bruce Fields &lt;bfields@citi.umich.edu&gt;
Signed-off-by: Neil Brown &lt;neilb@suse.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] struct path: convert sunrpc</title>
<updated>2006-12-08T16:28:50Z</updated>
<author>
<name>Josef Sipek</name>
</author>
<published>2006-12-08T10:37:42Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=303b46bb77a4b1679fd39d7ab5597630743e0ff5'/>
<id>urn:sha1:303b46bb77a4b1679fd39d7ab5597630743e0ff5</id>
<content type='text'>
Signed-off-by: Josef Sipek &lt;jsipek@fsl.cs.sunysb.edu&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>WorkStruct: Pass the work_struct pointer instead of context data</title>
<updated>2006-11-22T14:55:48Z</updated>
<author>
<name>David Howells</name>
</author>
<published>2006-11-22T14:55:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=65f27f38446e1976cc98fd3004b110fedcddd189'/>
<id>urn:sha1:65f27f38446e1976cc98fd3004b110fedcddd189</id>
<content type='text'>
Pass the work_struct pointer to the work function rather than context data.
The work function can use container_of() to work out the data.

For the cases where the container of the work_struct may go away the moment the
pending bit is cleared, it is made possible to defer the release of the
structure by deferring the clearing of the pending bit.

To make this work, an extra flag is introduced into the management side of the
work_struct.  This governs auto-release of the structure upon execution.

Ordinarily, the work queue executor would release the work_struct for further
scheduling or deallocation by clearing the pending bit prior to jumping to the
work function.  This means that, unless the driver makes some guarantee itself
that the work_struct won't go away, the work function may not access anything
else in the work_struct or its container lest they be deallocated..  This is a
problem if the auxiliary data is taken away (as done by the last patch).

However, if the pending bit is *not* cleared before jumping to the work
function, then the work function *may* access the work_struct and its container
with no problems.  But then the work function must itself release the
work_struct by calling work_release().

In most cases, automatic release is fine, so this is the default.  Special
initiators exist for the non-auto-release case (ending in _NAR).


Signed-Off-By: David Howells &lt;dhowells@redhat.com&gt;
</content>
</entry>
<entry>
<title>WorkStruct: Separate delayable and non-delayable events.</title>
<updated>2006-11-22T14:54:01Z</updated>
<author>
<name>David Howells</name>
</author>
<published>2006-11-22T14:54:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=52bad64d95bd89e08c49ec5a071fa6dcbe5a1a9c'/>
<id>urn:sha1:52bad64d95bd89e08c49ec5a071fa6dcbe5a1a9c</id>
<content type='text'>
Separate delayable work items from non-delayable work items be splitting them
into a separate structure (delayed_work), which incorporates a work_struct and
the timer_list removed from work_struct.

The work_struct struct is huge, and this limits it's usefulness.  On a 64-bit
architecture it's nearly 100 bytes in size.  This reduces that by half for the
non-delayable type of event.

Signed-Off-By: David Howells &lt;dhowells@redhat.com&gt;
</content>
</entry>
<entry>
<title>[PATCH] knfsd: fix race related problem when adding items to and svcrpc auth cache</title>
<updated>2006-08-06T15:57:47Z</updated>
<author>
<name>Neil Brown</name>
</author>
<published>2006-08-05T19:14:29Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2f34931fdc78b4895553aaa33748939cc7697c99'/>
<id>urn:sha1:2f34931fdc78b4895553aaa33748939cc7697c99</id>
<content type='text'>
If we don't find the item we are lookng for, we allocate a new one, and
then grab the lock again and search to see if it has been added while we
did the alloc.  If it had been added we need to 'cache_put' the newly
created item that we are never going to use.  But as it hasn't been
initialised properly, putting it can cause an oops.

So move the -&gt;init call earlier to that it will always be fully initilised
if we have to put it.

Thanks to Philipp Matthias Hahn &lt;pmhahn@svs.Informatik.Uni-Oldenburg.de&gt;
for reporting the problem.

Signed-off-by: Neil Brown &lt;neilb@suse.de&gt;
Cc: &lt;stable@kernel.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] knfsd: Fix two problems that can cause rmmod nfsd to die</title>
<updated>2006-05-23T17:35:31Z</updated>
<author>
<name>NeilBrown</name>
</author>
<published>2006-05-23T05:35:25Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f2d395865faa2a7cd4620b07178e58cbb160ba08'/>
<id>urn:sha1:f2d395865faa2a7cd4620b07178e58cbb160ba08</id>
<content type='text'>
Both cause the 'entries' count in the export cache to be non-zero at module
removal time, so unregistering that cache fails and results in an oops.

1/ exp_pseudoroot (used for NFSv4 only) leaks a reference to an export
   entry.
2/ sunrpc_cache_update doesn't increment the entries count when it adds
   an entry.

Thanks to "david m.  richter" &lt;richterd@citi.umich.edu&gt; for triggering the
problem and finding one of the bugs.

Cc: "david m. richter" &lt;richterd@citi.umich.edu&gt;
Signed-off-by: Neil Brown &lt;neilb@suse.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] fs/nfsd/export.c,net/sunrpc/cache.c: make needlessly global code static</title>
<updated>2006-03-27T16:44:43Z</updated>
<author>
<name>Adrian Bunk</name>
</author>
<published>2006-03-27T09:15:10Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=74cae61ab45f19a3e8c4d9f53c0e94df129c7915'/>
<id>urn:sha1:74cae61ab45f19a3e8c4d9f53c0e94df129c7915</id>
<content type='text'>
We can now make some code static.

Signed-off-by: Adrian Bunk &lt;bunk@stusta.de&gt;
Cc: Neil Brown &lt;neilb@suse.de&gt;
Cc: Trond Myklebust &lt;trond.myklebust@fys.uio.no&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] knfsd: Convert sunrpc_cache to use krefs</title>
<updated>2006-03-27T16:44:43Z</updated>
<author>
<name>NeilBrown</name>
</author>
<published>2006-03-27T09:15:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=baab935ff3bdac20c558809da0d8e8f761840219'/>
<id>urn:sha1:baab935ff3bdac20c558809da0d8e8f761840219</id>
<content type='text'>
.. it makes some of the code nicer.

Signed-off-by: Neil Brown &lt;neilb@suse.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] knfsd: Unexport cache_fresh and fix a small race</title>
<updated>2006-03-27T16:44:43Z</updated>
<author>
<name>NeilBrown</name>
</author>
<published>2006-03-27T09:15:08Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ebd0cb1af3be2729cc1f574681dfba01fcf458d9'/>
<id>urn:sha1:ebd0cb1af3be2729cc1f574681dfba01fcf458d9</id>
<content type='text'>
Cache_fresh is now only used in cache.c, so unexport it.

Part of cache_fresh (setting CACHE_VALID) should really be done under the
lock, while part (calling cache_revisit_request etc) must be done outside the
lock.  So we split it up appropriately.

Signed-off-by: Neil Brown &lt;neilb@suse.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
</feed>
