--- Dm-target.c 2007-04-24 18:32:06.000000000 +0200 +++ Dm-target.c.new 2007-12-17 00:36:55.000000000 +0100 @@ -375,7 +375,11 @@ if (!atomic_dec_and_test (&bc->ref_count)) return; +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) bio_endio (bc->orig_bio, bc->orig_bio->bi_size, bc->error); +#else + bio_endio (bc->orig_bio, bc->error); +#endif mempool_free (bc, tc->bio_ctx_pool); } @@ -417,24 +421,35 @@ } +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) static int truecrypt_endio (struct bio *bio, unsigned int bytes_done, int error) +#else +static int truecrypt_endio (struct bio *bio, int error) +#endif { struct bio_ctx *bc = (struct bio_ctx *) bio->bi_private; struct target_ctx *tc = (struct target_ctx *) bc->target->private; struct bio_vec *bv; int seg_no; +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) trace (1, "end: sc=%llu fl=%ld rw=%ld sz=%d ix=%hd vc=%hd dn=%d er=%d\n", (unsigned long long) bio->bi_sector, bio->bi_flags, bio->bi_rw, bio->bi_size, bio->bi_idx, bio->bi_vcnt, bytes_done, error); +#else + trace (1, "end: sc=%llu fl=%ld sz=%ld rw=%ld ix=%hd vc=%hd er=%d\n", + (unsigned long long) bio->bi_sector, bio->bi_flags, bio->bi_size, bio->bi_rw, bio->bi_idx, bio->bi_vcnt, error); +#endif if (error != 0) bc->error = error; +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) if (bio->bi_size) { trace (2, "Outstanding IO: %d\n", bio->bi_size); return 1; } +#endif if (bio_data_dir (bio) == READ) { @@ -459,6 +474,7 @@ bio_put (bio); dereference_bio_ctx (bc); return error; + } @@ -656,7 +672,11 @@ goto err; } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23) + bio_ctx_cache = kmem_cache_create ("truecrypt-bioctx", sizeof (struct bio_ctx), 0, 0, NULL); +#else bio_ctx_cache = kmem_cache_create ("truecrypt-bioctx", sizeof (struct bio_ctx), 0, 0, NULL, NULL); +#endif if (!bio_ctx_cache) { error ("kmem_cache_create failed");