On 4/6/19 8:47 AM, John Pittman wrote: > Hi Jens, I got some unexpected results with this patch this morning. > When loading null_blk with no arguments, I got the invalid home_node > value error message. I did some debug and found that the values > seemed fine: > > + pr_err("g_home_node is %d", g_home_node); > + pr_err("nr_online_nodes is %d", nr_online_nodes); > + pr_err("NUMA_NO_NODE is %d", NUMA_NO_NODE); > + > + if (g_home_node >= nr_online_nodes) { > + pr_err("null_blk: invalid home_node value\n"); > + g_home_node = NUMA_NO_NODE; > + } > + > if (g_queue_mode == NULL_Q_RQ) { > pr_err("null_blk: legacy IO path no longer available\n"); > return -EINVAL; > > [root@localhost linux]# modprobe null_blk > [ 296.336473] g_home_node is -1 > [ 296.336474] nr_online_nodes is 1 > [ 296.336514] NUMA_NO_NODE is -1 > [ 296.336558] null_blk: invalid home_node value > [ 296.338825] null: module loaded > > [root@localhost linux]# numactl --hardware > available: 1 nodes (0) > node 0 cpus: 0 1 2 3 > node 0 size: 828 MB > node 0 free: 451 MB > node distances: > node 0 > 0: 10 > > Fortunately, and also unexpectedly to me, I was able to fix the issue > just by casting nr_online_nodes as an int. > > + if (g_home_node >= (int)nr_online_nodes) { > + pr_err("null_blk: invalid home_node value\n"); > + g_home_node = NUMA_NO_NODE; > + } > + > > Would you like me to send in a v2 for this? Well, I already added it... I'll just edit it. But I think we should make it: if (g_home_node != NUMA_NO_NODE && g_home_node >= nr_online_nodes) instead. -- Jens Axboe