fcacheentry2xfsnode (&root_fid, &real_fid, &status, &msg.node, ae);  msg.header.opcode = XFS_MSG_INSTALLROOT; h0 = (struct xfs_message_header *)&msg; h0_len = sizeof(msg);  out: if (ret == RXKADEXPIRED) { cred_expire (ce); cred_free (ce); return xfs_message_getroot (fd, h, size);
msg.header.opcode = XFS_MSG_INSTALLROOT; h0 = (struct xfs_message_header *)&msg; h0_len = sizeof(msg);
xfs_message_getroot (int fd, struct xfs_message_getroot *h, u_int size){     struct xfs_message_installroot msg;     int ret = 0;     VenusFid root_fid;     VenusFid real_fid;     AFSFetchStatus status;     Result result;     CredCacheEntry *ce;     AccessEntry *ae;     struct xfs_message_header *h0 = NULL;     size_t h0_len = 0;     ce = cred_get (0, h->cred.pag, CRED_ANY);     assert (ce != NULL);     ret = getroot (&root_fid, ce);     if (ret)	 goto out;     result = cm_getattr(root_fid, &status, &real_fid, ce, &ae);     if (result.res == -1) {	 ret = result.error;	 goto out;     }	      fcacheentry2xfsnode (&root_fid, &real_fid,			  &status, &msg.node, ae);     msg.header.opcode = XFS_MSG_INSTALLROOT;     h0 = (struct xfs_message_header *)&msg;     h0_len = sizeof(msg);out:     if (ret == RXKADEXPIRED) {	 cred_expire (ce);	 cred_free (ce);	 return xfs_message_getroot (fd, h, size);     }     cred_free (ce);     xfs_send_message_wakeup_multiple (fd,				       h->header.sequence_num,				       ret,				       h0, h0_len,				       NULL, 0);     return ret;}