Whamcloud - gitweb
Merge b1_4_5047_0 from b1_4 (20050907_1521)
authoradilger <adilger>
Fri, 9 Sep 2005 19:47:13 +0000 (19:47 +0000)
committeradilger <adilger>
Fri, 9 Sep 2005 19:47:13 +0000 (19:47 +0000)
b=5047

lustre/kernel_patches/patches/kjournald_affinity.patch [new file with mode: 0644]

diff --git a/lustre/kernel_patches/patches/kjournald_affinity.patch b/lustre/kernel_patches/patches/kjournald_affinity.patch
new file mode 100644 (file)
index 0000000..977676b
--- /dev/null
@@ -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 <linux/nodemask.h>
++#include <asm/topology.h>
++
++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);