Fix a possible format timeout issue for large disks on little endian systems.
We need to byte swap the 2 byte timeout field.

Signed-off-by: Brian King <brk...@linux.vnet.ibm.com>
---

 iprlib.c |   14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff -puN iprlib.c~iprutils_dasd_timeout_le iprlib.c
--- iprutils.patched/iprlib.c~iprutils_dasd_timeout_le  2016-06-24 
15:44:43.513144224 -0500
+++ iprutils.patched-bjking1/iprlib.c   2016-06-24 15:48:36.076470060 -0500
@@ -7216,12 +7216,12 @@ static int get_format_timeout(struct ipr
                        for (i = 0; i < records; i++) {
                                if (tos.record[i].op_code != FORMAT_UNIT)
                                        continue;
-                               if 
(IPR_TIMEOUT_RADIX_IS_MINUTE(tos.record[i].timeout))
-                                       return ((tos.record[i].timeout & 
IPR_TIMEOUT_MASK) * 60);
-                               if 
(IPR_TIMEOUT_RADIX_IS_SECONDS(tos.record[i].timeout))
-                                       return tos.record[i].timeout & 
IPR_TIMEOUT_MASK;
+                               if 
(IPR_TIMEOUT_RADIX_IS_MINUTE(ntohs(tos.record[i].timeout)))
+                                       return ((ntohs(tos.record[i].timeout) & 
IPR_TIMEOUT_MASK) * 60);
+                               if 
(IPR_TIMEOUT_RADIX_IS_SECONDS(ntohs(tos.record[i].timeout)))
+                                       return ntohs(tos.record[i].timeout) & 
IPR_TIMEOUT_MASK;
                                scsi_dbg(dev, "Unknown timeout radix: %X\n",
-                                        (tos.record[i].timeout & 
IPR_TIMEOUT_RADIX_MASK));
+                                        (ntohs(tos.record[i].timeout) & 
IPR_TIMEOUT_RADIX_MASK));
                                break;
                        }
                }
@@ -7285,10 +7285,10 @@ static int ipr_set_dasd_timeouts(struct
                timeouts.record[ARRAY_SIZE(ipr_dasd_timeouts)].op_code = 
FORMAT_UNIT;
                if (format_timeout >= IPR_TIMEOUT_MASK) {
                        timeouts.record[ARRAY_SIZE(ipr_dasd_timeouts)].timeout =
-                               (format_timeout / 60) | 
IPR_TIMEOUT_MINUTE_RADIX;
+                               htons((format_timeout / 60) | 
IPR_TIMEOUT_MINUTE_RADIX);
                } else {
                        timeouts.record[ARRAY_SIZE(ipr_dasd_timeouts)].timeout =
-                               format_timeout;
+                               htons(format_timeout);
                }
        }
 
_


------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohodev2dev
_______________________________________________
Iprdd-devel mailing list
Iprdd-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/iprdd-devel

Reply via email to