Pass bdev to path selector so it can take account of device characteristics if it wishes. --- diff/drivers/md/dm-mpath.c 2004-09-29 14:05:07.000000000 +0100 +++ source/drivers/md/dm-mpath.c 2004-09-29 14:04:10.000000000 +0100 @@ -321,7 +321,8 @@ goto bad; } - r = ps->type->add_path(ps, p, as->argc, as->argv, &ti->error); + r = ps->type->add_path(ps, p, p->dev->bdev, as->argc, as->argv, + &ti->error); if (r) { dm_put_device(ti, p->dev); goto bad; --- diff/drivers/md/dm-path-selector.h 2004-09-29 14:05:07.000000000 +0100 +++ source/drivers/md/dm-path-selector.h 2004-09-29 14:03:29.000000000 +0100 @@ -38,6 +38,7 @@ */ typedef int (*ps_add_path_fn) (struct path_selector *ps, struct path *path, + struct block_device *bdev, int argc, char **argv, char **error); /* --- diff/drivers/md/dm-roundrobin.c 2004-09-29 14:05:07.000000000 +0100 +++ source/drivers/md/dm-roundrobin.c 2004-09-29 14:04:30.000000000 +0100 @@ -95,6 +95,7 @@ /* Path add context */ static int rr_add_path(struct path_selector *ps, struct path *path, + struct block_device *bdev, int argc, char **argv, char **error) { struct selector *s = (struct selector *) ps->context;