All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Ingo Molnar <mingo@elte.hu>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	paulmck@linux.vnet.ibm.com, Gregory Haskins <ghaskins@novell.com>,
	Matthew Wilcox <matthew@wil.cx>, Andi Kleen <andi@firstfloor.org>,
	Chris Mason <chris.mason@oracle.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	linux-fsdevel <linux-fsdevel@vger.kernel.org>,
	linux-btrfs <linux-btrfs@vger.kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Nick Piggin <npiggin@suse.de>,
	Peter Morreale <pmorreale@novell.com>,
	Sven Dietrich <SDietrich@novell.com>
Subject: [PATCH -v7][RFC]: mutex: implement adaptive spinning
Date: Thu, 08 Jan 2009 15:46:54 +0100	[thread overview]
Message-ID: <1231426014.11687.456.camel@twins> (raw)
In-Reply-To: <20090108141808.GC11629@elte.hu>

On Thu, 2009-01-08 at 15:18 +0100, Ingo Molnar wrote:

> [ A detail, -tip testing found that the patch breaks mutex debugging:
> 
>   =====================================
>   [ BUG: bad unlock balance detected! ]
>   -------------------------------------
>   swapper/0 is trying to release lock (cpu_add_remove_lock) at:
>   [<ffffffff8089f540>] mutex_unlock+0xe/0x10
>   but there are no more locks to release!
> 
>  but that's a detail for -v7 ;-) ]

Here it is..

I changed the optimistic spin cmpxchg trickery to not require the -1000
state, please double and tripple check the code.

This was done because the interaction between trylock_slowpath and that
-1000 state hurt my head.

---
Subject: 
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
Date: Thu Jan 08 09:41:22 CET 2009

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
---
 include/linux/mutex.h   |    4 +-
 include/linux/sched.h   |    1 
 kernel/mutex-debug.c    |   24 ++++++++++-----
 kernel/mutex-debug.h    |   18 ++++++-----
 kernel/mutex.c          |   76 ++++++++++++++++++++++++++++++++++++++++++------
 kernel/mutex.h          |   22 ++++++++++++-
 kernel/sched.c          |   66 +++++++++++++++++++++++++++++++++++++++++
 kernel/sched_features.h |    1 
 8 files changed, 185 insertions(+), 27 deletions(-)

Index: linux-2.6/include/linux/mutex.h
===================================================================
--- linux-2.6.orig/include/linux/mutex.h
+++ linux-2.6/include/linux/mutex.h
@@ -50,8 +50,10 @@ struct mutex {
 	atomic_t		count;
 	spinlock_t		wait_lock;
 	struct list_head	wait_list;
-#ifdef CONFIG_DEBUG_MUTEXES
+#if defined(CONFIG_DEBUG_MUTEXES) || defined(CONFIG_SMP)
 	struct thread_info	*owner;
+#endif
+#ifdef CONFIG_DEBUG_MUTEXES
 	const char 		*name;
 	void			*magic;
 #endif
Index: linux-2.6/kernel/mutex-debug.c
===================================================================
--- linux-2.6.orig/kernel/mutex-debug.c
+++ linux-2.6/kernel/mutex-debug.c
@@ -26,11 +26,6 @@
 /*
  * Must be called with lock->wait_lock held.
  */
-void debug_mutex_set_owner(struct mutex *lock, struct thread_info *new_owner)
-{
-	lock->owner = new_owner;
-}
-
 void debug_mutex_lock_common(struct mutex *lock, struct mutex_waiter *waiter)
 {
 	memset(waiter, MUTEX_DEBUG_INIT, sizeof(*waiter));
@@ -80,9 +75,25 @@ void debug_mutex_unlock(struct mutex *lo
 		return;
 
 	DEBUG_LOCKS_WARN_ON(lock->magic != lock);
+#if 0
+	/*
+	 * XXX something is iffy with owner tracking, but lockdep - which has
+	 * similar checks - finds everything dandy, so disable for now.
+	 */
+	if (lock->owner != current_thread_info()) {
+		printk(KERN_ERR "%p %p\n", lock->owner, current_thread_info());
+		if (lock->owner) {
+			printk(KERN_ERR "%d %s\n",
+					lock->owner->task->pid,
+					lock->owner->task->comm);
+		}
+		printk(KERN_ERR "%d %s\n",
+				current_thread_info()->task->pid,
+				current_thread_info()->task->comm);
+	}
 	DEBUG_LOCKS_WARN_ON(lock->owner != current_thread_info());
+#endif
 	DEBUG_LOCKS_WARN_ON(!lock->wait_list.prev && !lock->wait_list.next);
-	DEBUG_LOCKS_WARN_ON(lock->owner != current_thread_info());
 }
 
 void debug_mutex_init(struct mutex *lock, const char *name,
@@ -95,7 +106,6 @@ void debug_mutex_init(struct mutex *lock
 	debug_check_no_locks_freed((void *)lock, sizeof(*lock));
 	lockdep_init_map(&lock->dep_map, name, key, 0);
 #endif
-	lock->owner = NULL;
 	lock->magic = lock;
 }
 
Index: linux-2.6/kernel/mutex-debug.h
===================================================================
--- linux-2.6.orig/kernel/mutex-debug.h
+++ linux-2.6/kernel/mutex-debug.h
@@ -13,14 +13,6 @@
 /*
  * This must be called with lock->wait_lock held.
  */
-extern void
-debug_mutex_set_owner(struct mutex *lock, struct thread_info *new_owner);
-
-static inline void debug_mutex_clear_owner(struct mutex *lock)
-{
-	lock->owner = NULL;
-}
-
 extern void debug_mutex_lock_common(struct mutex *lock,
 				    struct mutex_waiter *waiter);
 extern void debug_mutex_wake_waiter(struct mutex *lock,
@@ -35,6 +27,16 @@ extern void debug_mutex_unlock(struct mu
 extern void debug_mutex_init(struct mutex *lock, const char *name,
 			     struct lock_class_key *key);
 
+static inline void mutex_set_owner(struct mutex *lock)
+{
+	lock->owner = current_thread_info();
+}
+
+static inline void mutex_clear_owner(struct mutex *lock)
+{
+	lock->owner = NULL;
+}
+
 #define spin_lock_mutex(lock, flags)			\
 	do {						\
 		struct mutex *l = container_of(lock, struct mutex, wait_lock); \
Index: linux-2.6/kernel/mutex.c
===================================================================
--- linux-2.6.orig/kernel/mutex.c
+++ linux-2.6/kernel/mutex.c
@@ -10,6 +10,11 @@
  * Many thanks to Arjan van de Ven, Thomas Gleixner, Steven Rostedt and
  * David Howells for suggestions and improvements.
  *
+ *  - Adaptive spinning for mutexes by Peter Zijlstra. (Ported to mainline
+ *    from the -rt tree, where it was originally implemented for rtmutexes
+ *    by Steven Rostedt, based on work by Gregory Haskins, Peter Morreale
+ *    and Sven Dietrich.
+ *
  * Also see Documentation/mutex-design.txt.
  */
 #include <linux/mutex.h>
@@ -46,6 +51,7 @@ __mutex_init(struct mutex *lock, const c
 	atomic_set(&lock->count, 1);
 	spin_lock_init(&lock->wait_lock);
 	INIT_LIST_HEAD(&lock->wait_list);
+	mutex_clear_owner(lock);
 
 	debug_mutex_init(lock, name, key);
 }
@@ -91,6 +97,7 @@ void inline __sched mutex_lock(struct mu
 	 * 'unlocked' into 'locked' state.
 	 */
 	__mutex_fastpath_lock(&lock->count, __mutex_lock_slowpath);
+	mutex_set_owner(lock);
 }
 
 EXPORT_SYMBOL(mutex_lock);
@@ -115,6 +122,14 @@ void __sched mutex_unlock(struct mutex *
 	 * The unlocking fastpath is the 0->1 transition from 'locked'
 	 * into 'unlocked' state:
 	 */
+#ifndef CONFIG_DEBUG_MUTEXES
+	/*
+	 * When debugging is enabled we must not clear the owner before time,
+	 * the slow path will always be taken, and that clears the owner field
+	 * after verifying that it was indeed current.
+	 */
+	mutex_clear_owner(lock);
+#endif
 	__mutex_fastpath_unlock(&lock->count, __mutex_unlock_slowpath);
 }
 
@@ -129,13 +144,38 @@ __mutex_lock_common(struct mutex *lock, 
 {
 	struct task_struct *task = current;
 	struct mutex_waiter waiter;
-	unsigned int old_val;
 	unsigned long flags;
+	int old_val;
+
+	mutex_acquire(&lock->dep_map, subclass, 0, ip);
+
+#ifdef CONFIG_SMP
+	/* Optimistic spinning.. */
+	for (;;) {
+		struct thread_info *owner;
+
+		old_val = atomic_cmpxchg(&lock->count, 1, 0);
+		if (old_val == 1) {
+			lock_acquired(&lock->dep_map, ip);
+			mutex_set_owner(lock);
+			return 0;
+		}
+
+		if (old_val < 0 && !list_empty(&lock->wait_list))
+			break;
+
+		/* See who owns it, and spin on him if anybody */
+		owner = ACCESS_ONCE(lock->owner);
+		if (owner && !spin_on_owner(lock, owner))
+			break;
+
+		cpu_relax();
+	}
+#endif
 
 	spin_lock_mutex(&lock->wait_lock, flags);
 
 	debug_mutex_lock_common(lock, &waiter);
-	mutex_acquire(&lock->dep_map, subclass, 0, ip);
 	debug_mutex_add_waiter(lock, &waiter, task_thread_info(task));
 
 	/* add waiting tasks to the end of the waitqueue (FIFO): */
@@ -187,7 +227,7 @@ done:
 	lock_acquired(&lock->dep_map, ip);
 	/* got the lock - rejoice! */
 	mutex_remove_waiter(lock, &waiter, task_thread_info(task));
-	debug_mutex_set_owner(lock, task_thread_info(task));
+	mutex_set_owner(lock);
 
 	/* set it to 0 if there are no waiters left: */
 	if (likely(list_empty(&lock->wait_list)))
@@ -260,7 +300,7 @@ __mutex_unlock_common_slowpath(atomic_t 
 		wake_up_process(waiter->task);
 	}
 
-	debug_mutex_clear_owner(lock);
+	mutex_clear_owner(lock);
 
 	spin_unlock_mutex(&lock->wait_lock, flags);
 }
@@ -298,18 +338,30 @@ __mutex_lock_interruptible_slowpath(atom
  */
 int __sched mutex_lock_interruptible(struct mutex *lock)
 {
+	int ret;
+
 	might_sleep();
-	return __mutex_fastpath_lock_retval
+	ret =  __mutex_fastpath_lock_retval
 			(&lock->count, __mutex_lock_interruptible_slowpath);
+	if (!ret)
+		mutex_set_owner(lock);
+
+	return ret;
 }
 
 EXPORT_SYMBOL(mutex_lock_interruptible);
 
 int __sched mutex_lock_killable(struct mutex *lock)
 {
+	int ret;
+
 	might_sleep();
-	return __mutex_fastpath_lock_retval
+	ret = __mutex_fastpath_lock_retval
 			(&lock->count, __mutex_lock_killable_slowpath);
+	if (!ret)
+		mutex_set_owner(lock);
+
+	return ret;
 }
 EXPORT_SYMBOL(mutex_lock_killable);
 
@@ -352,9 +404,10 @@ static inline int __mutex_trylock_slowpa
 
 	prev = atomic_xchg(&lock->count, -1);
 	if (likely(prev == 1)) {
-		debug_mutex_set_owner(lock, current_thread_info());
+		mutex_set_owner(lock);
 		mutex_acquire(&lock->dep_map, 0, 1, _RET_IP_);
 	}
+
 	/* Set it back to 0 if there are no waiters: */
 	if (likely(list_empty(&lock->wait_list)))
 		atomic_set(&lock->count, 0);
@@ -380,8 +433,13 @@ static inline int __mutex_trylock_slowpa
  */
 int __sched mutex_trylock(struct mutex *lock)
 {
-	return __mutex_fastpath_trylock(&lock->count,
-					__mutex_trylock_slowpath);
+	int ret;
+
+	ret = __mutex_fastpath_trylock(&lock->count, __mutex_trylock_slowpath);
+	if (ret)
+		mutex_set_owner(lock);
+
+	return ret;
 }
 
 EXPORT_SYMBOL(mutex_trylock);
Index: linux-2.6/kernel/mutex.h
===================================================================
--- linux-2.6.orig/kernel/mutex.h
+++ linux-2.6/kernel/mutex.h
@@ -16,8 +16,26 @@
 #define mutex_remove_waiter(lock, waiter, ti) \
 		__list_del((waiter)->list.prev, (waiter)->list.next)
 
-#define debug_mutex_set_owner(lock, new_owner)		do { } while (0)
-#define debug_mutex_clear_owner(lock)			do { } while (0)
+#ifdef CONFIG_SMP
+static inline void mutex_set_owner(struct mutex *lock)
+{
+	lock->owner = current_thread_info();
+}
+
+static inline void mutex_clear_owner(struct mutex *lock)
+{
+	lock->owner = NULL;
+}
+#else
+static inline void mutex_set_owner(struct mutex *lock)
+{
+}
+
+static inline void mutex_clear_owner(struct mutex *lock)
+{
+}
+#endif
+
 #define debug_mutex_wake_waiter(lock, waiter)		do { } while (0)
 #define debug_mutex_free_waiter(waiter)			do { } while (0)
 #define debug_mutex_add_waiter(lock, waiter, ti)	do { } while (0)
Index: linux-2.6/kernel/sched.c
===================================================================
--- linux-2.6.orig/kernel/sched.c
+++ linux-2.6/kernel/sched.c
@@ -4672,6 +4672,72 @@ need_resched_nonpreemptible:
 }
 EXPORT_SYMBOL(schedule);
 
+#ifdef CONFIG_SMP
+/*
+ * Look out! "owner" is an entirely speculative pointer
+ * access and not reliable.
+ */
+int spin_on_owner(struct mutex *lock, struct thread_info *owner)
+{
+	unsigned int cpu;
+	struct rq *rq;
+	int ret = 1;
+
+	if (unlikely(!sched_feat(OWNER_SPIN)))
+		return 0;
+
+	preempt_disable();
+#ifdef CONFIG_DEBUG_PAGEALLOC
+	/*
+	 * Need to access the cpu field knowing that
+	 * DEBUG_PAGEALLOC could have unmapped it if
+	 * the mutex owner just released it and exited.
+	 */
+	if (probe_kernel_address(&owner->cpu, cpu))
+		goto out;
+#else
+	cpu = owner->cpu;
+#endif
+
+	/*
+	 * Even if the access succeeded (likely case),
+	 * the cpu field may no longer be valid.
+	 */
+	if (cpu >= nr_cpumask_bits)
+		goto out;
+
+	/*
+	 * We need to validate that we can do a
+	 * get_cpu() and that we have the percpu area.
+	 */
+	if (!cpu_online(cpu))
+		goto out;
+
+	rq = cpu_rq(cpu);
+
+	for (;;) {
+		if (lock->owner != owner)
+			break;
+
+		/*
+		 * Is that owner really running on that cpu?
+		 */
+		if (task_thread_info(rq->curr) != owner)
+			break;
+
+		if (need_resched()) {
+			ret = 0;
+			break;
+		}
+
+		cpu_relax();
+	}
+out:
+	preempt_enable_no_resched();
+	return ret;
+}
+#endif
+
 #ifdef CONFIG_PREEMPT
 /*
  * this is the entry point to schedule() from in-kernel preemption
Index: linux-2.6/include/linux/sched.h
===================================================================
--- linux-2.6.orig/include/linux/sched.h
+++ linux-2.6/include/linux/sched.h
@@ -330,6 +330,7 @@ extern signed long schedule_timeout_inte
 extern signed long schedule_timeout_killable(signed long timeout);
 extern signed long schedule_timeout_uninterruptible(signed long timeout);
 asmlinkage void schedule(void);
+extern int spin_on_owner(struct mutex *lock, struct thread_info *owner);
 
 struct nsproxy;
 struct user_namespace;
Index: linux-2.6/kernel/sched_features.h
===================================================================
--- linux-2.6.orig/kernel/sched_features.h
+++ linux-2.6/kernel/sched_features.h
@@ -13,3 +13,4 @@ SCHED_FEAT(LB_WAKEUP_UPDATE, 1)
 SCHED_FEAT(ASYM_EFF_LOAD, 1)
 SCHED_FEAT(WAKEUP_OVERLAP, 0)
 SCHED_FEAT(LAST_BUDDY, 1)
+SCHED_FEAT(OWNER_SPIN, 1)


  parent reply	other threads:[~2009-01-08 14:46 UTC|newest]

Thread overview: 371+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-31 11:28 Btrfs for mainline Chris Mason
2008-12-31 18:45 ` Andrew Morton
2008-12-31 23:19   ` Chris Mason
2009-01-02 16:37     ` Ryusuke Konishi
2009-01-02 18:06       ` Chris Mason
2009-01-02 19:38       ` Chris Mason
2009-01-03  9:44         ` Ryusuke Konishi
2009-01-05 14:14           ` Chris Mason
2009-01-05 16:43             ` Ryusuke Konishi
2009-01-05 10:32         ` Nick Piggin
2009-01-05 13:21           ` Chris Mason
2009-01-05 14:39             ` generic pagecache to block mapping layer (was Re: Btrfs for mainline) Nick Piggin
2009-01-05 16:37               ` Chris Mason
2009-01-05 17:10                 ` Nick Piggin
2009-01-06 17:20                   ` Nick Piggin
2009-01-02 19:05     ` Btrfs for mainline Andi Kleen
2009-01-02 19:32       ` Chris Mason
2009-01-02 21:01         ` Andi Kleen
2009-01-02 21:35           ` Chris Mason
2009-01-02 22:26             ` Roland Dreier
2009-01-04 13:28               ` KOSAKI Motohiro
2009-01-04 15:56                 ` Ed Tomlinson
2009-01-05 10:07           ` Chris Samuel
2009-01-05 13:18             ` Chris Mason
2009-01-05 16:33               ` J. Bruce Fields
2009-01-06 22:09                 ` Jamie Lokier
2009-01-03 19:17       ` Matthew Wilcox
2009-01-03 19:50         ` Christoph Hellwig
2009-01-03 20:17           ` Chris Mason
2009-01-04 21:52             ` Arnd Bergmann
2009-01-04 21:52               ` Arnd Bergmann
2009-01-05 14:01               ` Chris Mason
2009-01-03 21:12           ` Matthew Wilcox
2009-01-04 18:21         ` Peter Zijlstra
2009-01-04 18:41           ` Matthew Wilcox
2009-01-05 14:47             ` Nick Piggin
2009-01-05 16:23               ` Matthew Wilcox
2009-01-05 16:30               ` Chris Mason
2009-01-07 13:07                 ` Ingo Molnar
2009-01-07 13:24                   ` Matthew Wilcox
2009-01-07 14:56                     ` Ingo Molnar
2009-01-06 11:40             ` [PATCH][RFC]: mutex: adaptive spin Peter Zijlstra
2009-01-06 12:10               ` Ingo Molnar
2009-01-06 12:21                 ` Peter Zijlstra
2009-01-06 15:01                   ` Matthew Wilcox
2009-01-06 13:10                 ` Gregory Haskins
2009-01-06 13:16                   ` Ingo Molnar
2009-01-06 13:20                     ` Peter Zijlstra
2009-01-06 14:15                       ` Gregory Haskins
2009-01-06 21:42                         ` Paul E. McKenney
2009-01-06 21:44                           ` Peter Zijlstra
2009-01-06 21:50                             ` Linus Torvalds
2009-01-06 22:07                               ` Peter Zijlstra
2009-01-06 22:22                                 ` Linus Torvalds
2009-01-06 22:43                                   ` Peter Zijlstra
2009-01-06 22:56                                     ` Linus Torvalds
2009-01-06 23:00                                     ` Linus Torvalds
2009-01-06 23:09                                       ` Matthew Wilcox
2009-01-07  0:06                                         ` Linus Torvalds
2009-01-06 23:16                                     ` Peter Zijlstra
2009-01-07 12:03                                       ` [PATCH -v4][RFC]: mutex: implement adaptive spinning Peter Zijlstra
2009-01-07 14:50                                         ` Frédéric Weisbecker
2009-01-07 14:58                                           ` Peter Zijlstra
2009-01-07 14:58                                             ` Peter Zijlstra
2009-01-07 14:58                                             ` Peter Zijlstra
2009-01-07 15:22                                         ` Steven Rostedt
2009-01-07 15:29                                           ` Steven Rostedt
2009-01-07 15:54                                           ` Peter Zijlstra
2009-01-07 16:25                                         ` Linus Torvalds
2009-01-07 16:57                                           ` [PATCH -v5][RFC]: " Peter Zijlstra
2009-01-07 18:55                                             ` Linus Torvalds
2009-01-07 20:40                                               ` Steven Rostedt
2009-01-07 20:55                                                 ` Linus Torvalds
2009-01-07 21:09                                                   ` Matthew Wilcox
2009-01-07 21:24                                                     ` Linus Torvalds
2009-01-07 21:32                                                       ` Ingo Molnar
2009-01-07 21:47                                                         ` Andrew Morton
2009-01-07 21:57                                                           ` Ingo Molnar
2009-01-07 21:39                                                       ` Linus Torvalds
2009-01-07 21:39                                                     ` Andi Kleen
2009-01-07 22:28                                                       ` Gregory Haskins
2009-01-07 22:33                                                         ` Ingo Molnar
2009-01-07 22:51                                                           ` Peter W. Morreale
2009-01-07 23:14                                                             ` Peter W. Morreale
2009-01-07 22:56                                                           ` Gregory Haskins
2009-01-07 23:09                                                             ` Steven Rostedt
2009-01-07 23:32                                                               ` Linus Torvalds
2009-01-07 23:46                                                                 ` Steven Rostedt
2009-01-07 23:47                                                                   ` Steven Rostedt
2009-01-07 23:52                                                                     ` Linus Torvalds
2009-01-08  3:28                                                                 ` Gregory Haskins
2009-01-08  7:10                                                                 ` Peter Zijlstra
2009-01-07 23:15                                                         ` Linus Torvalds
2009-01-07 23:18                                                           ` Linus Torvalds
2009-01-08  3:27                                                             ` Gregory Haskins
2009-01-08  3:38                                                               ` Steven Rostedt
2009-01-08  4:00                                                                 ` Gregory Haskins
2009-01-07 23:23                                                         ` Paul E. McKenney
2009-01-07 21:28                                                   ` Ingo Molnar
2009-01-07 21:51                                                   ` Peter Zijlstra
2009-01-07 21:58                                                     ` Linus Torvalds
2009-01-07 22:06                                                       ` Linus Torvalds
2009-01-07 22:18                                                       ` Peter Zijlstra
2009-01-07 23:10                                                         ` Linus Torvalds
2009-01-08  9:58                                                           ` [PATCH -v6][RFC]: " Peter Zijlstra
2009-01-08 14:18                                                             ` Ingo Molnar
2009-01-08 14:33                                                               ` Gregory Haskins
2009-01-08 14:46                                                               ` Peter Zijlstra [this message]
2009-01-08 15:09                                                                 ` [PATCH -v7][RFC]: " Steven Rostedt
2009-01-08 15:23                                                                   ` Peter Zijlstra
2009-01-08 15:28                                                                     ` Steven Rostedt
2009-01-08 15:30                                                                       ` Peter Zijlstra
2009-01-08 15:30                                                                       ` Steven Rostedt
2009-01-08 16:11                                                                 ` Linus Torvalds
2009-01-08 16:58                                                                 ` Linus Torvalds
2009-01-08 17:08                                                                   ` Chris Mason
2009-01-08 17:33                                                                     ` Steven Rostedt
2009-01-08 17:52                                                                       ` Linus Torvalds
2009-01-08 18:03                                                                         ` Steven Rostedt
2009-01-08 18:14                                                                           ` Steven Rostedt
2009-01-08 19:17                                                                             ` Chris Mason
2009-01-08 19:45                                                                               ` Steven Rostedt
2009-01-08 18:16                                                                           ` Linus Torvalds
2009-01-08 18:27                                                                             ` Chris Mason
2009-01-08 19:02                                                                               ` Chris Mason
2009-01-08 19:13                                                                                 ` Linus Torvalds
2009-01-08 19:23                                                                                   ` Peter Zijlstra
2009-01-09 17:40                                                                                     ` Jiri Kosina
2009-01-09  9:28                                                                                   ` Peter Zijlstra
2009-01-10 23:59                                                                                   ` Jeremy Fitzhardinge
2009-01-08 19:54                                                                                 ` Linus Torvalds
2009-01-08 20:12                                                                                   ` Steven Rostedt
2009-01-09 10:47                                                                                   ` Peter Zijlstra
2009-01-09 15:06                                                                                     ` Peter Zijlstra
2009-01-09 15:11                                                                                       ` Chris Mason
2009-01-09 15:59                                                                                       ` Steven Rostedt
2009-01-09 16:03                                                                                         ` Peter Zijlstra
2009-01-09 16:34                                                                                         ` Linus Torvalds
2009-01-09 16:44                                                                                           ` Steven Rostedt
2009-01-09 18:16                                                                                             ` Peter Zijlstra
2009-01-09 18:24                                                                                               ` Linus Torvalds
2009-01-08 18:03                                                                         ` Steven Rostedt
2009-01-08 18:03                                                                         ` Steven Rostedt
2009-01-08 18:00                                                                     ` Linus Torvalds
2009-01-08 18:33                                                                       ` Ingo Molnar
2009-01-08 18:41                                                                         ` H. Peter Anvin
2009-01-09  3:46                                                                           ` Linus Torvalds
2009-01-09  4:59                                                                             ` David Miller
2009-01-09  5:00                                                                             ` H. Peter Anvin
2009-01-09 13:00                                                                             ` [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact Ingo Molnar
2009-01-09 14:03                                                                               ` jim owens
2009-01-09 15:35                                                                                 ` Ingo Molnar
2009-01-09 16:28                                                                                   ` Linus Torvalds
2009-01-09 19:56                                                                                     ` H. Peter Anvin
2009-01-10  8:55                                                                                       ` Chris Samuel
2009-01-09 20:17                                                                                     ` Nicholas Miell
2009-01-09 20:29                                                                                       ` Linus Torvalds
2009-01-09 23:28                                                                                         ` Nicholas Miell
2009-01-10  0:05                                                                                           ` Linus Torvalds
2009-01-10  0:37                                                                                             ` Andi Kleen
2009-01-10  0:41                                                                                               ` Linus Torvalds
2009-01-10  1:08                                                                                                 ` Andi Kleen
2009-01-10  2:12                                                                                             ` Nicholas Miell
2009-01-10  4:05                                                                                               ` Linus Torvalds
2009-01-10  6:44                                                                                                 ` Nicholas Miell
2009-01-09 20:29                                                                                       ` Steven Rostedt
2009-01-09 16:34                                                                                   ` H. Peter Anvin
2009-01-09 16:44                                                                                     ` Linus Torvalds
2009-01-09 16:47                                                                                       ` Dirk Hohndel
2009-01-09 16:46                                                                                     ` Dirk Hohndel
2009-01-09 16:51                                                                                       ` H. Peter Anvin
2009-01-09 17:07                                                                                         ` Steven Rostedt
2009-01-09 17:14                                                                                           ` Linus Torvalds
2009-01-09 17:32                                                                                           ` Andi Kleen
2009-01-09 17:20                                                                                       ` Andi Kleen
2009-01-09 17:11                                                                                         ` Linus Torvalds
2009-01-09 17:46                                                                                           ` Andi Kleen
2009-01-09 17:28                                                                                         ` Matthew Wilcox
2009-01-09 17:47                                                                                           ` Andi Kleen
2009-01-09 17:39                                                                                             ` Matthew Wilcox
2009-01-09 17:54                                                                                               ` Linus Torvalds
2009-01-09 18:07                                                                                                 ` H. Peter Anvin
2009-01-09 18:19                                                                                                 ` Andi Kleen
2009-01-09 18:59                                                                                                   ` Richard Guenther
2009-01-09 19:13                                                                                                     ` H. Peter Anvin
2009-01-09 19:21                                                                                                     ` Andi Kleen
2009-01-09 19:10                                                                                                       ` Richard Guenther
2009-01-09 19:17                                                                                                         ` H. Peter Anvin
2009-01-09 19:40                                                                                                         ` Andi Kleen
2009-01-09 19:32                                                                                                           ` Richard Guenther
2009-01-09 19:09                                                                                                 ` Richard Guenther
2009-01-09 19:44                                                                                                   ` Linus Torvalds
2009-01-09 20:14                                                                                                     ` Richard Guenther
2009-01-09 20:26                                                                                                       ` Linus Torvalds
2009-01-09 20:37                                                                                                         ` Richard Guenther
2009-01-09 21:23                                                                                                           ` Theodore Tso
2009-01-09 21:33                                                                                                             ` Steven Rostedt
2009-01-09 20:58                                                                                                         ` Sam Ravnborg
2009-01-09 17:41                                                                                             ` Dirk Hohndel
2009-01-09 18:02                                                                                               ` Andi Kleen
2009-01-09 17:57                                                                                                 ` Linus Torvalds
2009-01-09 18:55                                                                                                   ` Andi Kleen
2009-01-09 19:00                                                                                                     ` Linus Torvalds
2009-01-09 19:35                                                                                                       ` Andi Kleen
2009-01-09 19:29                                                                                                         ` Matthew Wilcox
2009-01-09 19:48                                                                                                           ` Linus Torvalds
2009-01-09 19:52                                                                                                     ` Theodore Tso
2009-01-09 22:07                                                                                                       ` Arjan van de Ven
2009-01-09 22:44                                                                                                       ` Andi Kleen
2009-01-09 22:44                                                                                                         ` Andi Kleen
2009-01-09 22:35                                                                                                         ` H. Peter Anvin
2009-01-09 22:55                                                                                                           ` Arjan van de Ven
2009-01-09 23:32                                                                                                         ` Sam Ravnborg
2009-01-09 22:44                                                                                                       ` Andi Kleen
2009-01-10  5:29                                                                                                       ` Arjan van de Ven
2009-01-10  5:57                                                                                                         ` H. Peter Anvin
2009-01-11 22:45                                                                                     ` Valdis.Kletnieks
2009-01-09 17:13                                                                                 ` Christoph Hellwig
2009-01-09 15:25                                                                               ` Ingo Molnar
2009-01-08 19:00                                                                         ` [PATCH -v7][RFC]: mutex: implement adaptive spinning Andi Kleen
2009-01-09  1:42                                                                           ` H. Peter Anvin
2009-01-09 13:37                                                                             ` Ingo Molnar
2009-01-09 16:09                                                                               ` Linus Torvalds
2009-01-09 16:23                                                                                 ` H. Peter Anvin
2009-01-09 16:37                                                                                   ` Linus Torvalds
2009-01-09 20:41                                                                                 ` Ingo Molnar
2009-01-09 20:56                                                                                   ` Ingo Molnar
2009-01-09 20:56                                                                                   ` Linus Torvalds
2009-01-09 21:34                                                                                     ` Ingo Molnar
2009-01-09 21:41                                                                                       ` Harvey Harrison
2009-01-09 21:50                                                                                         ` Linus Torvalds
2009-01-09 21:59                                                                                           ` Harvey Harrison
2009-01-09 22:09                                                                                             ` Linus Torvalds
2009-01-09 22:13                                                                                               ` Harvey Harrison
2009-01-09 22:25                                                                                               ` Harvey Harrison
2009-01-10  0:53                                                                                                 ` Jamie Lokier
2009-01-10  1:04                                                                                                   ` Linus Torvalds
2009-01-10  1:13                                                                                                   ` Andi Kleen
2009-01-09 23:12                                                                                           ` Ingo Molnar
2009-01-09 23:24                                                                                             ` Linus Torvalds
2009-01-10  1:01                                                                                               ` Ingo Molnar
2009-01-10  1:06                                                                                                 ` Linus Torvalds
2009-01-10  1:20                                                                                                   ` Ingo Molnar
2009-01-10  1:34                                                                                                     ` Linus Torvalds
2009-01-10  1:08                                                                                                 ` Harvey Harrison
2009-01-10  1:30                                                                                                   ` Linus Torvalds
2009-01-10  5:03                                                                                                     ` H. Peter Anvin
2009-01-10  5:28                                                                                                       ` Linus Torvalds
2009-01-10  5:57                                                                                                         ` H. Peter Anvin
2009-01-11  0:54                                                                                                         ` Ingo Molnar
2009-01-12  1:56                                                                                                           ` Jamie Lokier
2009-01-12  8:40                                                                                                             ` Ingo Molnar
2009-01-10  1:18                                                                                                 ` Steven Rostedt
2009-01-10  1:39                                                                                                 ` Linus Torvalds
2009-01-10  1:41                                                                                                 ` Andrew Morton
2009-01-10  3:02                                                                                                   ` Andi Kleen
2009-01-11 12:26                                                                                                     ` David Woodhouse
2009-01-11 18:13                                                                                                       ` Andi Kleen
2009-01-11 19:25                                                                                                         ` Linus Torvalds
2009-01-11 20:14                                                                                                           ` gcc inlining heuristics was " Andi Kleen
2009-01-11 20:15                                                                                                             ` David Woodhouse
2009-01-11 20:34                                                                                                               ` Andi Kleen
2009-01-11 20:51                                                                                                                 ` Linus Torvalds
2009-01-11 23:05                                                                                                                   ` Linus Torvalds
2009-01-12  0:12                                                                                                                     ` Andi Kleen
2009-01-12  0:21                                                                                                                       ` Linus Torvalds
2009-01-12  0:52                                                                                                                         ` Andi Kleen
2009-01-12  1:20                                                                                                                           ` H. Peter Anvin
2009-01-12 18:06                                                                                                                           ` Bernd Schmidt
2009-01-12 19:02                                                                                                                             ` Linus Torvalds
2009-01-12 19:32                                                                                                                               ` Andi Kleen
2009-01-12 19:22                                                                                                                                 ` H. Peter Anvin
2009-01-12 19:45                                                                                                                                   ` Linus Torvalds
2009-01-12 19:45                                                                                                                                   ` Linus Torvalds
2009-01-12 23:01                                                                                                                                     ` Jamie Lokier
2009-01-12 23:19                                                                                                                                       ` Linus Torvalds
2009-01-12 19:42                                                                                                                                 ` Linus Torvalds
2009-01-12 20:08                                                                                                                                   ` Linus Torvalds
2009-01-12 22:03                                                                                                                                   ` Bernd Schmidt
2009-01-13  0:21                                                                                                                                     ` Linus Torvalds
2009-01-13  1:30                                                                                                                                       ` Steven Rostedt
2009-01-19  0:13                                                                                                                                     ` Ingo Molnar
2009-01-19  6:22                                                                                                                                       ` Nick Piggin
2009-01-19 21:01                                                                                                                                         ` Linus Torvalds
2009-01-20  0:51                                                                                                                                           ` Nick Piggin
2009-01-20 12:38                                                                                                                                             ` Ingo Molnar
2009-01-20 19:49                                                                                                                                               ` David Woodhouse
2009-01-20 21:05                                                                                                                                                 ` Ingo Molnar
2009-01-20 21:23                                                                                                                                                   ` Linus Torvalds
2009-01-20 22:05                                                                                                                                                     ` Ingo Molnar
2009-01-21  1:22                                                                                                                                                       ` H. Peter Anvin
2009-01-21  8:54                                                                                                                                                       ` Andi Kleen
2009-01-21  8:52                                                                                                                                                         ` Nick Piggin
2009-01-21  9:20                                                                                                                                                           ` Andi Kleen
2009-01-21  9:25                                                                                                                                                             ` Nick Piggin
2009-01-21  9:54                                                                                                                                                               ` Andi Kleen
2009-01-21 10:14                                                                                                                                                                 ` Nick Piggin
2009-01-20  4:20                                                                                                                                           ` Andi Kleen
2009-01-20 17:43                                                                                                                                           ` Miguel F Mascarenhas Sousa Filipe
2009-01-12 19:42                                                                                                                                 ` Linus Torvalds
2009-01-12 19:55                                                                                                                               ` Bernd Schmidt
2009-01-12 20:11                                                                                                                                 ` Linus Torvalds
2009-01-12  7:59                                                                                                       ` Hard to debug kernel issues (was Re: [PATCH -v7][RFC]: mutex: implement adaptive spinning) Chris Samuel
2009-01-10  6:44                                                                                                 ` [PATCH -v7][RFC]: mutex: implement adaptive spinning H. Peter Anvin
2009-01-09 21:46                                                                                       ` Linus Torvalds
2009-01-09 21:58                                                                                     ` Ingo Molnar
2009-01-09 21:15                                                                               ` Andi Kleen
2009-01-08 19:59                                                                         ` Harvey Harrison
2009-01-09  1:44                                                                           ` H. Peter Anvin
2009-01-09  2:24                                                                             ` Harvey Harrison
2009-01-09  5:05                                                                               ` H. Peter Anvin
2009-01-09  3:35                                                                             ` Andi Kleen
2009-01-09  3:42                                                                               ` Linus Torvalds
2009-01-09  6:57                                                                                 ` Andi Kleen
2009-01-09  6:00                                                                               ` Andrew Morton
2009-01-09  6:58                                                                                 ` Andi Kleen
2009-01-09 13:05                                                                               ` Chris Mason
2009-01-08 17:23                                                                   ` Peter Zijlstra
2009-01-07 22:54                                                       ` [PATCH -v5][RFC]: " Dave Kleikamp
2009-01-07 23:19                                                         ` Linus Torvalds
2009-01-07 23:49                                                           ` Steven Rostedt
2009-01-07 23:57                                                             ` Linus Torvalds
2009-01-08  2:18                                                               ` KAMEZAWA Hiroyuki
2009-01-08  2:33                                                               ` Steven Rostedt
2009-01-08  2:49                                                                 ` KAMEZAWA Hiroyuki
2009-01-08  6:52                                                             ` Andi Kleen
2009-01-08 14:24                                                               ` Steven Rostedt
2009-01-08 14:45                                                                 ` Andi Kleen
2009-01-07 21:37                                               ` Andi Kleen
2009-01-07 21:35                                                 ` Andrew Morton
2009-01-07 17:20                                           ` [PATCH -v4][RFC]: " Chris Mason
2009-01-07 17:50                                             ` Linus Torvalds
2009-01-07 18:00                                               ` Chris Mason
2009-01-07  3:57                                     ` [PATCH][RFC]: mutex: adaptive spin Lai Jiangshan
2009-01-07  6:32                                       ` Peter Zijlstra
2009-01-07  7:34                                         ` Lai Jiangshan
2009-01-07 13:35                                           ` Matthew Wilcox
2009-01-06 22:31                             ` Paul E. McKenney
2009-01-06 15:55                 ` Linus Torvalds
2009-01-06 16:11                   ` Linus Torvalds
2009-01-06 16:28                     ` Steven Rostedt
2009-01-06 16:40                     ` Linus Torvalds
2009-01-06 16:42                       ` Linus Torvalds
2009-01-06 17:02                         ` Ingo Molnar
2009-01-06 16:54                       ` Ingo Molnar
2009-01-06 16:56                         ` Ingo Molnar
2009-01-06 16:59                         ` Linus Torvalds
2009-01-06 16:19                   ` Chris Mason
2009-01-10 17:52                 ` Pavel Machek
2009-01-06 13:29               ` Nick Piggin
2009-01-06 16:23               ` Chris Mason
2009-01-06 17:08               ` Andrew Morton
2009-01-06 17:37                 ` Steven Rostedt
2009-01-06 18:02               ` Linus Torvalds
2009-01-06 18:20                 ` Steven Rostedt
2009-01-06 18:28                   ` Linus Torvalds
2009-01-06 18:25                 ` Linus Torvalds
2009-01-06 19:03                   ` Steven Rostedt
2009-01-05 14:34           ` Btrfs for mainline Chris Mason
2009-01-04  8:32 ` Gabor MICSKO
2009-01-05 14:35   ` Chris Mason
2009-01-05 15:01     ` Tomasz Torcz
2009-01-05 16:30       ` Chris Mason
2009-01-06 19:41 ` Chris Mason
2009-01-07  9:33   ` David Woodhouse
2009-01-07 18:45     ` Chris Mason
2009-01-08 20:15   ` jim owens
2009-01-11 23:34 ` Andrew Morton
2009-01-12 13:58   ` Chris Mason
2009-01-12 15:14     ` Miguel Figueiredo Mascarenhas Sousa Filipe
2009-01-12 15:17       ` Chris Mason

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1231426014.11687.456.camel@twins \
    --to=peterz@infradead.org \
    --cc=SDietrich@novell.com \
    --cc=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=chris.mason@oracle.com \
    --cc=ghaskins@novell.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=matthew@wil.cx \
    --cc=mingo@elte.hu \
    --cc=npiggin@suse.de \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=pmorreale@novell.com \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.