Skip to contentSkip to conversation

s390: fba dasd i/o errors.

PATCH In review Martin Schwidefsky 2 participants 4 messages Jul 11, 2005 – Jul 12, 2005

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 7/12 s390: fba dasd i/o errors.

[patch 7/12] s390: fba dasd i/o errors.

From: Horst Hummel <[email protected]>

The FBA discipline does not use retries for failed requests. A request fails after the first unsuccessful start attempt. There are some rare conditions (e.g. CIO path recovery) in which the start of an i/o on a fba device can fail. A tiny amount of retries is therefore reasonable.

diffstat:

 drivers/s390/block/dasd_fba.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletion(-)
drivers/s390/block/dasd_fba.c +3 -1
diff -urpN linux-2.6/drivers/s390/block/dasd_fba.c linux-2.6-patched/drivers/s390/block/dasd_fba.c
@@ -4,7 +4,7 @@
  * Bugreports.to..: <[email protected]>
  * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000
  *
- * $Revision: 1.39 $
+ * $Revision: 1.40 $
  */
 
 #include <linux/config.h>
@@ -354,6 +354,8 @@ dasd_fba_build_cp(struct dasd_device * d
 	}
 	cqr->device = device;
 	cqr->expires = 5 * 60 * HZ;	/* 5 minutes */
+	cqr->retries = 32;
+	cqr->buildclk = get_clock();
 	cqr->status = DASD_CQR_FILLED;
 	return cqr;
 }
#1 lore raw
Quoted 29 lines · Martin Schwidefsky

[patch 7/12] s390: fba dasd i/o errors.

From: Horst Hummel <[email protected]>

The FBA discipline does not use retries for failed requests. A request fails after the first unsuccessful start attempt. There are some rare conditions (e.g. CIO path recovery) in which the start of an i/o on a fba device can fail. A tiny amount of retries is therefore reasonable.

diffstat:

 drivers/s390/block/dasd_fba.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletion(-)

diff -urpN linux-2.6/drivers/s390/block/dasd_fba.c linux-2.6-patched/drivers/s390/block/dasd_fba.c

drivers/s390/block/dasd_fba.c +1 -1
@@ -4,7 +4,7 @@
  * Bugreports.to..: <[email protected]>
  * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000
  *
- * $Revision: 1.39 $
+ * $Revision: 1.40 $
  */
 
 #include <linux/config.h>

drivers/s390/block/dasd_fba.c dasd_fba_build_cp(struct dasd_device * d · line 357

Quoted 4 lines
drivers/s390/block/dasd_fba.c +1 -0
@@ -354,6 +354,8 @@ dasd_fba_build_cp(struct dasd_device * d
 	}
 	cqr->device = device;
 	cqr->expires = 5 * 60 * HZ;	/* 5 minutes */
+	cqr->retries = 32;

2..4 maybe, but 32? This isn't tiny by any account.

Quoted 4 lines
drivers/s390/block/dasd_fba.c +1 -0
+	cqr->buildclk = get_clock();
 	cqr->status = DASD_CQR_FILLED;
 	return cqr;
 }
#2 lore raw
Quoted 7 lines

drivers/s390/block/dasd_fba.c dasd_fba_build_cp(struct dasd_device * d · line 357

Quoted 5 lines
drivers/s390/block/dasd_fba.c +1 -0
@@ -354,6 +354,8 @@ dasd_fba_build_cp(struct dasd_device * d
         }
         cqr->device = device;
         cqr->expires = 5 * 60 * HZ;         /* 5 minutes */
+        cqr->retries = 32;

2..4 maybe, but 32? This isn't tiny by any account.

Are you arguing the use of the adjective "tiny" or the technical aspects of using 32 as the number of retries for dasd fba? In the dasd driver we use a retry count of 255 as "standard", so 32 is indeed much smaller than that. If you can call it tiny, well who cares??

blue skies,
Martin

Martin Schwidefsky
Linux for zSeries Development & Services
IBM Deutschland Entwicklung GmbH

#3 lore raw
Quoted 8 lines · Martin Schwidefsky
Quoted 7 lines

drivers/s390/block/dasd_fba.c dasd_fba_build_cp(struct dasd_device * d · line 357

Quoted 5 lines
drivers/s390/block/dasd_fba.c +1 -0
@@ -354,6 +354,8 @@ dasd_fba_build_cp(struct dasd_device * d
         }
         cqr->device = device;
         cqr->expires = 5 * 60 * HZ;         /* 5 minutes */
+        cqr->retries = 32;

2..4 maybe, but 32? This isn't tiny by any account.

Quoted 5 lines

Are you arguing the use of the adjective "tiny" or the technical aspects of using 32 as the number of retries for dasd fba? In the dasd driver we use a retry count of 255 as "standard", so 32 is indeed much smaller than that. If you can call it tiny, well who cares??

I meant that 32 retries is too many. Retries tend to multiply. If OS does N retries per failed attempt and disk drive does M attempts per attempt, you end up with N*M retries. Add a few 'retrying' layers, and you have a 'I cannot umount this fscking scratched CDROM, maybe tomorrow' type disaster.

It's better to err to the smaller number of attempts. --
vda