diff options
author | Mike Snitzer <snitzer@kernel.org> | 2023-04-20 17:24:07 -0400 |
---|---|---|
committer | Mike Snitzer <snitzer@kernel.org> | 2023-05-02 09:51:07 -0400 |
commit | 8c0e26c31be9e0d4c7231506265a2f41a6770b14 (patch) | |
tree | 33d10274fb4bfc9feec7db7a5cf26078d13fc91b | |
parent | 6e0625e4112ee986f84535f0dc0c3830833090c9 (diff) | |
download | linux-dm-6.5-dev.tar.gz |
review tododm-6.5-dev
-rw-r--r-- | drivers/md/dm-thin.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/md/dm-thin.c b/drivers/md/dm-thin.c index 58d633f5c9282..8b5c3a9c1ec71 100644 --- a/drivers/md/dm-thin.c +++ b/drivers/md/dm-thin.c @@ -1893,8 +1893,10 @@ static void process_shared_bio(struct thin_c *tc, struct bio *bio, if (bio_data_dir(bio) == WRITE && bio->bi_iter.bi_size) { break_sharing(tc, bio, block, &key, lookup_result, data_cell); - if (bio_op(bio) != REQ_OP_PROVISION) + if (bio_op(bio) != REQ_OP_PROVISION) { + // FIXME: review closer.. add comment cell_defer_no_holder(tc, virt_cell); + } } else { struct dm_thin_endio_hook *h = dm_per_bio_data(bio, sizeof(struct dm_thin_endio_hook)); @@ -1965,6 +1967,7 @@ static void process_provision_bio(struct thin_c *tc, struct bio *bio) struct dm_cell_key key; struct dm_thin_lookup_result lookup_result; + // NOTE: combo of process_bio and processs_cell /* * If cell is already occupied, then the block is already * being provisioned so we have nothing further to do here. @@ -1984,10 +1987,12 @@ static void process_provision_bio(struct thin_c *tc, struct bio *bio) if (lookup_result.shared) { process_shared_bio(tc, bio, block, &lookup_result, cell); } else { + /* Nothing to do */ bio_endio(bio); cell_defer_no_holder(tc, cell); } break; + case -ENODATA: provision_block(tc, bio, block, cell); break; |