Commit 58f77a2196ee65510885426e65049880be841193

Authored by Mike Snitzer
Committed by Alasdair G Kergon
1 parent 3daec3b447

dm thin: use block_size_is_power_of_two

Use block_size_is_power_of_two() rather than checking
sectors_per_block_shift directly.  Also introduce local pool variable in
get_bio_block() to eliminate redundant tc->pool dereferences.

No functional change.

Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>

Showing 1 changed file with 13 additions and 12 deletions Side-by-side Diff

drivers/md/dm-thin.c
... ... @@ -330,14 +330,20 @@
330 330 * target.
331 331 */
332 332  
  333 +static bool block_size_is_power_of_two(struct pool *pool)
  334 +{
  335 + return pool->sectors_per_block_shift >= 0;
  336 +}
  337 +
333 338 static dm_block_t get_bio_block(struct thin_c *tc, struct bio *bio)
334 339 {
  340 + struct pool *pool = tc->pool;
335 341 sector_t block_nr = bio->bi_sector;
336 342  
337   - if (tc->pool->sectors_per_block_shift < 0)
338   - (void) sector_div(block_nr, tc->pool->sectors_per_block);
  343 + if (block_size_is_power_of_two(pool))
  344 + block_nr >>= pool->sectors_per_block_shift;
339 345 else
340   - block_nr >>= tc->pool->sectors_per_block_shift;
  346 + (void) sector_div(block_nr, pool->sectors_per_block);
341 347  
342 348 return block_nr;
343 349 }
344 350  
... ... @@ -348,12 +354,12 @@
348 354 sector_t bi_sector = bio->bi_sector;
349 355  
350 356 bio->bi_bdev = tc->pool_dev->bdev;
351   - if (tc->pool->sectors_per_block_shift < 0)
352   - bio->bi_sector = (block * pool->sectors_per_block) +
353   - sector_div(bi_sector, pool->sectors_per_block);
354   - else
  357 + if (block_size_is_power_of_two(pool))
355 358 bio->bi_sector = (block << pool->sectors_per_block_shift) |
356 359 (bi_sector & (pool->sectors_per_block - 1));
  360 + else
  361 + bio->bi_sector = (block * pool->sectors_per_block) +
  362 + sector_div(bi_sector, pool->sectors_per_block);
357 363 }
358 364  
359 365 static void remap_to_origin(struct thin_c *tc, struct bio *bio)
... ... @@ -2423,11 +2429,6 @@
2423 2429 bvm->bi_bdev = pt->data_dev->bdev;
2424 2430  
2425 2431 return min(max_size, q->merge_bvec_fn(q, bvm, biovec));
2426   -}
2427   -
2428   -static bool block_size_is_power_of_two(struct pool *pool)
2429   -{
2430   - return pool->sectors_per_block_shift >= 0;
2431 2432 }
2432 2433  
2433 2434 static void set_discard_limits(struct pool_c *pt, struct queue_limits *limits)