Lines Matching defs:tfc
66 #define FLAKEY_CORRUPT_DIR(tfc) \
67 ((tfc)->corrupt_buf_rw == BUF_CMD_READ ? 'r' : 'w')
135 dm_target_flakey_config_t *tfc;
150 tfc = kmem_alloc(sizeof(dm_target_flakey_config_t), KM_SLEEP);
151 tfc->pdev = dmp;
152 tfc->offset = atoi64(argv[1]);
153 tfc->up_int = atoi64(argv[2]);
154 tfc->down_int = atoi64(argv[3]);
155 tfc->offset_time = tick;
157 if ((tfc->up_int + tfc->down_int) == 0) {
163 if (tfc->up_int + tfc->down_int < tfc->up_int) {
169 err = _init_features(tfc, argc - 4, argv + 4);
174 table_en->target_config = tfc;
178 kmem_free(tfc, sizeof(*tfc));
183 _init_features(dm_target_flakey_config_t *tfc, int argc, char **argv)
203 tfc->drop_writes = 1;
223 tfc->corrupt_buf_byte = value;
229 tfc->corrupt_buf_rw = BUF_CMD_READ;
231 tfc->corrupt_buf_rw = BUF_CMD_WRITE;
246 tfc->corrupt_buf_value = value;
250 tfc->corrupt_buf_flags = atoi64(*argv++);
259 if (tfc->drop_writes && (tfc->corrupt_buf_rw == BUF_CMD_WRITE)) {
271 dm_target_flakey_config_t *tfc;
275 tfc = target_config;
276 KASSERT(tfc != NULL);
280 drop_writes = tfc->drop_writes;
285 tfc->pdev->udev_name, tfc->offset_time,
286 tfc->up_int, tfc->down_int,
287 drop_writes + (tfc->corrupt_buf_byte > 0) * 5);
292 if (tfc->corrupt_buf_byte)
295 tfc->corrupt_buf_byte,
296 FLAKEY_CORRUPT_DIR(tfc),
297 tfc->corrupt_buf_value,
298 tfc->corrupt_buf_flags);
311 dm_target_flakey_config_t *tfc;
316 tfc = table_en->target_config;
318 elapsed = (tick - tfc->offset_time) / hz;
319 if (elapsed % (tfc->up_int + tfc->down_int) >= tfc->up_int) {
324 return _flakey_read(tfc, bp);
326 return _flakey_write(tfc, bp);
330 _submit(tfc, bp);
336 _submit(dm_target_flakey_config_t *tfc, struct buf *bp)
339 bp->b_blkno += tfc->offset;
340 VOP_STRATEGY(tfc->pdev->pdev_vnode, bp);
355 dm_target_flakey_config_t *tfc;
375 tfc = bp->b_private2;
380 if (tfc->corrupt_buf_byte && tfc->corrupt_buf_rw == BUF_CMD_READ)
381 _flakey_corrupt_buf(tfc, mbp);
382 else if (!tfc->drop_writes)
391 _flakey_read(dm_target_flakey_config_t *tfc, struct buf *bp)
399 if (!tfc->corrupt_buf_byte && !tfc->drop_writes) {
410 nestbuf->b_private2 = tfc;
412 _submit(tfc, nestbuf);
418 _flakey_write(dm_target_flakey_config_t *tfc, struct buf *bp)
421 if (tfc->drop_writes) {
427 if (tfc->corrupt_buf_byte && tfc->corrupt_buf_rw == BUF_CMD_WRITE) {
428 _flakey_corrupt_buf(tfc, bp);
429 _submit(tfc, bp);
441 _flakey_corrupt_buf(dm_target_flakey_config_t *tfc, struct buf *bp)
449 if (bp->b_bcount < tfc->corrupt_buf_byte)
451 if ((bp->b_flags & tfc->corrupt_buf_flags) != tfc->corrupt_buf_flags)
455 buf[tfc->corrupt_buf_byte - 1] = tfc->corrupt_buf_value;
458 bp, FLAKEY_CORRUPT_DIR(tfc), bp->b_blkno, tfc->corrupt_buf_byte,
459 tfc->corrupt_buf_value);
467 dm_target_flakey_config_t *tfc;
470 tfc = table_en->target_config;
473 return VOP_IOCTL(tfc->pdev->pdev_vnode, DIOCCACHESYNC, &cmd,
484 dm_target_flakey_config_t *tfc = table_en->target_config;
487 dm_pdev_decr(tfc->pdev);
489 kmem_free(tfc, sizeof(*tfc));
509 dm_target_flakey_config_t *tfc;
514 tfc = table_en->target_config;
515 if (tfc != NULL)
516 secsize = tfc->pdev->pdev_secsize;