diff options
author | Kent Overstreet <koverstreet@google.com> | 2012-09-04 12:54:22 -0400 |
---|---|---|
committer | Kent Overstreet <koverstreet@google.com> | 2013-03-23 17:26:34 -0400 |
commit | 29ed7813ce5c4661261aeebddb1b8660e0860223 (patch) | |
tree | aac13437701b575cb1f9ad2aa87a7523af1f7c07 /fs/bio-integrity.c | |
parent | a38352e0ac02dbbd4fa464dc22d1352b5fbd06fd (diff) |
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: Kent Overstreet <koverstreet@google.com>
CC: Jens Axboe <axboe@kernel.dk>
CC: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'fs/bio-integrity.c')
-rw-r--r-- | fs/bio-integrity.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/fs/bio-integrity.c b/fs/bio-integrity.c index ca7b02dbf09d..8fb42916d8a2 100644 --- a/fs/bio-integrity.c +++ b/fs/bio-integrity.c | |||
@@ -97,9 +97,7 @@ void bio_integrity_free(struct bio *bio) | |||
97 | struct bio_integrity_payload *bip = bio->bi_integrity; | 97 | struct bio_integrity_payload *bip = bio->bi_integrity; |
98 | struct bio_set *bs = bio->bi_pool; | 98 | struct bio_set *bs = bio->bi_pool; |
99 | 99 | ||
100 | /* A cloned bio doesn't own the integrity metadata */ | 100 | if (bip->bip_owns_buf) |
101 | if (!bio_flagged(bio, BIO_CLONED) && !bio_flagged(bio, BIO_FS_INTEGRITY) | ||
102 | && bip->bip_buf != NULL) | ||
103 | kfree(bip->bip_buf); | 101 | kfree(bip->bip_buf); |
104 | 102 | ||
105 | if (bs) { | 103 | if (bs) { |
@@ -386,6 +384,7 @@ int bio_integrity_prep(struct bio *bio) | |||
386 | return -EIO; | 384 | return -EIO; |
387 | } | 385 | } |
388 | 386 | ||
387 | bip->bip_owns_buf = 1; | ||
389 | bip->bip_buf = buf; | 388 | bip->bip_buf = buf; |
390 | bip->bip_size = len; | 389 | bip->bip_size = len; |
391 | bip->bip_sector = bio->bi_sector; | 390 | bip->bip_sector = bio->bi_sector; |