From: Andrew Deason Date: Thu, 22 Dec 2011 20:01:52 +0000 (-0500) Subject: afs: Indicate error from afs_osi_Read/Write better X-Git-Tag: upstream/1.8.0_pre1^2~2900 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=b5ca12ac4696c4049be14974f1e946bb55e1c440;p=packages%2Fo%2Fopenafs.git afs: Indicate error from afs_osi_Read/Write better Currently afs_osi_Read and afs_osi_Write just return -1 on any I/O error, even though they know the error code given from the OS VFS. Just return that code instead so the caller can see what the error was; but negate it, so it's clear that it is an error. Change-Id: I3d8350da18d075713356137a1cacf182a749fe3e Reviewed-on: http://gerrit.openafs.org/6412 Tested-by: BuildBot Reviewed-by: Derrick Brashear --- diff --git a/src/afs/AIX/osi_file.c b/src/afs/AIX/osi_file.c index 0efcbaba1..7ecaaf237 100644 --- a/src/afs/AIX/osi_file.c +++ b/src/afs/AIX/osi_file.c @@ -198,7 +198,9 @@ afs_osi_Read(struct osi_file *afile, int offset, void *aptr, goto retry_IO; } setuerror(code); - code = -1; + if (code > 0) { + code *= -1; + } } return code; } @@ -241,7 +243,9 @@ afs_osi_Write(struct osi_file *afile, afs_int32 offset, void *aptr, afs_warnuser ("\n\n\n*** Cache partition is FULL - Decrease cachesize!!! ***\n\n"); setuerror(code); - code = -1; + if (code > 0) { + code *= -1; + } } if (afile->proc) { (*afile->proc) (afile, code); diff --git a/src/afs/DARWIN/osi_file.c b/src/afs/DARWIN/osi_file.c index bbecfd4f4..bc271f02f 100644 --- a/src/afs/DARWIN/osi_file.c +++ b/src/afs/DARWIN/osi_file.c @@ -346,7 +346,9 @@ afs_osi_Read(struct osi_file *afile, int offset, void *aptr, } else { afs_Trace2(afs_iclSetp, CM_TRACE_READFAILED, ICL_TYPE_INT32, resid, ICL_TYPE_INT32, code); - code = -1; + if (code > 0) { + code *= -1; + } } return code; } @@ -387,7 +389,9 @@ afs_osi_Write(struct osi_file *afile, afs_int32 offset, void *aptr, code = asize - resid; afile->offset += code; } else { - code = -1; + if (code > 0) { + code *= -1; + } } if (afile->proc) { (*afile->proc) (afile, code); diff --git a/src/afs/FBSD/osi_file.c b/src/afs/FBSD/osi_file.c index 484c63303..7c695d60e 100644 --- a/src/afs/FBSD/osi_file.c +++ b/src/afs/FBSD/osi_file.c @@ -187,7 +187,9 @@ afs_osi_Read(struct osi_file *afile, int offset, void *aptr, } else { afs_Trace2(afs_iclSetp, CM_TRACE_READFAILED, ICL_TYPE_INT32, resid, ICL_TYPE_INT32, code); - code = -1; + if (code > 0) { + code *= -1; + } } return code; } @@ -216,7 +218,9 @@ afs_osi_Write(struct osi_file *afile, afs_int32 offset, void *aptr, code = asize - resid; afile->offset += code; } else { - code = -1; + if (code > 0) { + code *= -1; + } } if (afile->proc) { (*afile->proc) (afile, code); diff --git a/src/afs/HPUX/osi_file.c b/src/afs/HPUX/osi_file.c index 2afe1da6e..59c2594af 100644 --- a/src/afs/HPUX/osi_file.c +++ b/src/afs/HPUX/osi_file.c @@ -177,7 +177,9 @@ afs_osi_Read(struct osi_file *afile, int offset, void *aptr, goto retry_IO; } setuerror(code); - code = -1; + if (code > 0) { + code *= -1; + } } return code; } @@ -208,7 +210,9 @@ afs_osi_Write(struct osi_file *afile, afs_int32 offset, void *aptr, afs_warnuser ("\n\n\n*** Cache partition is FULL - Decrease cachesize!!! ***\n\n"); setuerror(code); - code = -1; + if (code > 0) { + code *= -1; + } } if (afile->proc) { (*afile->proc) (afile, code); diff --git a/src/afs/IRIX/osi_file.c b/src/afs/IRIX/osi_file.c index f351910c8..86984937d 100644 --- a/src/afs/IRIX/osi_file.c +++ b/src/afs/IRIX/osi_file.c @@ -160,7 +160,9 @@ afs_osi_Read(struct osi_file *afile, int offset, void *aptr, } else { afs_Trace2(afs_iclSetp, CM_TRACE_READFAILED, ICL_TYPE_INT32, resid, ICL_TYPE_INT32, code); - code = -1; + if (code > 0) { + code *= -1; + } } return code; } @@ -191,7 +193,9 @@ afs_osi_Write(struct osi_file *afile, afs_int32 offset, void *aptr, if (code == ENOSPC) afs_warnuser ("\n\n\n*** Cache partition is FULL - Decrease cachesize!!! ***\n\n"); - code = -1; + if (code > 0) { + code *= -1; + } } if (afile->proc) { (*afile->proc) (afile, code); diff --git a/src/afs/LINUX/osi_file.c b/src/afs/LINUX/osi_file.c index 72f020c00..35d2aa59c 100644 --- a/src/afs/LINUX/osi_file.c +++ b/src/afs/LINUX/osi_file.c @@ -230,7 +230,9 @@ afs_osi_Read(struct osi_file *afile, int offset, void *aptr, } else { afs_Trace2(afs_iclSetp, CM_TRACE_READFAILED, ICL_TYPE_INT32, auio.uio_resid, ICL_TYPE_INT32, code); - code = -1; + if (code > 0) { + code *= -1; + } } return code; } @@ -266,7 +268,9 @@ afs_osi_Write(struct osi_file *afile, afs_int32 offset, void *aptr, if (code == ENOSPC) afs_warnuser ("\n\n\n*** Cache partition is FULL - Decrease cachesize!!! ***\n\n"); - code = -1; + if (code > 0) { + code *= -1; + } } if (afile->proc) diff --git a/src/afs/LINUX24/osi_file.c b/src/afs/LINUX24/osi_file.c index b01be67dd..35bd031d0 100644 --- a/src/afs/LINUX24/osi_file.c +++ b/src/afs/LINUX24/osi_file.c @@ -215,7 +215,9 @@ afs_osi_Read(struct osi_file *afile, int offset, void *aptr, } else { afs_Trace2(afs_iclSetp, CM_TRACE_READFAILED, ICL_TYPE_INT32, auio.uio_resid, ICL_TYPE_INT32, code); - code = -1; + if (code > 0) { + code *= -1; + } } return code; } @@ -251,7 +253,9 @@ afs_osi_Write(struct osi_file *afile, afs_int32 offset, void *aptr, if (code == ENOSPC) afs_warnuser ("\n\n\n*** Cache partition is FULL - Decrease cachesize!!! ***\n\n"); - code = -1; + if (code > 0) { + code *= -1; + } } if (afile->proc) diff --git a/src/afs/NBSD/osi_file.c b/src/afs/NBSD/osi_file.c index e5ef6816b..c77ac2c27 100644 --- a/src/afs/NBSD/osi_file.c +++ b/src/afs/NBSD/osi_file.c @@ -175,7 +175,9 @@ afs_osi_Read(struct osi_file *afile, int offset, void *aptr, afs_int32 asize) } else { afs_Trace2(afs_iclSetp, CM_TRACE_READFAILED, ICL_TYPE_INT32, resid, ICL_TYPE_INT32, code); - code = -1; + if (code > 0) { + code *= -1; + } } return code; } @@ -205,8 +207,11 @@ afs_osi_Write(struct osi_file *afile, afs_int32 offset, void *aptr, afile->offset += code; if (afile->offset > afile->size) afile->size = afile->offset; - } else - code = -1; + } else { + if (code > 0) { + code *= -1; + } + } if (afile->proc) (*afile->proc) (afile, code); diff --git a/src/afs/OBSD/osi_file.c b/src/afs/OBSD/osi_file.c index e9921988c..72a43ef9f 100644 --- a/src/afs/OBSD/osi_file.c +++ b/src/afs/OBSD/osi_file.c @@ -163,7 +163,9 @@ afs_osi_Read(struct osi_file *afile, int offset, void *aptr, afs_int32 asize) } else { afs_Trace2(afs_iclSetp, CM_TRACE_READFAILED, ICL_TYPE_INT32, (unsigned int) resid, ICL_TYPE_INT32, code); - code = -1; + if (code > 0) { + code *= -1; + } } return code; } @@ -195,8 +197,11 @@ afs_osi_Write(struct osi_file *afile, afs_int32 offset, void *aptr, afile->offset += code; if (afile->offset > afile->size) afile->size = afile->offset; - } else - code = -1; + } else { + if (code > 0) { + code *= -1; + } + } if (afile->proc) (*afile->proc) (afile, code); diff --git a/src/afs/SOLARIS/osi_file.c b/src/afs/SOLARIS/osi_file.c index f06661811..b497b631c 100644 --- a/src/afs/SOLARIS/osi_file.c +++ b/src/afs/SOLARIS/osi_file.c @@ -381,7 +381,9 @@ afs_osi_Read(struct osi_file *afile, int offset, void *aptr, } else { afs_Trace2(afs_iclSetp, CM_TRACE_READFAILED, ICL_TYPE_INT32, resid, ICL_TYPE_INT32, code); - code = -1; + if (code > 0) { + code *= -1; + } } return code; } @@ -409,7 +411,9 @@ afs_osi_Write(struct osi_file *afile, afs_int32 offset, void *aptr, code = asize - resid; afile->offset += code; } else { - code = -1; + if (code > 0) { + code *= -1; + } } if (afile->proc) { (*afile->proc) (afile, code);