• Home
  • Raw
  • Download

Lines Matching full:sc

53 	struct stripe_c *sc = container_of(work, struct stripe_c,  in trigger_event()  local
55 dm_table_event(sc->ti->table); in trigger_event()
74 static int get_stripe(struct dm_target *ti, struct stripe_c *sc, in get_stripe() argument
85 &sc->stripe[stripe].dev); in get_stripe()
89 sc->stripe[stripe].physical_start = start; in get_stripe()
100 struct stripe_c *sc; in stripe_ctr() local
145 sc = alloc_context(stripes); in stripe_ctr()
146 if (!sc) { in stripe_ctr()
152 INIT_WORK(&sc->trigger_event, trigger_event); in stripe_ctr()
155 sc->ti = ti; in stripe_ctr()
156 sc->stripes = stripes; in stripe_ctr()
157 sc->stripe_width = width; in stripe_ctr()
160 sc->stripes_shift = -1; in stripe_ctr()
162 sc->stripes_shift = __ffs(stripes); in stripe_ctr()
166 kfree(sc); in stripe_ctr()
176 sc->chunk_size = chunk_size; in stripe_ctr()
178 sc->chunk_size_shift = -1; in stripe_ctr()
180 sc->chunk_size_shift = __ffs(chunk_size); in stripe_ctr()
188 r = get_stripe(ti, sc, i, argv); in stripe_ctr()
192 dm_put_device(ti, sc->stripe[i].dev); in stripe_ctr()
193 kfree(sc); in stripe_ctr()
196 atomic_set(&(sc->stripe[i].error_count), 0); in stripe_ctr()
199 ti->private = sc; in stripe_ctr()
207 struct stripe_c *sc = (struct stripe_c *) ti->private; in stripe_dtr() local
209 for (i = 0; i < sc->stripes; i++) in stripe_dtr()
210 dm_put_device(ti, sc->stripe[i].dev); in stripe_dtr()
212 flush_work(&sc->trigger_event); in stripe_dtr()
213 kfree(sc); in stripe_dtr()
216 static void stripe_map_sector(struct stripe_c *sc, sector_t sector, in stripe_map_sector() argument
219 sector_t chunk = dm_target_offset(sc->ti, sector); in stripe_map_sector()
222 if (sc->chunk_size_shift < 0) in stripe_map_sector()
223 chunk_offset = sector_div(chunk, sc->chunk_size); in stripe_map_sector()
225 chunk_offset = chunk & (sc->chunk_size - 1); in stripe_map_sector()
226 chunk >>= sc->chunk_size_shift; in stripe_map_sector()
229 if (sc->stripes_shift < 0) in stripe_map_sector()
230 *stripe = sector_div(chunk, sc->stripes); in stripe_map_sector()
232 *stripe = chunk & (sc->stripes - 1); in stripe_map_sector()
233 chunk >>= sc->stripes_shift; in stripe_map_sector()
236 if (sc->chunk_size_shift < 0) in stripe_map_sector()
237 chunk *= sc->chunk_size; in stripe_map_sector()
239 chunk <<= sc->chunk_size_shift; in stripe_map_sector()
244 static void stripe_map_range_sector(struct stripe_c *sc, sector_t sector, in stripe_map_range_sector() argument
249 stripe_map_sector(sc, sector, &stripe, result); in stripe_map_range_sector()
255 if (sc->chunk_size_shift < 0) in stripe_map_range_sector()
256 *result -= sector_div(sector, sc->chunk_size); in stripe_map_range_sector()
258 *result = sector & ~(sector_t)(sc->chunk_size - 1); in stripe_map_range_sector()
261 *result += sc->chunk_size; /* next chunk */ in stripe_map_range_sector()
264 static int stripe_map_range(struct stripe_c *sc, struct bio *bio, in stripe_map_range() argument
269 stripe_map_range_sector(sc, bio->bi_iter.bi_sector, in stripe_map_range()
271 stripe_map_range_sector(sc, bio_end_sector(bio), in stripe_map_range()
274 bio_set_dev(bio, sc->stripe[target_stripe].dev->bdev); in stripe_map_range()
276 sc->stripe[target_stripe].physical_start; in stripe_map_range()
288 struct stripe_c *sc = ti->private; in stripe_map() local
294 BUG_ON(target_bio_nr >= sc->stripes); in stripe_map()
295 bio_set_dev(bio, sc->stripe[target_bio_nr].dev->bdev); in stripe_map()
303 BUG_ON(target_bio_nr >= sc->stripes); in stripe_map()
304 return stripe_map_range(sc, bio, target_bio_nr); in stripe_map()
307 stripe_map_sector(sc, bio->bi_iter.bi_sector, in stripe_map()
310 bio->bi_iter.bi_sector += sc->stripe[stripe].physical_start; in stripe_map()
311 bio_set_dev(bio, sc->stripe[stripe].dev->bdev); in stripe_map()
321 struct stripe_c *sc = ti->private; in stripe_dax_direct_access() local
327 stripe_map_sector(sc, sector, &stripe, &dev_sector); in stripe_dax_direct_access()
328 dev_sector += sc->stripe[stripe].physical_start; in stripe_dax_direct_access()
329 dax_dev = sc->stripe[stripe].dev->dax_dev; in stripe_dax_direct_access()
330 bdev = sc->stripe[stripe].dev->bdev; in stripe_dax_direct_access()
342 struct stripe_c *sc = ti->private; in stripe_dax_copy_from_iter() local
347 stripe_map_sector(sc, sector, &stripe, &dev_sector); in stripe_dax_copy_from_iter()
348 dev_sector += sc->stripe[stripe].physical_start; in stripe_dax_copy_from_iter()
349 dax_dev = sc->stripe[stripe].dev->dax_dev; in stripe_dax_copy_from_iter()
350 bdev = sc->stripe[stripe].dev->bdev; in stripe_dax_copy_from_iter()
361 struct stripe_c *sc = ti->private; in stripe_dax_copy_to_iter() local
366 stripe_map_sector(sc, sector, &stripe, &dev_sector); in stripe_dax_copy_to_iter()
367 dev_sector += sc->stripe[stripe].physical_start; in stripe_dax_copy_to_iter()
368 dax_dev = sc->stripe[stripe].dev->dax_dev; in stripe_dax_copy_to_iter()
369 bdev = sc->stripe[stripe].dev->bdev; in stripe_dax_copy_to_iter()
398 struct stripe_c *sc = (struct stripe_c *) ti->private; in stripe_status() local
404 DMEMIT("%d ", sc->stripes); in stripe_status()
405 for (i = 0; i < sc->stripes; i++) { in stripe_status()
406 DMEMIT("%s ", sc->stripe[i].dev->name); in stripe_status()
409 for (i = 0; i < sc->stripes; i++) { in stripe_status()
410 DMEMIT("%c", atomic_read(&(sc->stripe[i].error_count)) ? in stripe_status()
416 DMEMIT("%d %llu", sc->stripes, in stripe_status()
417 (unsigned long long)sc->chunk_size); in stripe_status()
418 for (i = 0; i < sc->stripes; i++) in stripe_status()
419 DMEMIT(" %s %llu", sc->stripe[i].dev->name, in stripe_status()
420 (unsigned long long)sc->stripe[i].physical_start); in stripe_status()
430 struct stripe_c *sc = ti->private; in stripe_end_io() local
450 for (i = 0; i < sc->stripes; i++) in stripe_end_io()
451 if (!strcmp(sc->stripe[i].dev->name, major_minor)) { in stripe_end_io()
452 atomic_inc(&(sc->stripe[i].error_count)); in stripe_end_io()
453 if (atomic_read(&(sc->stripe[i].error_count)) < in stripe_end_io()
455 schedule_work(&sc->trigger_event); in stripe_end_io()
464 struct stripe_c *sc = ti->private; in stripe_iterate_devices() local
469 ret = fn(ti, sc->stripe[i].dev, in stripe_iterate_devices()
470 sc->stripe[i].physical_start, in stripe_iterate_devices()
471 sc->stripe_width, data); in stripe_iterate_devices()
472 } while (!ret && ++i < sc->stripes); in stripe_iterate_devices()
480 struct stripe_c *sc = ti->private; in stripe_io_hints() local
481 unsigned chunk_size = sc->chunk_size << SECTOR_SHIFT; in stripe_io_hints()
484 blk_limits_io_opt(limits, chunk_size * sc->stripes); in stripe_io_hints()