pgpath             46 drivers/md/dm-mpath.c #define path_to_pgpath(__pgp) container_of((__pgp), struct pgpath, path)
pgpath             72 drivers/md/dm-mpath.c 	struct pgpath *current_pgpath;
pgpath            100 drivers/md/dm-mpath.c 	struct pgpath *pgpath;
pgpath            104 drivers/md/dm-mpath.c typedef int (*action_fn) (struct pgpath *pgpath);
pgpath            108 drivers/md/dm-mpath.c static void activate_or_offline_path(struct pgpath *pgpath);
pgpath            128 drivers/md/dm-mpath.c static struct pgpath *alloc_pgpath(void)
pgpath            130 drivers/md/dm-mpath.c 	struct pgpath *pgpath = kzalloc(sizeof(*pgpath), GFP_KERNEL);
pgpath            132 drivers/md/dm-mpath.c 	if (!pgpath)
pgpath            135 drivers/md/dm-mpath.c 	pgpath->is_active = true;
pgpath            137 drivers/md/dm-mpath.c 	return pgpath;
pgpath            140 drivers/md/dm-mpath.c static void free_pgpath(struct pgpath *pgpath)
pgpath            142 drivers/md/dm-mpath.c 	kfree(pgpath);
pgpath            159 drivers/md/dm-mpath.c 	struct pgpath *pgpath, *tmp;
pgpath            161 drivers/md/dm-mpath.c 	list_for_each_entry_safe(pgpath, tmp, pgpaths, list) {
pgpath            162 drivers/md/dm-mpath.c 		list_del(&pgpath->list);
pgpath            163 drivers/md/dm-mpath.c 		dm_put_device(ti, pgpath->path.dev);
pgpath            164 drivers/md/dm-mpath.c 		free_pgpath(pgpath);
pgpath            274 drivers/md/dm-mpath.c 	mpio->pgpath = NULL;
pgpath            286 drivers/md/dm-mpath.c 	struct pgpath *pgpath;
pgpath            304 drivers/md/dm-mpath.c 	list_for_each_entry(pgpath, &m->current_pg->pgpaths, list) {
pgpath            306 drivers/md/dm-mpath.c 		if (!pgpath->is_active)
pgpath            308 drivers/md/dm-mpath.c 		if (queue_delayed_work(kmpath_handlerd, &pgpath->activate_path,
pgpath            343 drivers/md/dm-mpath.c static struct pgpath *choose_path_in_pg(struct multipath *m,
pgpath            349 drivers/md/dm-mpath.c 	struct pgpath *pgpath;
pgpath            355 drivers/md/dm-mpath.c 	pgpath = path_to_pgpath(path);
pgpath            360 drivers/md/dm-mpath.c 		m->current_pgpath = pgpath;
pgpath            365 drivers/md/dm-mpath.c 	return pgpath;
pgpath            368 drivers/md/dm-mpath.c static struct pgpath *choose_pgpath(struct multipath *m, size_t nr_bytes)
pgpath            372 drivers/md/dm-mpath.c 	struct pgpath *pgpath;
pgpath            390 drivers/md/dm-mpath.c 		pgpath = choose_path_in_pg(m, pg, nr_bytes);
pgpath            391 drivers/md/dm-mpath.c 		if (!IS_ERR_OR_NULL(pgpath))
pgpath            392 drivers/md/dm-mpath.c 			return pgpath;
pgpath            399 drivers/md/dm-mpath.c 		pgpath = choose_path_in_pg(m, pg, nr_bytes);
pgpath            400 drivers/md/dm-mpath.c 		if (!IS_ERR_OR_NULL(pgpath))
pgpath            401 drivers/md/dm-mpath.c 			return pgpath;
pgpath            414 drivers/md/dm-mpath.c 			pgpath = choose_path_in_pg(m, pg, nr_bytes);
pgpath            415 drivers/md/dm-mpath.c 			if (!IS_ERR_OR_NULL(pgpath)) {
pgpath            418 drivers/md/dm-mpath.c 				return pgpath;
pgpath            489 drivers/md/dm-mpath.c 	struct pgpath *pgpath;
pgpath            496 drivers/md/dm-mpath.c 	pgpath = READ_ONCE(m->current_pgpath);
pgpath            497 drivers/md/dm-mpath.c 	if (!pgpath || !test_bit(MPATHF_QUEUE_IO, &m->flags))
pgpath            498 drivers/md/dm-mpath.c 		pgpath = choose_pgpath(m, nr_bytes);
pgpath            500 drivers/md/dm-mpath.c 	if (!pgpath) {
pgpath            511 drivers/md/dm-mpath.c 	mpio->pgpath = pgpath;
pgpath            514 drivers/md/dm-mpath.c 	bdev = pgpath->path.dev->bdev;
pgpath            522 drivers/md/dm-mpath.c 			activate_or_offline_path(pgpath);
pgpath            540 drivers/md/dm-mpath.c 	if (pgpath->pg->ps.type->start_io)
pgpath            541 drivers/md/dm-mpath.c 		pgpath->pg->ps.type->start_io(&pgpath->pg->ps,
pgpath            542 drivers/md/dm-mpath.c 					      &pgpath->path,
pgpath            556 drivers/md/dm-mpath.c 		struct pgpath *pgpath = mpio->pgpath;
pgpath            558 drivers/md/dm-mpath.c 		if (pgpath && pgpath->pg->ps.type->end_io)
pgpath            559 drivers/md/dm-mpath.c 			pgpath->pg->ps.type->end_io(&pgpath->pg->ps,
pgpath            560 drivers/md/dm-mpath.c 						    &pgpath->path,
pgpath            571 drivers/md/dm-mpath.c static struct pgpath *__map_bio(struct multipath *m, struct bio *bio)
pgpath            573 drivers/md/dm-mpath.c 	struct pgpath *pgpath;
pgpath            578 drivers/md/dm-mpath.c 	pgpath = READ_ONCE(m->current_pgpath);
pgpath            579 drivers/md/dm-mpath.c 	if (!pgpath || !test_bit(MPATHF_QUEUE_IO, &m->flags))
pgpath            580 drivers/md/dm-mpath.c 		pgpath = choose_pgpath(m, bio->bi_iter.bi_size);
pgpath            585 drivers/md/dm-mpath.c 	if ((pgpath && queue_io) ||
pgpath            586 drivers/md/dm-mpath.c 	    (!pgpath && test_bit(MPATHF_QUEUE_IF_NO_PATH, &m->flags))) {
pgpath            601 drivers/md/dm-mpath.c 	return pgpath;
pgpath            607 drivers/md/dm-mpath.c 	struct pgpath *pgpath = __map_bio(m, bio);
pgpath            609 drivers/md/dm-mpath.c 	if (IS_ERR(pgpath))
pgpath            612 drivers/md/dm-mpath.c 	if (!pgpath) {
pgpath            619 drivers/md/dm-mpath.c 	mpio->pgpath = pgpath;
pgpath            622 drivers/md/dm-mpath.c 	bio_set_dev(bio, pgpath->path.dev->bdev);
pgpath            625 drivers/md/dm-mpath.c 	if (pgpath->pg->ps.type->start_io)
pgpath            626 drivers/md/dm-mpath.c 		pgpath->pg->ps.type->start_io(&pgpath->pg->ps,
pgpath            627 drivers/md/dm-mpath.c 					      &pgpath->path,
pgpath            836 drivers/md/dm-mpath.c static struct pgpath *parse_path(struct dm_arg_set *as, struct path_selector *ps,
pgpath            840 drivers/md/dm-mpath.c 	struct pgpath *p;
pgpath            929 drivers/md/dm-mpath.c 		struct pgpath *pgpath;
pgpath            941 drivers/md/dm-mpath.c 		pgpath = parse_path(&path_args, &pg->ps, ti);
pgpath            942 drivers/md/dm-mpath.c 		if (IS_ERR(pgpath)) {
pgpath            943 drivers/md/dm-mpath.c 			r = PTR_ERR(pgpath);
pgpath            947 drivers/md/dm-mpath.c 		pgpath->pg = pg;
pgpath            948 drivers/md/dm-mpath.c 		list_add_tail(&pgpath->list, &pg->pgpaths);
pgpath           1220 drivers/md/dm-mpath.c static int fail_path(struct pgpath *pgpath)
pgpath           1223 drivers/md/dm-mpath.c 	struct multipath *m = pgpath->pg->m;
pgpath           1227 drivers/md/dm-mpath.c 	if (!pgpath->is_active)
pgpath           1230 drivers/md/dm-mpath.c 	DMWARN("Failing path %s.", pgpath->path.dev->name);
pgpath           1232 drivers/md/dm-mpath.c 	pgpath->pg->ps.type->fail_path(&pgpath->pg->ps, &pgpath->path);
pgpath           1233 drivers/md/dm-mpath.c 	pgpath->is_active = false;
pgpath           1234 drivers/md/dm-mpath.c 	pgpath->fail_count++;
pgpath           1238 drivers/md/dm-mpath.c 	if (pgpath == m->current_pgpath)
pgpath           1242 drivers/md/dm-mpath.c 		       pgpath->path.dev->name, atomic_read(&m->nr_valid_paths));
pgpath           1255 drivers/md/dm-mpath.c static int reinstate_path(struct pgpath *pgpath)
pgpath           1259 drivers/md/dm-mpath.c 	struct multipath *m = pgpath->pg->m;
pgpath           1264 drivers/md/dm-mpath.c 	if (pgpath->is_active)
pgpath           1267 drivers/md/dm-mpath.c 	DMWARN("Reinstating path %s.", pgpath->path.dev->name);
pgpath           1269 drivers/md/dm-mpath.c 	r = pgpath->pg->ps.type->reinstate_path(&pgpath->pg->ps, &pgpath->path);
pgpath           1273 drivers/md/dm-mpath.c 	pgpath->is_active = true;
pgpath           1279 drivers/md/dm-mpath.c 	} else if (m->hw_handler_name && (m->current_pg == pgpath->pg)) {
pgpath           1280 drivers/md/dm-mpath.c 		if (queue_work(kmpath_handlerd, &pgpath->activate_path.work))
pgpath           1285 drivers/md/dm-mpath.c 		       pgpath->path.dev->name, nr_valid_paths);
pgpath           1306 drivers/md/dm-mpath.c 	struct pgpath *pgpath;
pgpath           1310 drivers/md/dm-mpath.c 		list_for_each_entry(pgpath, &pg->pgpaths, list) {
pgpath           1311 drivers/md/dm-mpath.c 			if (pgpath->path.dev == dev)
pgpath           1312 drivers/md/dm-mpath.c 				r = action(pgpath);
pgpath           1398 drivers/md/dm-mpath.c static bool pg_init_limit_reached(struct multipath *m, struct pgpath *pgpath)
pgpath           1418 drivers/md/dm-mpath.c 	struct pgpath *pgpath = data;
pgpath           1419 drivers/md/dm-mpath.c 	struct priority_group *pg = pgpath->pg;
pgpath           1438 drivers/md/dm-mpath.c 		fail_path(pgpath);
pgpath           1453 drivers/md/dm-mpath.c 		if (pg_init_limit_reached(m, pgpath))
pgpath           1454 drivers/md/dm-mpath.c 			fail_path(pgpath);
pgpath           1464 drivers/md/dm-mpath.c 		fail_path(pgpath);
pgpath           1469 drivers/md/dm-mpath.c 		if (pgpath == m->current_pgpath) {
pgpath           1503 drivers/md/dm-mpath.c static void activate_or_offline_path(struct pgpath *pgpath)
pgpath           1505 drivers/md/dm-mpath.c 	struct request_queue *q = bdev_get_queue(pgpath->path.dev->bdev);
pgpath           1507 drivers/md/dm-mpath.c 	if (pgpath->is_active && !blk_queue_dying(q))
pgpath           1508 drivers/md/dm-mpath.c 		scsi_dh_activate(q, pg_init_done, pgpath);
pgpath           1510 drivers/md/dm-mpath.c 		pg_init_done(pgpath, SCSI_DH_DEV_OFFLINED);
pgpath           1515 drivers/md/dm-mpath.c 	struct pgpath *pgpath =
pgpath           1516 drivers/md/dm-mpath.c 		container_of(work, struct pgpath, activate_path.work);
pgpath           1518 drivers/md/dm-mpath.c 	activate_or_offline_path(pgpath);
pgpath           1525 drivers/md/dm-mpath.c 	struct pgpath *pgpath = mpio->pgpath;
pgpath           1547 drivers/md/dm-mpath.c 		if (pgpath)
pgpath           1548 drivers/md/dm-mpath.c 			fail_path(pgpath);
pgpath           1559 drivers/md/dm-mpath.c 	if (pgpath) {
pgpath           1560 drivers/md/dm-mpath.c 		struct path_selector *ps = &pgpath->pg->ps;
pgpath           1563 drivers/md/dm-mpath.c 			ps->type->end_io(ps, &pgpath->path, mpio->nr_bytes);
pgpath           1574 drivers/md/dm-mpath.c 	struct pgpath *pgpath = mpio->pgpath;
pgpath           1581 drivers/md/dm-mpath.c 	if (pgpath)
pgpath           1582 drivers/md/dm-mpath.c 		fail_path(pgpath);
pgpath           1603 drivers/md/dm-mpath.c 	if (pgpath) {
pgpath           1604 drivers/md/dm-mpath.c 		struct path_selector *ps = &pgpath->pg->ps;
pgpath           1607 drivers/md/dm-mpath.c 			ps->type->end_io(ps, &pgpath->path, mpio->nr_bytes);
pgpath           1672 drivers/md/dm-mpath.c 	struct pgpath *p;
pgpath           1855 drivers/md/dm-mpath.c 	struct pgpath *current_pgpath;
pgpath           1902 drivers/md/dm-mpath.c 	struct pgpath *p;
pgpath           1917 drivers/md/dm-mpath.c static int pgpath_busy(struct pgpath *pgpath)
pgpath           1919 drivers/md/dm-mpath.c 	struct request_queue *q = bdev_get_queue(pgpath->path.dev->bdev);
pgpath           1937 drivers/md/dm-mpath.c 	struct pgpath *pgpath;
pgpath           1969 drivers/md/dm-mpath.c 	list_for_each_entry(pgpath, &pg->pgpaths, list) {
pgpath           1970 drivers/md/dm-mpath.c 		if (pgpath->is_active) {
pgpath           1972 drivers/md/dm-mpath.c 			if (!pgpath_busy(pgpath)) {