[PATCH -rt] scheduling while atomic in fs/file.c

From: Daniel Walker
Date: Tue May 16 2006 - 12:28:14 EST


Quite the smp_processor_id() warnings. The timer was pinned
before, but the spinlock protection is such that the timer
can migrate with out issues. Allowing the timers to
migrate (although not often) will allow them to
move off busy cpu's , and potentially follow the
work queue that they wake up.

Signed-Off-By: Daniel Walker <dwalker@xxxxxxxxxx>

Index: linux-2.6.16/fs/file.c
===================================================================
--- linux-2.6.16.orig/fs/file.c
+++ linux-2.6.16/fs/file.c
@@ -137,7 +137,9 @@ static void free_fdtable_rcu(struct rcu_
kfree(fdt->fd);
kfree(fdt);
} else {
- fddef = &get_cpu_var(fdtable_defer_list);
+
+ fddef = &per_cpu(fdtable_defer_list, raw_smp_processor_id());
+
spin_lock(&fddef->lock);
fdt->next = fddef->next;
fddef->next = fdt;
@@ -149,7 +151,6 @@ static void free_fdtable_rcu(struct rcu_
if (!schedule_work(&fddef->wq))
mod_timer(&fddef->timer, 5);
spin_unlock(&fddef->lock);
- put_cpu_var(fdtable_defer_list);
}
}

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/