path->fail_count needs to be initialized to non-zero, or a failed path will never actually be failed. Set to 1 for now, but this number can be increased if we don't want to fail the path on the very first I/O error. [Kevin Corry] --- diff/drivers/md/dm-mpath.c 2004-01-05 10:55:55.000000000 +0000 +++ source/drivers/md/dm-mpath.c 2004-01-16 14:35:10.000000000 +0000 @@ -17,6 +17,8 @@ #include #include +#define MPATH_FAIL_COUNT 1 + /* Path properties */ struct path { struct list_head list; @@ -67,7 +69,7 @@ if (path) { memset(path, 0, sizeof(*path)); - atomic_set(&path->fail_count, 0); + atomic_set(&path->fail_count, MPATH_FAIL_COUNT); atomic_set(&path->fail_total, 0); init_MUTEX_LOCKED(&path->test_lock); /* resume will unlock */