<feed xmlns='http://www.w3.org/2005/Atom'>
<title>BMC/Intel-BMC/linux.git/net/sunrpc/sched.c, branch dev</title>
<subtitle>Intel OpenBMC Linux kernel source tree (mirror)</subtitle>
<id>https://git.radix-linux.su/BMC/Intel-BMC/linux.git/atom?h=dev</id>
<link rel='self' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/atom?h=dev'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/'/>
<updated>2015-03-13T13:05:20+00:00</updated>
<entry>
<title>SUNRPC: fix build-warning due to format missmatch</title>
<updated>2015-03-13T13:05:20+00:00</updated>
<author>
<name>Nicholas Mc Guire</name>
<email>hofrat@osadl.org</email>
</author>
<published>2015-03-13T08:25:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=55cc1d7806cd4827d38a18ddf3bcf04706758218'/>
<id>urn:sha1:55cc1d7806cd4827d38a18ddf3bcf04706758218</id>
<content type='text'>
fix build-warning introduced by commit: f0eede10fd4 ("SUNRPC: use
jiffies_to_msecs for converting jiffies") which did not fixup
the format properly (my bad).

Signed-off-by: Nicholas Mc Guire &lt;hofrat@osadl.org&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
</content>
</entry>
<entry>
<title>SUNRPC: use jiffies_to_msecs for converting jiffies</title>
<updated>2015-03-12T15:53:55+00:00</updated>
<author>
<name>Nicholas Mc Guire</name>
<email>hofrat@osadl.org</email>
</author>
<published>2015-03-03T09:24:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=f0eede10fd401a1c5193e020cd372d7b7014d9f3'/>
<id>urn:sha1:f0eede10fd401a1c5193e020cd372d7b7014d9f3</id>
<content type='text'>
Use jiffies_to_msecs for converting jiffies as it handles all of the corner
cases reliably and also helps readability.

Signed-off-by: Nicholas Mc Guire &lt;hofrat@osadl.org&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
</content>
</entry>
<entry>
<title>SUNRPC: Allow waiting on memory allocation</title>
<updated>2015-01-24T23:46:50+00:00</updated>
<author>
<name>Trond Myklebust</name>
<email>trond.myklebust@primarydata.com</email>
</author>
<published>2015-01-23T19:50:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=c4a7ca774949960064dac11b326908f28407e8c3'/>
<id>urn:sha1:c4a7ca774949960064dac11b326908f28407e8c3</id>
<content type='text'>
We should be safe now, as long as we don't do GFP_IO or higher allocations

Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
</content>
</entry>
<entry>
<title>SUNRPC: Adjust rpciod workqueue parameters</title>
<updated>2015-01-24T23:46:49+00:00</updated>
<author>
<name>Trond Myklebust</name>
<email>trond.myklebust@primarydata.com</email>
</author>
<published>2015-01-23T18:19:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=127b21b89f9d8ba0dc23e47b8c35d8a0bac9d6fc'/>
<id>urn:sha1:127b21b89f9d8ba0dc23e47b8c35d8a0bac9d6fc</id>
<content type='text'>
Increase the concurrency level for rpciod threads to allow for allocations
etc that happen in the RPCSEC_GSS layer. Also note that the NFSv4 byte range
locks may now need to allocate memory from inside rpciod.

Add the WQ_HIGHPRI flag to improve latency guarantees while we're at it.

Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
</content>
</entry>
<entry>
<title>sunrpc: eliminate RPC_TRACEPOINTS</title>
<updated>2014-11-24T22:33:12+00:00</updated>
<author>
<name>Jeff Layton</name>
<email>jlayton@primarydata.com</email>
</author>
<published>2014-11-17T21:58:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=1306729b0d4f4a0bd0d098711ed3d938dc5a1a28'/>
<id>urn:sha1:1306729b0d4f4a0bd0d098711ed3d938dc5a1a28</id>
<content type='text'>
It's always set to the same value as CONFIG_TRACEPOINTS, so we can just
use that instead.

Signed-off-by: Jeff Layton &lt;jlayton@primarydata.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
</content>
</entry>
<entry>
<title>sunrpc: eliminate RPC_DEBUG</title>
<updated>2014-11-24T22:31:46+00:00</updated>
<author>
<name>Jeff Layton</name>
<email>jlayton@primarydata.com</email>
</author>
<published>2014-11-17T21:58:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=f895b252d4edf66b2895fb5a7b17a638665f3e1f'/>
<id>urn:sha1:f895b252d4edf66b2895fb5a7b17a638665f3e1f</id>
<content type='text'>
It's always set to whatever CONFIG_SUNRPC_DEBUG is, so just use that.

Signed-off-by: Jeff Layton &lt;jlayton@primarydata.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
</content>
</entry>
<entry>
<title>NFS/SUNRPC: Remove other deadlock-avoidance mechanisms in nfs_release_page()</title>
<updated>2014-09-25T12:25:47+00:00</updated>
<author>
<name>NeilBrown</name>
<email>neilb@suse.de</email>
</author>
<published>2014-09-24T01:28:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=1aff52562939485e503936e17934be077ffaea53'/>
<id>urn:sha1:1aff52562939485e503936e17934be077ffaea53</id>
<content type='text'>
Now that nfs_release_page() doesn't block indefinitely, other deadlock
avoidance mechanisms aren't needed.
 - it doesn't hurt for kswapd to block occasionally.  If it doesn't
   want to block it would clear __GFP_WAIT.  The current_is_kswapd()
   was only added to avoid deadlocks and we have a new approach for
   that.
 - memory allocation in the SUNRPC layer can very rarely try to
   -&gt;releasepage() a page it is trying to handle.  The deadlock
   is removed as nfs_release_page() doesn't block indefinitely.

So we don't need to set PF_FSTRANS for sunrpc network operations any
more.

Signed-off-by: NeilBrown &lt;neilb@suse.de&gt;
Acked-by: Jeff Layton &lt;jlayton@primarydata.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
</content>
</entry>
<entry>
<title>sched: Allow wait_on_bit_action() functions to support a timeout</title>
<updated>2014-07-16T13:10:41+00:00</updated>
<author>
<name>NeilBrown</name>
<email>neilb@suse.de</email>
</author>
<published>2014-07-07T05:16:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=c1221321b7c25b53204447cff9949a6d5a7ddddc'/>
<id>urn:sha1:c1221321b7c25b53204447cff9949a6d5a7ddddc</id>
<content type='text'>
It is currently not possible for various wait_on_bit functions
to implement a timeout.

While the "action" function that is called to do the waiting
could certainly use schedule_timeout(), there is no way to carry
forward the remaining timeout after a false wake-up.
As false-wakeups a clearly possible at least due to possible
hash collisions in bit_waitqueue(), this is a real problem.

The 'action' function is currently passed a pointer to the word
containing the bit being waited on.  No current action functions
use this pointer.  So changing it to something else will be a
little noisy but will have no immediate effect.

This patch changes the 'action' function to take a pointer to
the "struct wait_bit_key", which contains a pointer to the word
containing the bit so nothing is really lost.

It also adds a 'private' field to "struct wait_bit_key", which
is initialized to zero.

An action function can now implement a timeout with something
like

static int timed_out_waiter(struct wait_bit_key *key)
{
	unsigned long waited;
	if (key-&gt;private == 0) {
		key-&gt;private = jiffies;
		if (key-&gt;private == 0)
			key-&gt;private -= 1;
	}
	waited = jiffies - key-&gt;private;
	if (waited &gt; 10 * HZ)
		return -EAGAIN;
	schedule_timeout(waited - 10 * HZ);
	return 0;
}

If any other need for context in a waiter were found it would be
easy to use -&gt;private for some other purpose, or even extend
"struct wait_bit_key".

My particular need is to support timeouts in nfs_release_page()
to avoid deadlocks with loopback mounted NFS.

While wait_on_bit_timeout() would be a cleaner interface, it
will not meet my need.  I need the timeout to be sensitive to
the state of the connection with the server, which could change.
 So I need to use an 'action' interface.

Signed-off-by: NeilBrown &lt;neilb@suse.de&gt;
Acked-by: Peter Zijlstra &lt;peterz@infradead.org&gt;
Cc: Oleg Nesterov &lt;oleg@redhat.com&gt;
Cc: Steve French &lt;sfrench@samba.org&gt;
Cc: David Howells &lt;dhowells@redhat.com&gt;
Cc: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
Cc: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Link: http://lkml.kernel.org/r/20140707051604.28027.41257.stgit@notabene.brown
Signed-off-by: Ingo Molnar &lt;mingo@kernel.org&gt;
</content>
</entry>
<entry>
<title>net, sunrpc: suppress allocation warning in rpc_malloc()</title>
<updated>2014-05-29T15:11:51+00:00</updated>
<author>
<name>David Rientjes</name>
<email>rientjes@google.com</email>
</author>
<published>2014-05-07T20:03:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=c6c8fe79a83e1a03e5dd83d0bac178d6ba5ef30a'/>
<id>urn:sha1:c6c8fe79a83e1a03e5dd83d0bac178d6ba5ef30a</id>
<content type='text'>
rpc_malloc() allocates with GFP_NOWAIT without making any attempt at
reclaim so it easily fails when low on memory.  This ends up spamming the
kernel log:

SLAB: Unable to allocate memory on node 0 (gfp=0x4000)
  cache: kmalloc-8192, object size: 8192, order: 1
  node 0: slabs: 207/207, objs: 207/207, free: 0
rekonq: page allocation failure: order:1, mode:0x204000
CPU: 2 PID: 14321 Comm: rekonq Tainted: G           O  3.15.0-rc3-12.gfc9498b-desktop+ #6
Hardware name: System manufacturer System Product Name/M4A785TD-V EVO, BIOS 2105    07/23/2010
 0000000000000000 ffff880010ff17d0 ffffffff815e693c 0000000000204000
 ffff880010ff1858 ffffffff81137bd2 0000000000000000 0000001000000000
 ffff88011ffebc38 0000000000000001 0000000000204000 ffff88011ffea000
Call Trace:
 [&lt;ffffffff815e693c&gt;] dump_stack+0x4d/0x6f
 [&lt;ffffffff81137bd2&gt;] warn_alloc_failed+0xd2/0x140
 [&lt;ffffffff8113be19&gt;] __alloc_pages_nodemask+0x7e9/0xa30
 [&lt;ffffffff811824a8&gt;] kmem_getpages+0x58/0x140
 [&lt;ffffffff81183de6&gt;] fallback_alloc+0x1d6/0x210
 [&lt;ffffffff81183be3&gt;] ____cache_alloc_node+0x123/0x150
 [&lt;ffffffff81185953&gt;] __kmalloc+0x203/0x490
 [&lt;ffffffffa06b0ee2&gt;] rpc_malloc+0x32/0xa0 [sunrpc]
 [&lt;ffffffffa06a6999&gt;] call_allocate+0xb9/0x170 [sunrpc]
 [&lt;ffffffffa06b19d8&gt;] __rpc_execute+0x88/0x460 [sunrpc]
 [&lt;ffffffffa06b2da9&gt;] rpc_execute+0x59/0xc0 [sunrpc]
 [&lt;ffffffffa06a932b&gt;] rpc_run_task+0x6b/0x90 [sunrpc]
 [&lt;ffffffffa077b5c1&gt;] nfs4_call_sync_sequence+0x51/0x80 [nfsv4]
 [&lt;ffffffffa077d45d&gt;] _nfs4_do_setattr+0x1ed/0x280 [nfsv4]
 [&lt;ffffffffa0782a72&gt;] nfs4_do_setattr+0x72/0x180 [nfsv4]
 [&lt;ffffffffa078334c&gt;] nfs4_proc_setattr+0xbc/0x140 [nfsv4]
 [&lt;ffffffffa074a7e8&gt;] nfs_setattr+0xd8/0x240 [nfs]
 [&lt;ffffffff811baa71&gt;] notify_change+0x231/0x380
 [&lt;ffffffff8119cf5c&gt;] chmod_common+0xfc/0x120
 [&lt;ffffffff8119df80&gt;] SyS_chmod+0x40/0x90
 [&lt;ffffffff815f4cfd&gt;] system_call_fastpath+0x1a/0x1f
...

If the allocation fails, simply return NULL and avoid spamming the kernel
log.

Reported-by: Marc Dietrich &lt;marvin24@gmx.de&gt;
Signed-off-by: David Rientjes &lt;rientjes@google.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
</content>
</entry>
<entry>
<title>SUNRPC: Don't let rpc_delay() clobber non-timeout errors</title>
<updated>2014-03-20T17:38:43+00:00</updated>
<author>
<name>Trond Myklebust</name>
<email>trond.myklebust@primarydata.com</email>
</author>
<published>2014-03-20T16:53:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=6bd144160a5554e4af052c153a094c4851a4c6aa'/>
<id>urn:sha1:6bd144160a5554e4af052c153a094c4851a4c6aa</id>
<content type='text'>
Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
</content>
</entry>
</feed>
