No longer any need for jiffies_t target->end_io was only being called when there were zero pending ios. ti->private wasn't being set. --- diff/drivers/md/dm-iostats.c 2002-12-16 16:45:21.000000000 +0000 +++ source/drivers/md/dm-iostats.c 2002-12-16 16:06:12.000000000 +0000 @@ -15,7 +15,6 @@ #include -typedef unsigned long jiffies_t; #define IOF_LATENCY 1 struct iostats_c { @@ -80,6 +79,7 @@ atomic_set(&ic->ios[READ], 0); atomic_set(&ic->ios[WRITE], 0); + ti->private = ic; return 0; } --- diff/drivers/md/dm.c 2002-12-16 16:45:21.000000000 +0000 +++ source/drivers/md/dm.c 2002-12-16 16:43:32.000000000 +0000 @@ -317,14 +317,13 @@ { struct dm_io *io = bh->b_private; - if (atomic_dec_and_test(&io->md->pending)) { + if (atomic_dec_and_test(&io->md->pending)) /* nudge anyone waiting on suspend queue */ wake_up(&io->md->wait); - if (io->ti->type->end_io) - io->ti->type->end_io(io->ti, bh, io->rw, - uptodate ? 0 : -EIO); - } + if (io->ti->type->end_io) + io->ti->type->end_io(io->ti, bh, io->rw, + uptodate ? 0 : -EIO); bh->b_end_io = io->end_io; bh->b_private = io->context;