Whamcloud - gitweb
adding 2.6-sles10 target and kernel config files for the sles10 kernel
[fs/lustre-release.git] / lustre / kernel_patches / patches / kjournald_affinity.patch
1 --- linux-2.6.10.orig/fs/ext3/super.c   2004-12-24 22:35:28.000000000 +0100
2 +++ linux-2.6.10/fs/ext3/super.c        2005-01-18 12:27:51.896529310 +0100
3 @@ -1787,6 +1787,33 @@
4         return NULL;
5  }
6  
7 +#ifdef CONFIG_NUMA
8 +#include <linux/nodemask.h>
9 +#include <asm/topology.h>
10 +
11 +static int journal_node_affinity = 0;
12 +spinlock_t journal_node_affinity_lock = SPIN_LOCK_UNLOCKED;
13 +
14 +static void ext3_bind_journal_thread(journal_t *journal) {
15 +       int i, node;
16 +
17 +       spin_lock(&journal_node_affinity_lock);
18 +       for (i = 0; i < MAX_NUMNODES; i++) {
19 +               node = (journal_node_affinity + i) % MAX_NUMNODES;
20 +
21 +               if (!nr_cpus_node(node) || !node_online(node))
22 +                       continue;
23 +
24 +               set_cpus_allowed(journal->j_task, node_to_cpumask(node));
25 +               journal_node_affinity = (node + 1) % MAX_NUMNODES;
26 +               break;
27 +       }
28 +       spin_unlock(&journal_node_affinity_lock);
29 +}
30 +#else
31 +#define ext3_bind_journal_thread(journal) do {} while (0)
32 +#endif
33 +
34  static int ext3_load_journal(struct super_block * sb,
35                              struct ext3_super_block * es)
36  {
37 @@ -1852,6 +1875,7 @@
38                 return err;
39         }
40  
41 +       ext3_bind_journal_thread(journal);
42         EXT3_SB(sb)->s_journal = journal;
43         ext3_clear_journal_err(sb, es);
44         return 0;
45 @@ -1881,6 +1908,7 @@
46                 return -EIO;
47         }
48  
49 +       ext3_bind_journal_thread(journal);
50         EXT3_SB(sb)->s_journal = journal;
51  
52         ext3_update_dynamic_rev(sb);