ReleaseWriteLock (&e->lock);
fcache_release(e);
viocwhereis(int fd, struct xfs_message_pioctl *h, u_int size){    VenusFid fid;    CredCacheEntry *ce;    FCacheEntry *e;    int error;    int i;    int32_t addresses[8];    if (!h->handle.a && !h->handle.b && !h->handle.c && !h->handle.d)	return EINVAL;    fid.Cell = h->handle.a;    fid.fid.Volume = h->handle.b;    fid.fid.Vnode = h->handle.c;    fid.fid.Unique = h->handle.d;    ce = cred_get (fid.Cell, h->cred.pag, CRED_ANY);    assert (ce != NULL);    error = fcache_get(&e, fid, ce);    if (error) {	cred_free(ce);	return error;    }    error = fcache_get_attr (e, ce);    if (error) {	ReleaseWriteLock (&e->lock);	cred_free(ce);	return error;    }    memset(addresses, 0, sizeof(addresses));    for (i = 0; (i < e->volume->entry.nServers) && (i < 8); i++)	addresses[i] = e->volume->entry.serverNumber[i];    xfs_send_message_wakeup_data (fd, h->header.sequence_num, error,				  addresses, sizeof(long) * 8);    ReleaseWriteLock (&e->lock);    cred_free (ce);    return 0;}