dir/vol: Die() really does
[openafs.git] / src / volser / physio.c
index 31cac65..0045100 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright 2000, International Business Machines Corporation and others.
  * All Rights Reserved.
- * 
+ *
  * This software has been released under the terms of the IBM Public
  * License.  For details, see the LICENSE file in the top-level source
  * directory or online at http://www.openafs.org/dl/license10.html
 #include <afsconfig.h>
 #include <afs/param.h>
 
-RCSID
-    ("$Header$");
-
-#include <sys/types.h>
-#ifdef AFS_NT40_ENV
-#include <fcntl.h>
-#else
-#include <sys/file.h>
-#include <netinet/in.h>
-#include <unistd.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#else
-#ifdef HAVE_STRINGS_H
-#include <strings.h>
-#endif
-#endif
-#ifdef AFS_SUN5_ENV
-#include <sys/fcntl.h>
-#endif
-#include <errno.h>
+#include <roken.h>
+
 #include <rx/xdr.h>
 #include <rx/rx.h>
-#include <stdio.h>
 #include <afs/afsint.h>
 #include <afs/nfs.h>
-#include <afs/assert.h>
+#include <afs/afs_assert.h>
 #include <afs/dir.h>
 #include <afs/ihandle.h>
+
 #include "vol.h"
+#include "physio.h"
 
 /* returns 0 on success, errno on failure */
 int
@@ -48,20 +29,16 @@ ReallyRead(DirHandle * file, int block, char *data)
 {
     FdHandle_t *fdP;
     int code;
+    ssize_t nBytes;
     errno = 0;
     fdP = IH_OPEN(file->dirh_handle);
     if (fdP == NULL) {
        code = errno;
        return code;
     }
-    if (FDH_SEEK(fdP, block * AFS_PAGESIZE, SEEK_SET) < 0) {
-       code = errno;
-       FDH_REALLYCLOSE(fdP);
-       return code;
-    }
-    code = FDH_READ(fdP, data, AFS_PAGESIZE);
-    if (code != AFS_PAGESIZE) {
-       if (code < 0)
+    nBytes = FDH_PREAD(fdP, data, AFS_PAGESIZE, ((afs_foff_t)block) * AFS_PAGESIZE);
+    if (nBytes != AFS_PAGESIZE) {
+       if (nBytes < 0)
            code = errno;
        else
            code = EIO;
@@ -79,6 +56,7 @@ ReallyWrite(DirHandle * file, int block, char *data)
     FdHandle_t *fdP;
     extern int VolumeChanged;
     int code;
+    ssize_t nBytes;
 
     errno = 0;
 
@@ -87,14 +65,9 @@ ReallyWrite(DirHandle * file, int block, char *data)
        code = errno;
        return code;
     }
-    if (FDH_SEEK(fdP, block * AFS_PAGESIZE, SEEK_SET) < 0) {
-       code = errno;
-       FDH_REALLYCLOSE(fdP);
-       return code;
-    }
-    code = FDH_WRITE(fdP, data, AFS_PAGESIZE);
-    if (code != AFS_PAGESIZE) {
-       if (code < 0)
+    nBytes = FDH_PWRITE(fdP, data, AFS_PAGESIZE, ((afs_foff_t)block) * AFS_PAGESIZE);
+    if (nBytes != AFS_PAGESIZE) {
+       if (nBytes < 0)
            code = errno;
        else
            code = EIO;
@@ -111,10 +84,10 @@ ReallyWrite(DirHandle * file, int block, char *data)
  * The handle needs to be dereferenced with the FidZap() routine.
  */
 void
-SetSalvageDirHandle(DirHandle * dir, afs_int32 volume, afs_int32 device,
+SetSalvageDirHandle(DirHandle * dir, afs_uint32 volume, afs_int32 device,
                     Inode inode)
 {
-    private SalvageCacheCheck = 1;
+    private int SalvageCacheCheck = 1;
     memset(dir, 0, sizeof(DirHandle));
 
     dir->dirh_volume = volume;
@@ -169,8 +142,8 @@ FidCpy(DirHandle * tofile, DirHandle * fromfile)
 }
 
 void
-Die(char *msg)
+Die(const char *msg)
 {
     printf("%s\n", msg);
-    assert(1 == 2);
+    osi_Panic("%s\n", msg);
 }