2004-10-08 03:11:54

by Ray Bryant

[permalink] [raw]
Subject: [PATCH 1/1] lockmeter: lockmeter-lockmeter-fix-for-generic_read_trylock.patch

Andrew,

The patch in the mm tree named: lockmeter-lockmeter-fix-for-generic_read_trylock.patch
is incorrect. It should be as shown be replaced by this patch. (generic_raw_read_trylock()
should be a copy of what is in kernel/spinlock.c and should not call _metered_read_lock()).

The incorrect patch breaks lockmeter on any platform that uses generic_raw_read_trylock().
(This is part of the problem with lockmeter for Altix.)

(Thanks to John Hawkes for finding this.)

From: Ray Bryant <[email protected]>

Update lockmeter.c with generic_raw_read_trylock fix.

Signed-off-by: Ray Bryant <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
---

25-akpm/kernel/lockmeter.c | 12 ++++++++++++
1 files changed, 12 insertions(+)

diff -puN kernel/lockmeter.c~lockmeter-lockmeter-fix-for-generic_read_trylock kernel/lockmeter.c
--- 25/kernel/lockmeter.c~lockmeter-lockmeter-fix-for-generic_read_trylock 2004-09-16 21:32:25.175963856 -0700
+++ 25-akpm/kernel/lockmeter.c 2004-09-16 21:32:25.180963096 -0700
@@ -1213,6 +1213,18 @@ __read_lock_failed: \
* except for the fact tht calls to _raw_ routines are replaced by
* corresponding calls to the _metered_ routines
*/
+
+/*
+ * Generic declaration of the raw read_trylock() function,
+ * architectures are supposed to optimize this:
+ */
+int __lockfunc generic_raw_read_trylock(rwlock_t *lock)
+{
+ _raw_read_lock(lock);
+ return 1;
+}
+EXPORT_SYMBOL(generic_raw_read_trylock);
+
int __lockfunc _spin_trylock(spinlock_t *lock)
{
preempt_disable();
_

--
Best Regards,
Ray
-----------------------------------------------
Ray Bryant [email protected]
The box said: "Requires Windows 98 or better",
so I installed Linux.
-----------------------------------------------