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

Commit db4c6364 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "md: Add dm-req-crypt driver snapshot"

parents d02444bf 7214d7e8
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -1438,6 +1438,9 @@ void __blk_put_request(struct request_queue *q, struct request *req)
	/* this is a bio leak */
	WARN_ON(req->bio != NULL);

	/* this is a bio leak if the bio is not tagged with BIO_DONTFREE */
	WARN_ON(req->bio && !bio_flagged(req->bio, BIO_DONTFREE));

	/*
	 * Request may not have originated from ll_rw_blk. if not,
	 * it didn't come out of our reserved rq pools
@@ -2619,6 +2622,15 @@ bool blk_update_request(struct request *req, int error, unsigned int nr_bytes)
	blk_account_io_completion(req, nr_bytes);

	total_bytes = 0;

	/*
	 * Check for this if flagged, Req based dm needs to perform
	 * post processing, hence dont end bios or request.DM
	 * layer takes care.
	 */
	if (bio_flagged(req->bio, BIO_DONTFREE))
		return false;

	while (req->bio) {
		struct bio *bio = req->bio;
		unsigned bio_bytes = min(bio->bi_iter.bi_size, nr_bytes);
+58 −0
Original line number Diff line number Diff line
@@ -492,6 +492,64 @@ int blk_rq_map_sg(struct request_queue *q, struct request *rq,
}
EXPORT_SYMBOL(blk_rq_map_sg);

/*
 * map a request to scatterlist without combining PHY CONT
 * blocks, return number of sg entries setup. Caller
 * must make sure sg can hold rq->nr_phys_segments entries
 */
int blk_rq_map_sg_no_cluster(struct request_queue *q, struct request *rq,
		  struct scatterlist *sglist)
{
	struct bio_vec bvec, bvprv = { NULL };
	struct req_iterator iter;
	struct scatterlist *sg;
	int nsegs, cluster = 0;

	nsegs = 0;

	/*
	 * for each bio in rq
	 */
	sg = NULL;
	rq_for_each_segment(bvec, rq, iter) {
		__blk_segment_map_sg(q, &bvec, sglist, &bvprv, &sg,
				     &nsegs, &cluster);
	} /* segments in rq */


	if (!sg)
		return nsegs;

	if (unlikely(rq->cmd_flags & REQ_COPY_USER) &&
	    (blk_rq_bytes(rq) & q->dma_pad_mask)) {
		unsigned int pad_len =
			(q->dma_pad_mask & ~blk_rq_bytes(rq)) + 1;

		sg->length += pad_len;
		rq->extra_len += pad_len;
	}

	if (q->dma_drain_size && q->dma_drain_needed(rq)) {
		if (rq->cmd_flags & REQ_OP_WRITE)
			memset(q->dma_drain_buffer, 0, q->dma_drain_size);

		sg->page_link &= ~0x02;
		sg = sg_next(sg);
		sg_set_page(sg, virt_to_page(q->dma_drain_buffer),
			    q->dma_drain_size,
			    ((unsigned long)q->dma_drain_buffer) &
			    (PAGE_SIZE - 1));
		nsegs++;
		rq->extra_len += q->dma_drain_size;
	}

	if (sg)
		sg_mark_end(sg);

	return nsegs;
}
EXPORT_SYMBOL(blk_rq_map_sg_no_cluster);

static inline int ll_new_hw_segment(struct request_queue *q,
				    struct request *req,
				    struct bio *bio)
+0 −1
Original line number Diff line number Diff line
@@ -207,7 +207,6 @@ int attempt_back_merge(struct request_queue *q, struct request *rq);
int attempt_front_merge(struct request_queue *q, struct request *rq);
int blk_attempt_req_merge(struct request_queue *q, struct request *rq,
				struct request *next);
void blk_recalc_rq_segments(struct request *rq);
void blk_rq_set_mixed_merge(struct request *rq);
bool blk_rq_merge_ok(struct request *rq, struct bio *bio);
int blk_try_merge(struct request *rq, struct bio *bio);
+17 −0
Original line number Diff line number Diff line
@@ -277,6 +277,23 @@ config DM_CRYPT

	  If unsure, say N.

config DM_REQ_CRYPT
	tristate "Req Crypt target support"
	depends on BLK_DEV_DM
	select XTS
	select CRYPTO_XTS
	---help---
	  This request based device-mapper target allows you to create a device that
	  transparently encrypts the data on it. You'll need to activate
	  the ciphers you're going to use in the cryptoapi configuration.
	  The DM REQ CRYPT operates on requests (bigger payloads) to utilize
	  crypto hardware better.

	  To compile this code as a module, choose M here: the module will
	  be called dm-req-crypt.

	  If unsure, say N.

config DM_SNAPSHOT
       tristate "Snapshot target"
       depends on BLK_DEV_DM
+1 −0
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ obj-$(CONFIG_DM_CACHE_SMQ) += dm-cache-smq.o
obj-$(CONFIG_DM_CACHE_CLEANER)	+= dm-cache-cleaner.o
obj-$(CONFIG_DM_ERA)		+= dm-era.o
obj-$(CONFIG_DM_LOG_WRITES)	+= dm-log-writes.o
obj-$(CONFIG_DM_REQ_CRYPT)	+= dm-req-crypt.o
obj-$(CONFIG_DM_ANDROID_VERITY) += dm-android-verity.o

ifeq ($(CONFIG_DM_UEVENT),y)
Loading