static void print_vol_stats_general(VolPkgStats * stats) { #ifdef AFS_DEMAND_ATTACH_FS int i; #endif printf("VolPkgStats = {\n"); #ifdef AFS_DEMAND_ATTACH_FS for (i = 0; i < VOL_STATE_COUNT; i++) { printf("\tvol_state_count[%s] = %d\n", vol_state_to_string(i), stats->state_levels[i]); } printf("\thash_looks = %"AFS_INT64_FMT"\n", stats->hash_looks); printf("\thash_reorders = %"AFS_INT64_FMT"\n", stats->hash_reorders); printf("\tsalvages = %"AFS_INT64_FMT"\n", stats->salvages); printf("\tvol_ops = %"AFS_INT64_FMT"\n", stats->vol_ops); #endif printf("\thdr_loads = %"AFS_INT64_FMT"\n", stats->hdr_loads); printf("\thdr_gets = %"AFS_INT64_FMT"\n", stats->hdr_gets); printf("\tattaches = %"AFS_INT64_FMT"\n", stats->attaches); printf("\tsoft_detaches = %"AFS_INT64_FMT"\n", stats->soft_detaches); printf("\thdr_cache_size = %d\n", stats->hdr_cache_size); printf("}\n"); }
static int VolQuery(struct cmd_syndesc * as, void * rock) { struct state state; SYNC_PROTO_BUF_DECL(res_buf); SYNC_response res; Volume v; int hi, lo; res.hdr.response_len = sizeof(res.hdr); res.payload.buf = res_buf; res.payload.len = SYNC_PROTO_MAX_LEN; common_prolog(as, &state); common_volop_prolog(as, &state); do_volop(&state, FSYNC_VOL_QUERY, &res); if (res.hdr.response == SYNC_OK) { memcpy(&v, res.payload.buf, sizeof(Volume)); printf("volume = {\n"); printf("\thashid = %u\n", v.hashid); printf("\theader = 0x%x\n", v.header); printf("\tdevice = %d\n", v.device); printf("\tpartition = 0x%x\n", v.partition); printf("\tlinkHandle = 0x%x\n", v.linkHandle); printf("\tnextVnodeUnique = %u\n", v.nextVnodeUnique); printf("\tdiskDataHandle = 0x%x\n", v.diskDataHandle); printf("\tvnodeHashOffset = %u\n", v.vnodeHashOffset); printf("\tshuttingDown = %d\n", v.shuttingDown); printf("\tgoingOffline = %d\n", v.goingOffline); printf("\tcacheCheck = %u\n", v.cacheCheck); printf("\tnUsers = %d\n", v.nUsers); printf("\tneedsPutBack = %d\n", v.needsPutBack); printf("\tspecialStatus = %d\n", v.specialStatus); printf("\tupdateTime = %u\n", v.updateTime); printf("\tvnodeIndex[vSmall] = {\n"); printf("\t\thandle = 0x%x\n", v.vnodeIndex[vSmall].handle); printf("\t\tbitmap = 0x%x\n", v.vnodeIndex[vSmall].bitmap); printf("\t\tbitmapSize = %u\n", v.vnodeIndex[vSmall].bitmapSize); printf("\t\tbitmapOffset = %u\n", v.vnodeIndex[vSmall].bitmapOffset); printf("\t}\n"); printf("\tvnodeIndex[vLarge] = {\n"); printf("\t\thandle = 0x%x\n", v.vnodeIndex[vLarge].handle); printf("\t\tbitmap = 0x%x\n", v.vnodeIndex[vLarge].bitmap); printf("\t\tbitmapSize = %u\n", v.vnodeIndex[vLarge].bitmapSize); printf("\t\tbitmapOffset = %u\n", v.vnodeIndex[vLarge].bitmapOffset); printf("\t}\n"); #ifdef AFS_DEMAND_ATTACH_FS if (res.hdr.flags & SYNC_FLAG_DAFS_EXTENSIONS) { printf("\tupdateTime = %u\n", v.updateTime); printf("\tattach_state = %s\n", vol_state_to_string(v.attach_state)); printf("\tattach_flags = %s\n", vol_flags_to_string(v.attach_flags)); printf("\tnWaiters = %d\n", v.nWaiters); printf("\tchainCacheCheck = %d\n", v.chainCacheCheck); /* online salvage structure */ printf("\tsalvage = {\n"); printf("\t\tprio = %u\n", v.salvage.prio); printf("\t\treason = %d\n", v.salvage.reason); printf("\t\trequested = %d\n", v.salvage.requested); printf("\t\tscheduled = %d\n", v.salvage.scheduled); printf("\t}\n"); /* statistics structure */ printf("\tstats = {\n"); printf("\t\thash_lookups = {\n"); SplitInt64(v.stats.hash_lookups,hi,lo); printf("\t\t\thi = %u\n", hi); printf("\t\t\tlo = %u\n", lo); printf("\t\t}\n"); printf("\t\thash_short_circuits = {\n"); SplitInt64(v.stats.hash_short_circuits,hi,lo); printf("\t\t\thi = %u\n", hi); printf("\t\t\tlo = %u\n", lo); printf("\t\t}\n"); printf("\t\thdr_loads = {\n"); SplitInt64(v.stats.hdr_loads,hi,lo); printf("\t\t\thi = %u\n", hi); printf("\t\t\tlo = %u\n", lo); printf("\t\t}\n"); printf("\t\thdr_gets = {\n"); SplitInt64(v.stats.hdr_gets,hi,lo); printf("\t\t\thi = %u\n", hi); printf("\t\t\tlo = %u\n", lo); printf("\t\t}\n"); printf("\t\tattaches = %u\n", v.stats.attaches); printf("\t\tsoft_detaches = %u\n", v.stats.soft_detaches); printf("\t\tsalvages = %u\n", v.stats.salvages); printf("\t\tvol_ops = %u\n", v.stats.vol_ops); printf("\t\tlast_attach = %u\n", v.stats.last_attach); printf("\t\tlast_get = %u\n", v.stats.last_get); printf("\t\tlast_promote = %u\n", v.stats.last_promote); printf("\t\tlast_hdr_get = %u\n", v.stats.last_hdr_get); printf("\t\tlast_hdr_load = %u\n", v.stats.last_hdr_load); printf("\t\tlast_salvage = %u\n", v.stats.last_salvage); printf("\t\tlast_salvage_req = %u\n", v.stats.last_salvage_req); printf("\t\tlast_vol_op = %u\n", v.stats.last_vol_op); printf("\t}\n"); /* VLRU state */ printf("\tvlru = {\n"); printf("\t\tidx = %d (%s)\n", v.vlru.idx, vlru_idx_to_string(v.vlru.idx)); printf("\t}\n"); /* volume op state */ printf("\tpending_vol_op = 0x%x\n", v.pending_vol_op); } #else /* !AFS_DEMAND_ATTACH_FS */ if (res.hdr.flags & SYNC_FLAG_DAFS_EXTENSIONS) { printf("*** server asserted demand attach extensions. fssync-debug not built to\n"); printf("*** recognize those extensions. please recompile fssync-debug if you need\n"); printf("*** to dump dafs extended state\n"); } #endif /* !AFS_DEMAND_ATTACH_FS */ printf("}\n"); } return 0; }
static void print_vol_stats_general(VolPkgStats * stats) { int i; afs_uint32 hi, lo; printf("VolPkgStats = {\n"); #ifdef AFS_DEMAND_ATTACH_FS for (i = 0; i < VOL_STATE_COUNT; i++) { printf("\tvol_state_count[%s] = %d\n", vol_state_to_string(i), stats->state_levels[i]); } SplitInt64(stats->hash_looks, hi, lo); printf("\thash_looks = {\n"); printf("\t\thi = %u\n", hi); printf("\t\tlo = %u\n", lo); printf("\t}\n"); SplitInt64(stats->hash_reorders, hi, lo); printf("\thash_reorders = {\n"); printf("\t\thi = %u\n", hi); printf("\t\tlo = %u\n", lo); printf("\t}\n"); SplitInt64(stats->salvages, hi, lo); printf("\tsalvages = {\n"); printf("\t\thi = %u\n", hi); printf("\t\tlo = %u\n", lo); printf("\t}\n"); SplitInt64(stats->vol_ops, hi, lo); printf("\tvol_ops = {\n"); printf("\t\thi = %u\n", hi); printf("\t\tlo = %u\n", lo); printf("\t}\n"); #endif SplitInt64(stats->hdr_loads, hi, lo); printf("\thdr_loads = {\n"); printf("\t\thi = %u\n", hi); printf("\t\tlo = %u\n", lo); printf("\t}\n"); SplitInt64(stats->hdr_gets, hi, lo); printf("\thdr_gets = {\n"); printf("\t\thi = %u\n", hi); printf("\t\tlo = %u\n", lo); printf("\t}\n"); SplitInt64(stats->attaches, hi, lo); printf("\tattaches = {\n"); printf("\t\thi = %u\n", hi); printf("\t\tlo = %u\n", lo); printf("\t}\n"); SplitInt64(stats->soft_detaches, hi, lo); printf("\tsoft_detaches = {\n"); printf("\t\thi = %u\n", hi); printf("\t\tlo = %u\n", lo); printf("\t}\n"); printf("\thdr_cache_size = %d\n", stats->hdr_cache_size); printf("}\n"); }