if (res.res != 0 && res.error == RXKADEXPIRED) { cred_expire (ce); cred_free (ce); return xfs_message_putattr (fd, h, size);
if (res.res) ret = res.error; else ret = res.res; } while (try_again (&ret, &ce, &h->cred, fid));  if (ret == 0) { res = cm_getattr (*fid, &fetch_status, &real_fid, ce, &ae); if (res.res == 0) { fcacheentry2xfsnode (fid, &real_fid, &fetch_status, &msg.node, ae);  msg.node.tokens = res.tokens & ~XFS_DATA_MASK; msg.header.opcode = XFS_MSG_INSTALLATTR; h0 = (struct xfs_message_header *)&msg; h0_len = sizeof(msg); } else { ret = res.error; }
xfs_message_putattr (int fd, struct xfs_message_putattr *h, u_int size){     VenusFid *fid;     AFSStoreStatus status;     Result res;     CredCacheEntry *ce;     fid = (VenusFid *)&h->handle;     ce = cred_get (fid->Cell, h->cred.pag, CRED_ANY);     assert (ce != NULL);     xfs_attr2afsstorestatus(&h->attr, &status);     res.res = 0;     if (XA_VALID_SIZE(&h->attr))	 res = cm_ftruncate (*fid, h->attr.xa_size, ce);     if (res.res == 0)	 res = cm_setattr(*fid, &status, ce);     if (res.res != 0 && res.error == RXKADEXPIRED) {	 cred_expire (ce);	 cred_free (ce);	 return xfs_message_putattr (fd, h, size);     }     cred_free (ce);     xfs_send_message_wakeup (fd, h->header.sequence_num, 			      res.res ? res.error : res.res);     return 0;}