rpms/kernel/devel git-linus.diff,1.2,1.3 kernel.spec,1.777,1.778

Dave Jones (davej) fedora-extras-commits at redhat.com
Thu Jul 17 00:51:50 UTC 2008


Author: davej

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv6137

Modified Files:
	git-linus.diff kernel.spec 
Log Message:
Merge Linux-2.6 up to commit 8a0ca91e1db5de5eb5b18cfa919d52ff8be375af

git-linus.diff:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.2 -r 1.3 git-linus.diff
Index: git-linus.diff
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/git-linus.diff,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- git-linus.diff	16 Jul 2008 03:24:02 -0000	1.2
+++ git-linus.diff	17 Jul 2008 00:50:54 -0000	1.3
@@ -1,272074 +1,67092 @@
-diff --git a/Documentation/RCU/NMI-RCU.txt b/Documentation/RCU/NMI-RCU.txt
-index c64158e..a6d32e6 100644
---- a/Documentation/RCU/NMI-RCU.txt
-+++ b/Documentation/RCU/NMI-RCU.txt
-@@ -93,6 +93,9 @@ Since NMI handlers disable preemption, synchronize_sched() is guaranteed
- not to return until all ongoing NMI handlers exit.  It is therefore safe
- to free up the handler's data as soon as synchronize_sched() returns.
- 
-+Important note: for this to work, the architecture in question must
-+invoke irq_enter() and irq_exit() on NMI entry and exit, respectively.
-+
- 
- Answer to Quick Quiz
- 
-diff --git a/Documentation/RCU/RTFP.txt b/Documentation/RCU/RTFP.txt
-index 39ad8f5..9f711d2 100644
---- a/Documentation/RCU/RTFP.txt
-+++ b/Documentation/RCU/RTFP.txt
-@@ -52,6 +52,10 @@ of each iteration.  Unfortunately, chaotic relaxation requires highly
- structured data, such as the matrices used in scientific programs, and
- is thus inapplicable to most data structures in operating-system kernels.
- 
-+In 1992, Henry (now Alexia) Massalin completed a dissertation advising
-+parallel programmers to defer processing when feasible to simplify
-+synchronization.  RCU makes extremely heavy use of this advice.
-+
- In 1993, Jacobson [Jacobson93] verbally described what is perhaps the
- simplest deferred-free technique: simply waiting a fixed amount of time
- before freeing blocks awaiting deferred free.  Jacobson did not describe
-@@ -138,6 +142,13 @@ blocking in read-side critical sections appeared [PaulEMcKenney2006c],
- Robert Olsson described an RCU-protected trie-hash combination
- [RobertOlsson2006a].
- 
-+2007 saw the journal version of the award-winning RCU paper from 2006
-+[ThomasEHart2007a], as well as a paper demonstrating use of Promela
-+and Spin to mechanically verify an optimization to Oleg Nesterov's
-+QRCU [PaulEMcKenney2007QRCUspin], a design document describing
-+preemptible RCU [PaulEMcKenney2007PreemptibleRCU], and the three-part
-+LWN "What is RCU?" series [PaulEMcKenney2007WhatIsRCUFundamentally,
-+PaulEMcKenney2008WhatIsRCUUsage, and PaulEMcKenney2008WhatIsRCUAPI].
- 
- Bibtex Entries
- 
-@@ -202,6 +213,20 @@ Bibtex Entries
- ,Year="1991"
- }
- 
-+ at phdthesis{HMassalinPhD
-+,author="H. Massalin"
-+,title="Synthesis: An Efficient Implementation of Fundamental Operating
-+System Services"
-+,school="Columbia University"
-+,address="New York, NY"
-+,year="1992"
-+,annotation="
-+	Mondo optimizing compiler.
-+	Wait-free stuff.
-+	Good advice: defer work to avoid synchronization.
-+"
-+}
-+
- @unpublished{Jacobson93
- ,author="Van Jacobson"
- ,title="Avoid Read-Side Locking Via Delayed Free"
-@@ -635,3 +660,86 @@ Revised:
- "
- }
- 
-+ at unpublished{PaulEMcKenney2007PreemptibleRCU
-+,Author="Paul E. McKenney"
-+,Title="The design of preemptible read-copy-update"
-+,month="October"
-+,day="8"
-+,year="2007"
-+,note="Available:
-+\url{http://lwn.net/Articles/253651/}
-+[Viewed October 25, 2007]"
-+,annotation="
-+	LWN article describing the design of preemptible RCU.
-+"
-+}
-+
-+########################################################################
-+#
-+#	"What is RCU?" LWN series.
-+#
-+
-+ at unpublished{PaulEMcKenney2007WhatIsRCUFundamentally
-+,Author="Paul E. McKenney and Jonathan Walpole"
-+,Title="What is {RCU}, Fundamentally?"
-+,month="December"
-+,day="17"
-+,year="2007"
-+,note="Available:
-+\url{http://lwn.net/Articles/262464/}
-+[Viewed December 27, 2007]"
-+,annotation="
-+	Lays out the three basic components of RCU: (1) publish-subscribe,
-+	(2) wait for pre-existing readers to complete, and (2) maintain
-+	multiple versions.
-+"
-+}
-+
-+ at unpublished{PaulEMcKenney2008WhatIsRCUUsage
-+,Author="Paul E. McKenney"
-+,Title="What is {RCU}? Part 2: Usage"
-+,month="January"
-+,day="4"
-+,year="2008"
-+,note="Available:
-+\url{http://lwn.net/Articles/263130/}
-+[Viewed January 4, 2008]"
-+,annotation="
-+	Lays out six uses of RCU:
-+	1. RCU is a Reader-Writer Lock Replacement
-+	2. RCU is a Restricted Reference-Counting Mechanism
-+	3. RCU is a Bulk Reference-Counting Mechanism
-+	4. RCU is a Poor Man's Garbage Collector
-+	5. RCU is a Way of Providing Existence Guarantees
-+	6. RCU is a Way of Waiting for Things to Finish 
-+"
-+}
-+
-+ at unpublished{PaulEMcKenney2008WhatIsRCUAPI
-+,Author="Paul E. McKenney"
-+,Title="{RCU} part 3: the {RCU} {API}"
-+,month="January"
-+,day="17"
-+,year="2008"
-+,note="Available:
-+\url{http://lwn.net/Articles/264090/}
-+[Viewed January 10, 2008]"
-+,annotation="
-+	Gives an overview of the Linux-kernel RCU API and a brief annotated RCU
-+	bibliography.
-+"
-+}
-+
-+ at article{DinakarGuniguntala2008IBMSysJ
-+,author="D. Guniguntala and P. E. McKenney and J. Triplett and J. Walpole"
-+,title="The read-copy-update mechanism for supporting real-time applications on shared-memory multiprocessor systems with {Linux}"
-+,Year="2008"
-+,Month="April"
-+,journal="IBM Systems Journal"
-+,volume="47"
-+,number="2"
-+,pages="@@-@@"
-+,annotation="
-+	RCU, realtime RCU, sleepable RCU, performance.
-+"
-+}
-diff --git a/Documentation/RCU/checklist.txt b/Documentation/RCU/checklist.txt
-index 42b01bc..cf5562c 100644
---- a/Documentation/RCU/checklist.txt
-+++ b/Documentation/RCU/checklist.txt
-@@ -13,10 +13,13 @@ over a rather long period of time, but improvements are always welcome!
- 	detailed performance measurements show that RCU is nonetheless
- 	the right tool for the job.
- 
--	The other exception would be where performance is not an issue,
--	and RCU provides a simpler implementation.  An example of this
--	situation is the dynamic NMI code in the Linux 2.6 kernel,
--	at least on architectures where NMIs are rare.
-+	Another exception is where performance is not an issue, and RCU
-+	provides a simpler implementation.  An example of this situation
-+	is the dynamic NMI code in the Linux 2.6 kernel, at least on
-+	architectures where NMIs are rare.
-+
-+	Yet another exception is where the low real-time latency of RCU's
-+	read-side primitives is critically important.
- 
- 1.	Does the update code have proper mutual exclusion?
- 
-@@ -39,9 +42,10 @@ over a rather long period of time, but improvements are always welcome!
- 
- 2.	Do the RCU read-side critical sections make proper use of
- 	rcu_read_lock() and friends?  These primitives are needed
--	to suppress preemption (or bottom halves, in the case of
--	rcu_read_lock_bh()) in the read-side critical sections,
--	and are also an excellent aid to readability.
-+	to prevent grace periods from ending prematurely, which
-+	could result in data being unceremoniously freed out from
-+	under your read-side code, which can greatly increase the
-+	actuarial risk of your kernel.
- 
- 	As a rough rule of thumb, any dereference of an RCU-protected
- 	pointer must be covered by rcu_read_lock() or rcu_read_lock_bh()
-@@ -54,15 +58,30 @@ over a rather long period of time, but improvements are always welcome!
- 	be running while updates are in progress.  There are a number
- 	of ways to handle this concurrency, depending on the situation:
- 
[...334895 lines suppressed...]
- 		/* Remove stale work items from the task queue. */
-diff --git a/net/netfilter/nf_conntrack_helper.c b/net/netfilter/nf_conntrack_helper.c
-index 7d1b117..8e0b4c8 100644
---- a/net/netfilter/nf_conntrack_helper.c
-+++ b/net/netfilter/nf_conntrack_helper.c
-@@ -20,6 +20,7 @@
- #include <linux/err.h>
- #include <linux/kernel.h>
- #include <linux/netdevice.h>
-+#include <linux/rculist.h>
- 
- #include <net/netfilter/nf_conntrack.h>
- #include <net/netfilter/nf_conntrack_l3proto.h>
-diff --git a/net/netfilter/nf_conntrack_netlink.c b/net/netfilter/nf_conntrack_netlink.c
-index 0edefcf..077bcd2 100644
---- a/net/netfilter/nf_conntrack_netlink.c
-+++ b/net/netfilter/nf_conntrack_netlink.c
-@@ -18,6 +18,7 @@
- #include <linux/init.h>
- #include <linux/module.h>
- #include <linux/kernel.h>
-+#include <linux/rculist.h>
- #include <linux/types.h>
- #include <linux/timer.h>
- #include <linux/skbuff.h>
-diff --git a/net/netlabel/netlabel_domainhash.c b/net/netlabel/netlabel_domainhash.c
-index 02c2f7c..643c032 100644
---- a/net/netlabel/netlabel_domainhash.c
-+++ b/net/netlabel/netlabel_domainhash.c
-@@ -30,8 +30,7 @@
-  */
+ /*
+@@ -588,9 +586,7 @@ void rpc_exit_task(struct rpc_task *task)
+ {
+ 	task->tk_action = NULL;
+ 	if (task->tk_ops->rpc_call_done != NULL) {
+-		lock_kernel();
+ 		task->tk_ops->rpc_call_done(task, task->tk_calldata);
+-		unlock_kernel();
+ 		if (task->tk_action != NULL) {
+ 			WARN_ON(RPC_ASSASSINATED(task));
+ 			/* Always release the RPC slot and buffer memory */
+@@ -602,11 +598,8 @@ EXPORT_SYMBOL_GPL(rpc_exit_task);
+ 
+ void rpc_release_calldata(const struct rpc_call_ops *ops, void *calldata)
+ {
+-	if (ops->rpc_release != NULL) {
+-		lock_kernel();
++	if (ops->rpc_release != NULL)
+ 		ops->rpc_release(calldata);
+-		unlock_kernel();
+-	}
+ }
  
- #include <linux/types.h>
--#include <linux/rcupdate.h>
--#include <linux/list.h>
-+#include <linux/rculist.h>
- #include <linux/skbuff.h>
- #include <linux/spinlock.h>
- #include <linux/string.h>
-diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
-index 2d29e26..d4eae6a 100644
---- a/virt/kvm/kvm_main.c
-+++ b/virt/kvm/kvm_main.c
-@@ -1266,12 +1266,12 @@ static int kvm_cpu_hotplug(struct notifier_block *notifier, unsigned long val,
- 	case CPU_UP_CANCELED:
- 		printk(KERN_INFO "kvm: disabling virtualization on CPU%d\n",
- 		       cpu);
--		smp_call_function_single(cpu, hardware_disable, NULL, 0, 1);
-+		smp_call_function_single(cpu, hardware_disable, NULL, 1);
- 		break;
- 	case CPU_ONLINE:
- 		printk(KERN_INFO "kvm: enabling virtualization on CPU%d\n",
- 		       cpu);
--		smp_call_function_single(cpu, hardware_enable, NULL, 0, 1);
-+		smp_call_function_single(cpu, hardware_enable, NULL, 1);
- 		break;
- 	}
- 	return NOTIFY_OK;
-@@ -1286,7 +1286,7 @@ static int kvm_reboot(struct notifier_block *notifier, unsigned long val,
- 		 * in vmx root mode.
+ /*
+@@ -626,19 +619,15 @@ static void __rpc_execute(struct rpc_task *task)
+ 		/*
+ 		 * Execute any pending callback.
  		 */
- 		printk(KERN_INFO "kvm: exiting hardware virtualization\n");
--		on_each_cpu(hardware_disable, NULL, 0, 1);
-+		on_each_cpu(hardware_disable, NULL, 1);
- 	}
- 	return NOTIFY_OK;
- }
-@@ -1474,12 +1474,12 @@ int kvm_init(void *opaque, unsigned int vcpu_size,
- 	for_each_online_cpu(cpu) {
- 		smp_call_function_single(cpu,
- 				kvm_arch_check_processor_compat,
--				&r, 0, 1);
-+				&r, 1);
- 		if (r < 0)
- 			goto out_free_1;
- 	}
+-		if (RPC_DO_CALLBACK(task)) {
+-			/* Define a callback save pointer */
++		if (task->tk_callback) {
+ 			void (*save_callback)(struct rpc_task *);
+ 
+ 			/*
+-			 * If a callback exists, save it, reset it,
+-			 * call it.
+-			 * The save is needed to stop from resetting
+-			 * another callback set within the callback handler
+-			 * - Dave
++			 * We set tk_callback to NULL before calling it,
++			 * in case it sets the tk_callback field itself:
+ 			 */
+-			save_callback=task->tk_callback;
+-			task->tk_callback=NULL;
++			save_callback = task->tk_callback;
++			task->tk_callback = NULL;
+ 			save_callback(task);
+ 		}
+ 
+diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c
+index e1770f7..99a52aa 100644
+--- a/net/sunrpc/xprt.c
++++ b/net/sunrpc/xprt.c
+@@ -690,7 +690,7 @@ static void xprt_connect_status(struct rpc_task *task)
+ {
+ 	struct rpc_xprt	*xprt = task->tk_xprt;
+ 
+-	if (task->tk_status >= 0) {
++	if (task->tk_status == 0) {
+ 		xprt->stat.connect_count++;
+ 		xprt->stat.connect_time += (long)jiffies - xprt->stat.connect_start;
+ 		dprintk("RPC: %5u xprt_connect_status: connection established\n",
+@@ -699,12 +699,6 @@ static void xprt_connect_status(struct rpc_task *task)
+ 	}
+ 
+ 	switch (task->tk_status) {
+-	case -ECONNREFUSED:
+-	case -ECONNRESET:
+-		dprintk("RPC: %5u xprt_connect_status: server %s refused "
+-				"connection\n", task->tk_pid,
+-				task->tk_client->cl_server);
+-		break;
+ 	case -ENOTCONN:
+ 		dprintk("RPC: %5u xprt_connect_status: connection broken\n",
+ 				task->tk_pid);
+@@ -878,6 +872,7 @@ void xprt_transmit(struct rpc_task *task)
+ 		return;
+ 
+ 	req->rq_connect_cookie = xprt->connect_cookie;
++	req->rq_xtime = jiffies;
+ 	status = xprt->ops->send_request(task);
+ 	if (status == 0) {
+ 		dprintk("RPC: %5u xmit complete\n", task->tk_pid);
+diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
+index ddbe981..4486c59 100644
+--- a/net/sunrpc/xprtsock.c
++++ b/net/sunrpc/xprtsock.c
+@@ -579,7 +579,6 @@ static int xs_udp_send_request(struct rpc_task *task)
+ 				req->rq_svec->iov_base,
+ 				req->rq_svec->iov_len);
+ 
+-	req->rq_xtime = jiffies;
+ 	status = xs_sendpages(transport->sock,
+ 			      xs_addr(xprt),
+ 			      xprt->addrlen, xdr,
+@@ -671,7 +670,6 @@ static int xs_tcp_send_request(struct rpc_task *task)
+ 	 * to cope with writespace callbacks arriving _after_ we have
+ 	 * called sendmsg(). */
+ 	while (1) {
+-		req->rq_xtime = jiffies;
+ 		status = xs_sendpages(transport->sock,
+ 					NULL, 0, xdr, req->rq_bytes_sent);
  
--	on_each_cpu(hardware_enable, NULL, 0, 1);
-+	on_each_cpu(hardware_enable, NULL, 1);
- 	r = register_cpu_notifier(&kvm_cpu_notifier);
- 	if (r)
- 		goto out_free_2;
-@@ -1525,7 +1525,7 @@ out_free_3:
- 	unregister_reboot_notifier(&kvm_reboot_notifier);
- 	unregister_cpu_notifier(&kvm_cpu_notifier);
- out_free_2:
--	on_each_cpu(hardware_disable, NULL, 0, 1);
-+	on_each_cpu(hardware_disable, NULL, 1);
- out_free_1:
- 	kvm_arch_hardware_unsetup();
- out_free_0:
-@@ -1547,7 +1547,7 @@ void kvm_exit(void)
- 	sysdev_class_unregister(&kvm_sysdev_class);
- 	unregister_reboot_notifier(&kvm_reboot_notifier);
- 	unregister_cpu_notifier(&kvm_cpu_notifier);
--	on_each_cpu(hardware_disable, NULL, 0, 1);
-+	on_each_cpu(hardware_disable, NULL, 1);
- 	kvm_arch_hardware_unsetup();
- 	kvm_arch_exit();
- 	kvm_exit_debug();


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.777
retrieving revision 1.778
diff -u -r1.777 -r1.778
--- kernel.spec	16 Jul 2008 21:53:39 -0000	1.777
+++ kernel.spec	17 Jul 2008 00:50:55 -0000	1.778
@@ -1777,6 +1777,9 @@
 %kernel_variant_files -a /%{image_install_path}/xen*-%{KVERREL}.xen -e /etc/ld.so.conf.d/kernelcap-%{KVERREL}.xen.conf %{with_xen} xen
 
 %changelog
+* Wed Jul 16 2008 Dave Jones <davej at redhat.com>
+- Merge Linux-2.6 up to commit 8a0ca91e1db5de5eb5b18cfa919d52ff8be375af
+
 * Wed Jul 16 2008 Kristian Høgsberg <krh at redhat.com>
 - Also copy new include/drm directory.
 




More information about the fedora-extras-commits mailing list