dm-stripe.c (fd7c092e711ebab55b2688d3859d95dfd0301f73) | dm-stripe.c (55a62eef8d1b50ceff3b7bf46851103bdcc7e5b0) |
---|---|
1/* 2 * Copyright (C) 2001-2003 Sistina Software (UK) Limited. 3 * 4 * This file is released under the GPL. 5 */ 6 7#include <linux/device-mapper.h> 8 --- 146 unchanged lines hidden (view full) --- 155 sc->stripes_shift = -1; 156 else 157 sc->stripes_shift = __ffs(stripes); 158 159 r = dm_set_target_max_io_len(ti, chunk_size); 160 if (r) 161 return r; 162 | 1/* 2 * Copyright (C) 2001-2003 Sistina Software (UK) Limited. 3 * 4 * This file is released under the GPL. 5 */ 6 7#include <linux/device-mapper.h> 8 --- 146 unchanged lines hidden (view full) --- 155 sc->stripes_shift = -1; 156 else 157 sc->stripes_shift = __ffs(stripes); 158 159 r = dm_set_target_max_io_len(ti, chunk_size); 160 if (r) 161 return r; 162 |
163 ti->num_flush_requests = stripes; 164 ti->num_discard_requests = stripes; 165 ti->num_write_same_requests = stripes; | 163 ti->num_flush_bios = stripes; 164 ti->num_discard_bios = stripes; 165 ti->num_write_same_bios = stripes; |
166 167 sc->chunk_size = chunk_size; 168 if (chunk_size & (chunk_size - 1)) 169 sc->chunk_size_shift = -1; 170 else 171 sc->chunk_size_shift = __ffs(chunk_size); 172 173 /* --- 97 unchanged lines hidden (view full) --- 271 return DM_MAPIO_SUBMITTED; 272 } 273} 274 275static int stripe_map(struct dm_target *ti, struct bio *bio) 276{ 277 struct stripe_c *sc = ti->private; 278 uint32_t stripe; | 166 167 sc->chunk_size = chunk_size; 168 if (chunk_size & (chunk_size - 1)) 169 sc->chunk_size_shift = -1; 170 else 171 sc->chunk_size_shift = __ffs(chunk_size); 172 173 /* --- 97 unchanged lines hidden (view full) --- 271 return DM_MAPIO_SUBMITTED; 272 } 273} 274 275static int stripe_map(struct dm_target *ti, struct bio *bio) 276{ 277 struct stripe_c *sc = ti->private; 278 uint32_t stripe; |
279 unsigned target_request_nr; | 279 unsigned target_bio_nr; |
280 281 if (bio->bi_rw & REQ_FLUSH) { | 280 281 if (bio->bi_rw & REQ_FLUSH) { |
282 target_request_nr = dm_bio_get_target_request_nr(bio); 283 BUG_ON(target_request_nr >= sc->stripes); 284 bio->bi_bdev = sc->stripe[target_request_nr].dev->bdev; | 282 target_bio_nr = dm_bio_get_target_bio_nr(bio); 283 BUG_ON(target_bio_nr >= sc->stripes); 284 bio->bi_bdev = sc->stripe[target_bio_nr].dev->bdev; |
285 return DM_MAPIO_REMAPPED; 286 } 287 if (unlikely(bio->bi_rw & REQ_DISCARD) || 288 unlikely(bio->bi_rw & REQ_WRITE_SAME)) { | 285 return DM_MAPIO_REMAPPED; 286 } 287 if (unlikely(bio->bi_rw & REQ_DISCARD) || 288 unlikely(bio->bi_rw & REQ_WRITE_SAME)) { |
289 target_request_nr = dm_bio_get_target_request_nr(bio); 290 BUG_ON(target_request_nr >= sc->stripes); 291 return stripe_map_range(sc, bio, target_request_nr); | 289 target_bio_nr = dm_bio_get_target_bio_nr(bio); 290 BUG_ON(target_bio_nr >= sc->stripes); 291 return stripe_map_range(sc, bio, target_bio_nr); |
292 } 293 294 stripe_map_sector(sc, bio->bi_sector, &stripe, &bio->bi_sector); 295 296 bio->bi_sector += sc->stripe[stripe].physical_start; 297 bio->bi_bdev = sc->stripe[stripe].dev->bdev; 298 299 return DM_MAPIO_REMAPPED; --- 159 unchanged lines hidden --- | 292 } 293 294 stripe_map_sector(sc, bio->bi_sector, &stripe, &bio->bi_sector); 295 296 bio->bi_sector += sc->stripe[stripe].physical_start; 297 bio->bi_bdev = sc->stripe[stripe].dev->bdev; 298 299 return DM_MAPIO_REMAPPED; --- 159 unchanged lines hidden --- |