17
17
#include "afs/param.h"
20
("$Header: /cvs/openafs/src/afs/afs_callback.c,v 1.27.2.6 2006/03/02 06:44:05 shadow Exp $");
20
("$Header: /cvs/openafs/src/afs/afs_callback.c,v 1.27.2.10 2008/03/10 22:35:33 shadow Exp $");
22
22
#include "afs/sysincludes.h" /*Standard vendor system headers */
23
23
#include "afsincludes.h" /*AFS-based standard headers */
62
62
"afs_xsrvAddr", (char *)&afs_xsrvAddr},
64
"afs_xvreclaim", (char *)&afs_xvreclaim}
64
"afs_xvreclaim", (char *)&afs_xvreclaim},
66
{ "afsdb_client_lock", (char *)&afsdb_client_lock},
67
{ "afsdb_req_lock", (char *)&afsdb_req_lock},
66
70
unsigned long lastCallBack_vnode;
67
71
unsigned int lastCallBack_dv;
136
140
a_result->lock.readersReading = tvc->lock.readers_reading;
137
141
a_result->lock.numWaiting = tvc->lock.num_waiting;
138
142
#if defined(INSTRUMENT_LOCKS)
139
a_result->lock.pid_last_reader = tvc->lock.pid_last_reader;
140
a_result->lock.pid_writer = tvc->lock.pid_writer;
143
a_result->lock.pid_last_reader = MyPidxx2Pid(tvc->lock.pid_last_reader);
144
a_result->lock.pid_writer = MyPidxx2Pid(tvc->lock.pid_writer);
141
145
a_result->lock.src_indicator = tvc->lock.src_indicator;
143
147
/* On osf20 , the vcache does not maintain these three fields */
222
226
a_result->lock.readersReading = tvc->lock.readers_reading;
223
227
a_result->lock.numWaiting = tvc->lock.num_waiting;
224
228
#if defined(INSTRUMENT_LOCKS)
225
a_result->lock.pid_last_reader = tvc->lock.pid_last_reader;
226
a_result->lock.pid_writer = tvc->lock.pid_writer;
229
a_result->lock.pid_last_reader = MyPidxx2Pid(tvc->lock.pid_last_reader);
230
a_result->lock.pid_writer = MyPidxx2Pid(tvc->lock.pid_writer);
227
231
a_result->lock.src_indicator = tvc->lock.src_indicator;
229
233
/* On osf20 , the vcache does not maintain these three fields */
308
312
AFS_STATCNT(SRXAFSCB_GetLock);
309
313
nentries = sizeof(ltable) / sizeof(struct ltable);
310
if (a_index < 0 || a_index >= nentries) {
314
if (a_index < 0 || a_index >= nentries+afs_cellindex) {
319
} else if (a_index >= nentries) {
320
struct cell *tc = afs_GetCellByIndex(a_index-nentries, 0);
321
strcpy(a_result->name, tc->cellName);
322
a_result->lock.waitStates =
323
((struct afs_lock *)&(tc->lock))->wait_states;
324
a_result->lock.exclLocked =
325
((struct afs_lock *)&(tc->lock))->excl_locked;
326
a_result->lock.readersReading =
327
((struct afs_lock *)&(tc->lock))->readers_reading;
328
a_result->lock.numWaiting =
329
((struct afs_lock *)&(tc->lock))->num_waiting;
330
#ifdef INSTRUMENT_LOCKS
331
a_result->lock.pid_last_reader =
332
MyPidxx2Pid(((struct afs_lock *)&(tc->lock))->pid_last_reader);
333
a_result->lock.pid_writer =
334
MyPidxx2Pid(((struct afs_lock *)&(tc->lock))->pid_writer);
335
a_result->lock.src_indicator =
336
((struct afs_lock *)&(tc->lock))->src_indicator;
338
a_result->lock.pid_last_reader = 0;
339
a_result->lock.pid_writer = 0;
340
a_result->lock.src_indicator = 0;
317
345
* Found it - copy out its contents.
328
356
((struct afs_lock *)(tl->addr))->num_waiting;
329
357
#ifdef INSTRUMENT_LOCKS
330
358
a_result->lock.pid_last_reader =
331
((struct afs_lock *)(tl->addr))->pid_last_reader;
359
MyPidxx2Pid(((struct afs_lock *)(tl->addr))->pid_last_reader);
332
360
a_result->lock.pid_writer =
333
((struct afs_lock *)(tl->addr))->pid_writer;
361
MyPidxx2Pid(((struct afs_lock *)(tl->addr))->pid_writer);
334
362
a_result->lock.src_indicator =
335
363
((struct afs_lock *)(tl->addr))->src_indicator;