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;