Lines Matching refs:mirror

50 struct mirror {
81 atomic_t default_mirror; /* Default mirror */
91 struct mirror mirror[];
152 struct mirror *m;
159 * Every mirror should look like this one.
164 * This is yucky. We squirrel the mirror struct away inside
168 static struct mirror *bio_get_m(struct bio *bio)
170 return (struct mirror *) bio->bi_next;
173 static void bio_set_m(struct bio *bio, struct mirror *m)
178 static struct mirror *get_default_mirror(struct mirror_set *ms)
180 return &ms->mirror[atomic_read(&ms->default_mirror)];
183 static void set_default_mirror(struct mirror *m)
186 struct mirror *m0 = &(ms->mirror[0]);
191 static struct mirror *get_valid_mirror(struct mirror_set *ms)
193 struct mirror *m;
195 for (m = ms->mirror; m < ms->mirror + ms->nr_mirrors; m++)
203 * @m: mirror device to fail
212 * only if the mirror is in-sync.
216 static void fail_mirror(struct mirror *m, enum dm_raid1_error error_type)
219 struct mirror *new;
244 DMERR("Primary mirror (%s) failed while out-of-sync: Reads may fail.",
253 DMWARN("All sides of mirror have failed.");
266 struct mirror *m;
274 for (i = 0, m = ms->mirror; i < ms->nr_mirrors; i++, m++) {
285 fail_mirror(ms->mirror + i,
297 * When a mirror is first activated we may find that some regions
299 * recopying from the default mirror to all the others.
310 /* Read error means the failure of default mirror. */
311 DMERR_LIMIT("Unable to read primary mirror during recovery");
319 * Bits correspond to devices (excluding default mirror).
320 * The default mirror cannot change during recovery.
323 if (&ms->mirror[m] == get_default_mirror(ms))
326 fail_mirror(ms->mirror + m,
339 struct mirror *m;
361 if (&ms->mirror[i] == get_default_mirror(ms))
364 m = ms->mirror + i;
385 atomic_set(&(ms->mirror[m].error_count), 0);
386 ms->mirror[m].error_type = 0;
423 static struct mirror *choose_mirror(struct mirror_set *ms, sector_t sector)
425 struct mirror *m = get_default_mirror(ms);
431 if (m-- == ms->mirror)
438 static int default_ok(struct mirror *m)
440 struct mirror *default_mirror = get_default_mirror(m->ms);
457 * remap a buffer to a particular mirror.
459 static sector_t map_sector(struct mirror *m, struct bio *bio)
466 static void map_bio(struct mirror *m, struct bio *bio)
472 static void map_region(struct dm_io_region *io, struct mirror *m,
518 struct mirror *m;
531 DMWARN_LIMIT("Read failure on mirror device %s. Trying alternative device.",
537 DMERR_LIMIT("Read failure on mirror device %s. Failing I/O.",
543 static void read_async_bio(struct mirror *m, struct bio *bio)
571 struct mirror *m;
601 * NOSYNC: increment pending, just write to the default mirror
638 fail_mirror(ms->mirror + i, DM_RAID1_WRITE_ERROR);
658 struct mirror *m;
675 for (i = 0, m = ms->mirror; i < ms->nr_mirrors; i++, m++)
679 * Use default mirror because we only need it to retrieve the reference
680 * to the mirror set in write_callback().
809 * to reconfigure the mirror, at which point the core
894 kzalloc(struct_size(ms, mirror, nr_mirrors), GFP_KERNEL);
897 ti->error = "Cannot allocate mirror context";
941 dm_put_device(ti, ms->mirror[m].dev);
949 unsigned int mirror, char **argv)
962 &ms->mirror[mirror].dev);
968 ms->mirror[mirror].ms = ms;
969 atomic_set(&(ms->mirror[mirror].error_count), 0);
970 ms->mirror[mirror].error_type = 0;
971 ms->mirror[mirror].offset = offset;
988 ti->error = "Insufficient mirror log arguments";
993 ti->error = "Invalid mirror log argument count";
1000 ti->error = "Insufficient mirror log arguments";
1007 ti->error = "Error creating mirror dirty log";
1064 * Construct a mirror mapping:
1100 ti->error = "Too few mirror arguments";
1111 /* Get the mirror parameter sets */
1160 ti->error = "Too many mirror arguments";
1199 struct mirror *m;
1250 struct mirror *m = NULL;
1276 * mirror in-sync.
1291 * mirror.
1382 * @m: mirror device/leg we want the status of
1387 * D => Dead - A write failure occurred leaving mirror out-of-sync
1388 * S => Sync - A sychronization failure occurred, mirror out-of-sync
1389 * R => Read - A read failure occurred, mirror data unaffected
1393 static char device_status_char(struct mirror *m)
1418 DMEMIT("%s ", ms->mirror[m].dev->name);
1419 buffer[m] = device_status_char(&(ms->mirror[m]));
1436 DMEMIT(" %s %llu", ms->mirror[m].dev->name,
1437 (unsigned long long)ms->mirror[m].offset);
1455 DMEMIT(",mirror_device_%d=%s", m, ms->mirror[m].dev->name);
1457 m, device_status_char(&(ms->mirror[m])));
1478 ret = fn(ti, ms->mirror[i].dev,
1479 ms->mirror[i].offset, ti->len, data);
1485 .name = "mirror",
1528 MODULE_DESCRIPTION(DM_NAME " mirror target");