[dm-devel] [PATCH] Fix fast_io_fail capping

Jun'ichi Nomura j-nomura at ce.jp.nec.com
Mon Mar 12 11:56:52 UTC 2012

Hi Christophe,

fast_io_fail is only meaningful if it is smaller than dev_loss_tmo.
Setting dev_loss_tmo value to fast_io_fail ends up with -EINVAL.
If the fast_io_fail is not configured properly, turning it off
seems to be the right behavior.

MP_FAST_IO_FAIL_OFF is -1, defined in the following patch:
  [PATCH] Fix for setting '0' to fast_io_fail

Jun'ichi Nomura, NEC Corporation

diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c
index 16f786d..8009893 100644
--- a/libmultipath/discovery.c
+++ b/libmultipath/discovery.c
@@ -307,10 +307,10 @@ sysfs_set_scsi_tmo (struct multipath *mpp)
 			mpp->alias, dev_loss_tmo);
 	mpp->dev_loss = dev_loss_tmo;
-	if (mpp->fast_io_fail > (int)mpp->dev_loss) {
-		mpp->fast_io_fail = mpp->dev_loss;
-		condlog(3, "%s: update fast_io_fail to %d",
+	if (mpp->dev_loss && mpp->fast_io_fail >= (int)mpp->dev_loss) {
+		condlog(3, "%s: turning off fast_io_fail (%d is not smaller than dev_loss_tmo)",
 			mpp->alias, mpp->fast_io_fail);
+		mpp->fast_io_fail = MP_FAST_IO_FAIL_OFF;
 	if (!mpp->dev_loss && !mpp->fast_io_fail)
 		return 0;

More information about the dm-devel mailing list