From 50d668656cbdb751ac2349ca2591099269af3859 Mon Sep 17 00:00:00 2001 From: adilger Date: Fri, 9 Sep 2005 19:47:13 +0000 Subject: [PATCH] Merge b1_4_5047_0 from b1_4 (20050907_1521) b=5047 --- .../patches/kjournald_affinity.patch | 52 ++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 lustre/kernel_patches/patches/kjournald_affinity.patch diff --git a/lustre/kernel_patches/patches/kjournald_affinity.patch b/lustre/kernel_patches/patches/kjournald_affinity.patch new file mode 100644 index 0000000..977676b --- /dev/null +++ b/lustre/kernel_patches/patches/kjournald_affinity.patch @@ -0,0 +1,52 @@ +--- linux-2.6.10.orig/fs/ext3/super.c 2004-12-24 22:35:28.000000000 +0100 ++++ linux-2.6.10/fs/ext3/super.c 2005-01-18 12:27:51.896529310 +0100 +@@ -1787,6 +1787,33 @@ + return NULL; + } + ++#ifdef CONFIG_NUMA ++#include ++#include ++ ++static int journal_node_affinity = 0; ++spinlock_t journal_node_affinity_lock = SPIN_LOCK_UNLOCKED; ++ ++static void ext3_bind_journal_thread(journal_t *journal) { ++ int i, node; ++ ++ spin_lock(&journal_node_affinity_lock); ++ for (i = 0; i < MAX_NUMNODES; i++) { ++ node = (journal_node_affinity + i) % MAX_NUMNODES; ++ ++ if (!nr_cpus_node(node) || !node_online(node)) ++ continue; ++ ++ set_cpus_allowed(journal->j_task, node_to_cpumask(node)); ++ journal_node_affinity = (node + 1) % MAX_NUMNODES; ++ break; ++ } ++ spin_unlock(&journal_node_affinity_lock); ++} ++#else ++#define ext3_bind_journal_thread(journal) do {} while (0) ++#endif ++ + static int ext3_load_journal(struct super_block * sb, + struct ext3_super_block * es) + { +@@ -1852,6 +1875,7 @@ + return err; + } + ++ ext3_bind_journal_thread(journal); + EXT3_SB(sb)->s_journal = journal; + ext3_clear_journal_err(sb, es); + return 0; +@@ -1881,6 +1908,7 @@ + return -EIO; + } + ++ ext3_bind_journal_thread(journal); + EXT3_SB(sb)->s_journal = journal; + + ext3_update_dynamic_rev(sb); -- 1.8.3.1