cpus_allowed_policy fixups

- Make 'split' roundrobin the CPUs, if we have more threads
  than CPUs in the set.

- Properly use a CPU index, don't assume a sequential set of
  CPUs.

Signed-off-by: Jens Axboe <axboe@fb.com>
diff --git a/options.c b/options.c
index c1a8f32..4ff4c9b 100644
--- a/options.c
+++ b/options.c
@@ -394,16 +394,23 @@
 }
 
 #ifdef FIO_HAVE_CPU_AFFINITY
-int fio_cpus_split(os_cpu_mask_t *mask, unsigned int cpu)
+int fio_cpus_split(os_cpu_mask_t *mask, unsigned int cpu_index)
 {
+	unsigned int i, index, cpus_in_mask;
 	const long max_cpu = cpus_online();
-	unsigned int i;
 
+	cpus_in_mask = fio_cpu_count(mask);
+	cpu_index = cpu_index % cpus_in_mask;
+
+	index = 0;
 	for (i = 0; i < max_cpu; i++) {
-		if (cpu != i) {
-			fio_cpu_clear(mask, i);
+		if (!fio_cpu_isset(mask, i))
 			continue;
-		}
+
+		if (cpu_index != index)
+			fio_cpu_clear(mask, i);
+
+		index++;
 	}
 
 	return fio_cpu_count(mask);