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

Commit 29ed7813 authored by Kent Overstreet's avatar Kent Overstreet
Browse files

bio-integrity: Add explicit field for owner of bip_buf



This was the only real user of BIO_CLONED, which didn't have very clear
semantics. Convert to its own flag so we can get rid of BIO_CLONED.

Signed-off-by: default avatarKent Overstreet <koverstreet@google.com>
CC: Jens Axboe <axboe@kernel.dk>
CC: Martin K. Petersen <martin.petersen@oracle.com>
parent a38352e0
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -97,9 +97,7 @@ void bio_integrity_free(struct bio *bio)
	struct bio_integrity_payload *bip = bio->bi_integrity;
	struct bio_set *bs = bio->bi_pool;

	/* A cloned bio doesn't own the integrity metadata */
	if (!bio_flagged(bio, BIO_CLONED) && !bio_flagged(bio, BIO_FS_INTEGRITY)
	    && bip->bip_buf != NULL)
	if (bip->bip_owns_buf)
		kfree(bip->bip_buf);

	if (bs) {
@@ -386,6 +384,7 @@ int bio_integrity_prep(struct bio *bio)
		return -EIO;
	}

	bip->bip_owns_buf = 1;
	bip->bip_buf = buf;
	bip->bip_size = len;
	bip->bip_sector = bio->bi_sector;
+1 −0
Original line number Diff line number Diff line
@@ -187,6 +187,7 @@ struct bio_integrity_payload {
	unsigned short		bip_slab;	/* slab the bip came from */
	unsigned short		bip_vcnt;	/* # of integrity bio_vecs */
	unsigned short		bip_idx;	/* current bip_vec index */
	unsigned		bip_owns_buf:1;	/* should free bip_buf */

	struct work_struct	bip_work;	/* I/O completion */