Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 84131db6 authored by Milan Broz's avatar Milan Broz Committed by Alasdair G Kergon
Browse files

dm crypt: introduce crypt_write_io_loop



Introduce crypt_write_io_loop().

Signed-off-by: default avatarMilan Broz <mbroz@redhat.com>
Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
parent dec1cedf
Loading
Loading
Loading
Loading
+11 −5
Original line number Original line Diff line number Diff line
@@ -595,17 +595,13 @@ static void kcryptd_crypt_write_io_submit(struct dm_crypt_io *io, int error)
	io->sector += bio_sectors(clone);
	io->sector += bio_sectors(clone);
}
}


static void kcryptd_crypt_write_convert(struct dm_crypt_io *io)
static void kcryptd_crypt_write_convert_loop(struct dm_crypt_io *io)
{
{
	struct crypt_config *cc = io->target->private;
	struct crypt_config *cc = io->target->private;
	struct bio *clone;
	struct bio *clone;
	unsigned remaining = io->base_bio->bi_size;
	unsigned remaining = io->base_bio->bi_size;
	int r;
	int r;


	atomic_inc(&io->pending);

	crypt_convert_init(cc, &io->ctx, NULL, io->base_bio, io->sector);

	/*
	/*
	 * The allocated buffers can be smaller than the whole bio,
	 * The allocated buffers can be smaller than the whole bio,
	 * so repeat the whole process until all the data can be handled.
	 * so repeat the whole process until all the data can be handled.
@@ -645,6 +641,16 @@ static void kcryptd_crypt_write_convert(struct dm_crypt_io *io)
	}
	}
}
}


static void kcryptd_crypt_write_convert(struct dm_crypt_io *io)
{
	struct crypt_config *cc = io->target->private;

	atomic_inc(&io->pending);

	crypt_convert_init(cc, &io->ctx, NULL, io->base_bio, io->sector);
	kcryptd_crypt_write_convert_loop(io);
}

static void kcryptd_crypt_read_done(struct dm_crypt_io *io, int error)
static void kcryptd_crypt_read_done(struct dm_crypt_io *io, int error)
{
{
	if (unlikely(error < 0))
	if (unlikely(error < 0))