On 07/01/13 17:12, Hannes Reinecke wrote:
> When a medium error is detected the SCSI stack should return
> ENODATA to the upper layers.

Hi Hannes,

since you change the error code from -EREMOTEIO to -ENODATA/-ENOSPC,
upper layers that checks -EREMOTEIO have to be updated as well.

Something like below for dm-multipath.
It seems btrfs checking -EREMOTEIO, too.

-- 
Jun'ichi Nomura, NEC Corporation

diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c
index bdf26f5..15bf881 100644
--- a/drivers/md/dm-mpath.c
+++ b/drivers/md/dm-mpath.c
@@ -1261,6 +1261,21 @@ static void activate_path(struct work_struct *work)
                                pg_init_done, pgpath);
 }
 
+static int maybe_path_failure(int error)
+{
+       switch(error) {
+       case -EOPNOTSUPP:
+       case -EREMOTEIO:
+       case -EILSEQ:
+       case -ENOSPC:
+       case -ENODATA:
+               return 0;
+       }
+
+       /* Anything else could be a path failure */
+       return 1;
+}
+
 /*
  * end_io handling
  */
@@ -1284,7 +1299,7 @@ static int do_end_io(struct multipath *m, struct request 
*clone,
        if (!error && !clone->errors)
                return 0;       /* I/O complete */
 
-       if (error == -EOPNOTSUPP || error == -EREMOTEIO || error == -EILSEQ)
+       if (!maybe_path_failure(error))
                return error;
 
        if (mpio->pgpath)
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to