From 8a641dbdf6a1d198ceb878c69c45495590e7296e Mon Sep 17 00:00:00 2001 From: Derrick Brashear Date: Tue, 4 Mar 2003 16:27:17 +0000 Subject: [PATCH] cacheout-some-fixing-20030304 not done, but it doesn't get compiled anyway so it doesn't matter that i left it broken --- src/venus/cacheout.c | 83 ++++++++++++++++++++++++++++---------------- 1 file changed, 54 insertions(+), 29 deletions(-) diff --git a/src/venus/cacheout.c b/src/venus/cacheout.c index 7ddde1f45..176c148f6 100644 --- a/src/venus/cacheout.c +++ b/src/venus/cacheout.c @@ -160,37 +160,62 @@ not actually be configured as file servers in the cell. afs_int32 ListServers() { - afs_int32 code; - struct rx_connection *conn; - struct rx_call *call; - int i; - int byte_count; - - afs_int32 Handle=0; - afs_int32 spare2=0; - struct VLCallBack spare3; - - bulkaddrs addrs; - afs_uint32 *p; + afs_int32 code; + struct rx_connection *conn; + struct rx_call *call; + int i; + int byte_count; + int nentries; + afs_int32 base, index; + + afs_int32 Handle=0; + afs_int32 spare2=0; + struct VLCallBack spare3; + + bulkaddrs addrs, m_addrs; + ListAddrByAttributes m_attrs; + afs_int32 m_unique, m_nentries; + afs_uint32 *p; + + /* get list of file servers in NW byte order */ + memset(&addrs, 0, sizeof(addrs)); + memset(&spare3, 0, sizeof(spare3)); + code=ubik_Call(VL_GetAddrs,client,0,Handle,spare2,&spare3, + &server_count,&addrs); + if(code) + { + printf("Fatal error: could not get list of file servers\n"); + return 1; + } - /* get list of file servers in NW byte order */ - memset(&addrs, 0, sizeof(addrs)); - memset(&spare3, 0, sizeof(spare3)); - code=ubik_Call(VL_GetAddrs,client,0,Handle,spare2,&spare3, - &server_count,&addrs); - if(code) - { - printf("Fatal error: could not get list of \ -file servers\n"); - return 1; + for(i=0,p=addrs.bulkaddrs_val;i= 0) && (base <= VL_MAX_ADDREXTBLKS) && + (index >= 1) && (index <= VL_MHSRV_PERBLK) ) { + m_attrs.Mask = VLADDR_INDEX; + m_attrs.index = (base * VL_MHSRV_PERBLK) + index; + m_nentries = 0; + m_addrs.bulkaddrs_val = 0; + m_addrs.bulkaddrs_len = 0; + code = ubik_Call(VL_GetAddrsU, client, 0, + &m_attrs, &m_uuid, &m_unique, &m_nentries, &m_addrs); + if (vcode) + return code; + + m_addrp = (afs_int32 *)m_addrs.bulkaddrs_val; + for (j=0; j