FINFO
struct uvnode *devvp, void (func(daddr_t, FINFO *)))
FINFO *fp;
pass6harvest(daddr_t daddr, FINFO *fip)
FINFO *fip;
FINFO *fp;
FINFO *finfop; /* The FINFO structure to parse */
FINFO *fip; /* current fileinfo pointer */
static __inline FINFO *
return (FINFO *)((char *)ssp + SEGSUM_SIZE(fs));
((FINFO *)((char *)(ssp) + SEGSUM_SIZE(fs)));
lfs_blocks_fromfinfo(STRUCT_LFS *fs, union lfs_blocks *bp, FINFO *fip)
((FINFO *)((char *)(fip) + FINFO_FULLSIZE(fs, fip)))
lfs_fi_get##field(STRUCT_LFS *fs, FINFO *fip) \
lfs_fi_set##field(STRUCT_LFS *fs, FINFO *fip, type val) \
lfs_fi_getblock(STRUCT_LFS *fs, FINFO *fip, unsigned idx)
lfs_fi_setblock(STRUCT_LFS *fs, FINFO *fip, unsigned idx, daddr_t blk)
FINFO *fip;
FINFO *fip;
FINFO *fip;
FINFO *fip;
FINFO *fip;
FINFO *fip;
FINFO *fp;
FINFO[j].forward_xid = lastxid + j; /* encode slot */
*callxidp = FINFO[j].forward_xid; /* forward on this xid */
if ((FINFO[i].flag & FINFO_ACTIVE) &&
(FINFO[i].forward_xid == reply_xid)) {
return (&FINFO[i]);
static struct finfo FINFO[NFORWARD];
fi = &FINFO[idx];
min_time = FINFO[0].time;
if (FINFO[i].flag & FINFO_ACTIVE) {
if ((FINFO[i].caller_xid == caller_xid) &&
(FINFO[i].reply_type == reply_type) &&
(FINFO[i].versnum == versnum) &&
(!netbufcmp(FINFO[i].caller_addr,
FINFO[i].time = time((time_t *)0);
if ((time_now - FINFO[i].time) > MAXTIME_OFF)
if ((FINFO[i].flag & FINFO_ACTIVE) == 0) {
} else if (FINFO[i].time < min_time) {
min_time = FINFO[i].time;
if ((FINFO[j].caller_addr = netbufdup(caller_addr)) == NULL) {
FINFO[j].flag = FINFO_ACTIVE;
FINFO[j].reply_type = reply_type;
FINFO[j].versnum = versnum;
FINFO[j].time = time_now;
FINFO[j].caller_xid = caller_xid;
FINFO[j].forward_fd = forward_fd;
FINFO[j].uaddr = uaddr;