⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rf_status.c

📁 RAIDFrame是个非常好的磁盘阵列RAID仿真工具
💻 C
字号:
/* * rf_status.c *//* * Jim Zelenka, CMU/SCS, 2 May 1996 * * Get status of an array, and its disks */#include <stdio.h>#include <fcntl.h>#include <unistd.h>#include "rf_types.h"#include "rf_raid.h"#include "rf_disks.h"#include "rf_raidframe.h"char *progname;char *devname = "/dev/rraidframe_c";static void usage(){	fprintf(stderr, "USAGE: %s [device_name]\n", progname);	fflush(stderr);	exit(1);}#define CASESTR(_c_) case rf_ds_##_c_ : strcpy(str,#_c_); break;static char *statusstr(status)  RF_DiskStatus_t  status;{	static char str[512];	switch(status) {		CASESTR(optimal);		CASESTR(failed);		CASESTR(reconstructing);		CASESTR(dist_spared);		CASESTR(spared);		CASESTR(spare);		CASESTR(used_spare);		default:			sprintf(str, "Unknown status %d", (int)status);	}	return(str);}static void show_disk(dp)  RF_RaidDisk_t  *dp;{	printf("%20s: %s\n", dp->devname, statusstr(dp->status));}static void show_spare(dp)  RF_RaidDisk_t  *dp;{	printf("%20s [%d][%d]: %s\n", dp->devname, dp->spareRow, dp->spareCol,			statusstr(dp->status));}main(argc, argv)  int     argc;  char  **argv;{	RF_DeviceConfig_t rfcfg, *cfg;	int fd, rc, i, j;	progname = argv[0];	if (argc > 1) {		if (argc != 2)			usage();		devname = argv[1];	}	fd = open(devname, O_RDWR);	if (fd < 0) {		perror(devname);		exit(1);	}	cfg = &rfcfg;	rc = ioctl(fd, RAIDFRAME_GET_INFO, &cfg);	if (rc) {		perror("RAIDFRAME_GET_INFO");		exit(1);	}	printf("Devices:\n");	for(i=0;i<rfcfg.ndevs;i++) {		show_disk(&rfcfg.devs[i]);	}	if (rfcfg.nspares > 0) {		printf("Spares:\n");		for(i=0;i<rfcfg.nspares;i++) {			show_spare(&rfcfg.spares[i]);		}	}	exit(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -