Use ffs to calculate chunk_shift. --- diff/drivers/md/dm-snap.c 2003-12-29 10:15:26.000000000 +0000 +++ source/drivers/md/dm-snap.c 2003-12-29 10:15:31.000000000 +0000 @@ -478,10 +478,7 @@ s->chunk_size = chunk_size; s->chunk_mask = chunk_size - 1; s->type = persistent; - for (s->chunk_shift = 0; chunk_size; - s->chunk_shift++, chunk_size >>= 1) - ; - s->chunk_shift--; + s->chunk_shift = ffs(chunk_size) - 1; s->valid = 1; s->have_metadata = 0; @@ -503,7 +500,7 @@ s->store.snap = s; if (persistent == 'P') - r = dm_create_persistent(&s->store, s->chunk_size); + r = dm_create_persistent(&s->store, chunk_size); else r = dm_create_transient(&s->store, s, blocksize); @@ -527,7 +524,7 @@ } ti->private = s; - ti->split_io = s->chunk_size; + ti->split_io = chunk_size; return 0;