2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
10 #include <afs/param.h>
11 #include <sys/types.h>
16 #include <netinet/in.h>
20 #include <sys/fcntl.h>
26 #include <afs/afsint.h>
28 #include <afs/assert.h>
30 #include <afs/ihandle.h>
33 /* returns 0 on success, errno on failure */
34 int ReallyRead (file, block, data)
42 fdP = IH_OPEN(file->dirh_handle);
47 if (FDH_SEEK(fdP, block*AFS_PAGESIZE, SEEK_SET) < 0) {
52 code = FDH_READ(fdP, data, AFS_PAGESIZE);
53 if (code != AFS_PAGESIZE) {
65 /* returns 0 on success, errno on failure */
66 int ReallyWrite (file, block, data)
72 extern int VolumeChanged;
77 fdP = IH_OPEN(file->dirh_handle);
82 if (FDH_SEEK(fdP, block*AFS_PAGESIZE, SEEK_SET) < 0) {
87 code = FDH_WRITE(fdP, data, AFS_PAGESIZE);
88 if (code != AFS_PAGESIZE) {
101 /* SetSalvageDirHandle:
102 * Create a handle to a directory entry and reference it (IH_INIT).
103 * The handle needs to be dereferenced with the FidZap() routine.
105 SetSalvageDirHandle(dir, volume, device, inode)
111 private SalvageCacheCheck = 1;
112 bzero(dir, sizeof(DirHandle));
114 dir->dirh_volume = volume;
115 dir->dirh_device = device;
116 dir->dirh_inode = inode;
117 IH_INIT(dir->dirh_handle, device, volume, inode);
119 /* Always re-read for a new dirhandle */
120 dir->dirh_cacheCheck = SalvageCacheCheck++;
127 IH_RELEASE(file->dirh_handle);
128 bzero(file, sizeof(DirHandle));
135 bzero(file, sizeof(DirHandle));
143 if (afile->dirh_volume != bfile->dirh_volume) return 0;
144 if (afile->dirh_device != bfile->dirh_device) return 0;
145 if (afile->dirh_cacheCheck != bfile->dirh_cacheCheck) return 0;
146 if (afile->dirh_inode != bfile->dirh_inode) return 0;
150 FidVolEq (afile, vid)
155 if (afile->dirh_volume != vid) return 0;
159 FidCpy (tofile, fromfile)
161 DirHandle * fromfile;
165 IH_COPY(tofile->dirh_handle, fromfile->dirh_handle);