亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? libscsi.c

?? 讀取SCSI磁盤陣列信息的源代碼,支持設備:mega scsi device
?? C
?? 第 1 頁 / 共 2 頁
字號:
	strncpy(bi->bi_dev, scsi_adapter->adapter_dev.dv_xname, sizeof(bi->bi_dev));	/* do we actually care how many disks we have at this point? */	for (i = 0; i < p->ada_nld; i++)		for (s = 0; s < p->ald[i].adl_spandepth; s++)			for (t = 0; t < p->ald[i].adl_nstripes; t++) {				off = p->ald[i].asp[s].adv[t].add_channel *				    MEGASCSI_MAX_TARGET +				    p->ald[i].asp[s].adv[t].add_target;				if (!plist[off]) {					plist[off] = 1;					bi->bi_nodisk++;				}			}	/*	 * hack warning!	 * Megaraid cards sometimes return a size in the PD structure	 * even though there is no disk in that slot.  Work around	 * that by issuing an INQUIRY to determine if there is	 * an actual disk in the slot.	 */	for(i = 0; i < ((scsi_adapter->adapter_flags & MEGASCSI_QUARTZ) ?	    MEGASCSI_BIG_MAX_PDRIVES : MEGASCSI_MAX_PDRIVES); i++) {	    	/* skip claimed drives */	    	if (plist[i])			continue;	    	/*		 * poke drive to make sure its there.  If it is it is either		 * unused or a hot spare; at this point we dont care which it is		 */		if (p->apd[i].adp_size) {			ch = (i & 0xf0) >> 4;			tg = i & 0x0f;			if (!megascsi_drv_inq(scsi_adapter, ch, tg, 0, &inqbuf)) {				bi->bi_novol++;				bi->bi_nodisk++;				plist[i] = 1;			}		}	}bail2:	free(plist);bail:	free(p);	return (error);}intmegascsi_vol(scsi_adapter, bv, p)	struct megascsi_adapter *scsi_adapter;	struct mioc_vol *bv;	struct megascsi_big_diskarray *p;{	struct scsi_inquiry_data inqbuf;	char *plist;	int i, s, t, off;	int ld = p->ada_nld, error = EINVAL;	unsigned char ch, tg;	plist = malloc(MEGASCSI_BIG_MAX_PDRIVES);	if (!plist) {		printf("%s: no memory for disk list\n",scsi_adapter->adapter_dev.dv_xname);		return (ENOMEM);	}	memset(plist, 0, MEGASCSI_BIG_MAX_PDRIVES);	/* setup plist */	for (i = 0; i < p->ada_nld; i++)		for (s = 0; s < p->ald[i].adl_spandepth; s++)			for (t = 0; t < p->ald[i].adl_nstripes; t++) {				off = p->ald[i].asp[s].adv[t].add_channel *				    MEGASCSI_MAX_TARGET +				    p->ald[i].asp[s].adv[t].add_target;				if (!plist[off])					plist[off] = 1;			}	for(i = 0; i < ((scsi_adapter->adapter_flags & MEGASCSI_QUARTZ) ?	    MEGASCSI_BIG_MAX_PDRIVES : MEGASCSI_MAX_PDRIVES); i++) {	    	/* skip claimed drives */	    	if (plist[i])			continue;	    	/*		 * poke drive to make sure its there.  If it is it is either		 * unused or a hot spare; at this point we dont care which it is		 */		if (p->apd[i].adp_size) {			ch = (i & 0xf0) >> 4;			tg = i & 0x0f;			if (!megascsi_drv_inq(scsi_adapter, ch, tg, 0, &inqbuf)) {				if (ld != bv->bv_volid) {					ld++;					continue;				}				bv->bv_status = MIOC_SVONLINE;				bv->bv_size = (unsigned long long)p->apd[i].adp_size *				    (unsigned long long)512;				bv->bv_nodisk = 1;				strncpy(bv->bv_dev,				    scsi_adapter->adapter_hdr[bv->bv_volid].dev,				    sizeof(bv->bv_dev));				if (p->apd[i].adp_ostatus == MEGASCSI_PD_HOTSPARE				    && p->apd[i].adp_type == 0)					bv->bv_level = -1;				else					bv->bv_level = -2;				error = 0;				goto bail;			}		}	}bail:	free(plist);	return (error);}intmegascsi_disk(scsi_adapter, bd, p)	struct megascsi_adapter *scsi_adapter;	struct mioc_disk *bd;	struct megascsi_big_diskarray *p;{	struct scsi_inquiry_data inqbuf;	struct scsi_inquiry_vpd vpdbuf;	char *plist;	int i, s, t, off;	int ld = p->ada_nld, error = EINVAL;	unsigned char ch, tg;	plist = malloc(MEGASCSI_BIG_MAX_PDRIVES);	if (!plist) {		printf("%s: no memory for disk list\n",scsi_adapter->adapter_dev.dv_xname);		return (ENOMEM);	}	memset(plist, 0, MEGASCSI_BIG_MAX_PDRIVES);	/* setup plist */	for (i = 0; i < p->ada_nld; i++)		for (s = 0; s < p->ald[i].adl_spandepth; s++)			for (t = 0; t < p->ald[i].adl_nstripes; t++) {				off = p->ald[i].asp[s].adv[t].add_channel *				    MEGASCSI_MAX_TARGET +				    p->ald[i].asp[s].adv[t].add_target;				if (!plist[off])					plist[off] = 1;			}	for(i = 0; i < ((scsi_adapter->adapter_flags & MEGASCSI_QUARTZ) ?	    MEGASCSI_BIG_MAX_PDRIVES : MEGASCSI_MAX_PDRIVES); i++) {	    	/* skip claimed drives */	    	if (plist[i])			continue;	    	/*		 * poke drive to make sure its there.  If it is it is either		 * unused or a hot spare; at this point we dont care which it is		 */		if (p->apd[i].adp_size) {			ch = (i & 0xf0) >> 4;			tg = i & 0x0f;			if (!megascsi_drv_inq(scsi_adapter, ch, tg, 0, &inqbuf)) {				char vend[8+16+4+1];				if (ld != bd->bd_volid) {					ld++;					continue;				}				memcpy(vend, inqbuf.vendor,				    sizeof vend - 1);				vend[sizeof vend - 1] = '\0';				strncpy(bd->bd_vendor, vend,				    sizeof(bd->bd_vendor));				if (!megascsi_drv_inq(scsi_adapter, ch, tg, 0x80, &vpdbuf)) {					char ser[32 + 1];					memcpy(ser, vpdbuf.serial,					    sizeof ser - 1);					ser[sizeof ser - 1] = '\0';					if (vpdbuf.page_length < sizeof ser)						ser[vpdbuf.page_length] = '\0';					strncpy(bd->bd_serial, ser,					    sizeof(bd->bd_serial));				}				bd->bd_size = (unsigned long long)p->apd[i].adp_size *				    (unsigned long long)512;				bd->bd_channel = ch;				bd->bd_target = tg;				strncpy(bd->bd_procdev,				    scsi_adapter->adapter_rawadapters[ch].adapter_procdev,				    sizeof(bd->bd_procdev));				if (p->apd[i].adp_ostatus == MEGASCSI_PD_HOTSPARE				    && p->apd[i].adp_type == 0)					bd->bd_status = MIOC_SDHOTSPARE;				else					bd->bd_status = MIOC_SDUNUSED;				error = 0;				goto bail;			}		}	}bail:	free(plist);	return (error);}intmegascsi_ioctl_vol(scsi_adapter, bv)	struct megascsi_adapter *scsi_adapter;	struct mioc_vol *bv;{	struct megascsi_big_diskarray *p; /* struct too large for stack */	int i, s, t;	int error = 0;	p = malloc(sizeof(struct megascsi_big_diskarray));	if (!p) {		printf("%s: no memory for raw interface\n",scsi_adapter->adapter_dev.dv_xname);		return (ENOMEM);	}	memset(p, 0, sizeof(struct megascsi_big_diskarray));	if (megascsi_mgmt(scsi_adapter, MEGASCSI_FCOP, MEGASCSI_FC_RDCONF, 0, 0, sizeof *p, p)) {		error = EINVAL;		goto bail;	}	if (bv->bv_volid >= p->ada_nld) {		error = megascsi_vol(scsi_adapter, bv, p);		goto bail;	}	i = bv->bv_volid;	switch (p->ald[i].adl_status) {	case MEGASCSI_RDRV_OFFLINE:		bv->bv_status = MIOC_SVOFFLINE;		break;	case MEGASCSI_RDRV_DEGRADED:		bv->bv_status = MIOC_SVDEGRADED;		break;	case MEGASCSI_RDRV_OPTIMAL:		bv->bv_status = MIOC_SVONLINE;		break;	default:		bv->bv_status = MIOC_SVINVALID;	}	bv->bv_size = 0;	bv->bv_level = p->ald[i].adl_raidlvl;	bv->bv_nodisk = 0;	for (s = 0; s < p->ald[i].adl_spandepth; s++) {		for (t = 0; t < p->ald[i].adl_nstripes; t++)			bv->bv_nodisk++;		switch (bv->bv_level) {		case 0:			bv->bv_size += p->ald[i].asp[s].ads_length *			    p->ald[i].adl_nstripes;			break;		case 1:			bv->bv_size += p->ald[i].asp[s].ads_length;			break;		case 5:			bv->bv_size += p->ald[i].asp[s].ads_length *			    (p->ald[i].adl_nstripes - 1);			break;		}	}	if (p->ald[i].adl_spandepth > 1)		bv->bv_level *= 10;	bv->bv_size *= (unsigned long long)512;	strncpy(bv->bv_dev, scsi_adapter->adapter_hdr[i].dev, sizeof(bv->bv_dev));	bail:	free(p);	return (error);}intmegascsi_ioctl_disk(scsi_adapter, bd)	struct megascsi_adapter *scsi_adapter;	struct mioc_disk *bd;{	struct scsi_inquiry_data inqbuf;	struct scsi_inquiry_vpd vpdbuf;	struct megascsi_big_diskarray *p; /* struct too large for stack */	int i, s, t, d;	int off;	int error = 0;	unsigned short ch, tg;	p = malloc(sizeof(struct megascsi_big_diskarray));	if (!p) {		printf("%s: no memory for raw interface\n",scsi_adapter->adapter_dev.dv_xname);		return (ENOMEM);	}	memset(p, 0, sizeof(struct megascsi_big_diskarray));	if (megascsi_mgmt(scsi_adapter, MEGASCSI_FCOP, MEGASCSI_FC_RDCONF, 0, 0, sizeof *p, p)) {		error = EINVAL;		goto bail;	}	if (bd->bd_volid >= p->ada_nld) {		error = megascsi_disk(scsi_adapter, bd, p);		goto bail;	}	i = bd->bd_volid;	error = EINVAL;	for (s = 0, d = 0; s < p->ald[i].adl_spandepth; s++)		for (t = 0; t < p->ald[i].adl_nstripes; t++) {			if (d != bd->bd_diskid) {				d++;				continue;			}			off = p->ald[i].asp[s].adv[t].add_channel *			    MEGASCSI_MAX_TARGET +			    p->ald[i].asp[s].adv[t].add_target;			switch (p->apd[off].adp_ostatus) {			case MEGASCSI_PD_UNCNF:				bd->bd_status = MIOC_SDUNUSED;				break;			case MEGASCSI_PD_ONLINE:				bd->bd_status = MIOC_SDONLINE;				break;			case MEGASCSI_PD_FAILED:				bd->bd_status = MIOC_SDFAILED;				break;			case MEGASCSI_PD_RBLD:				bd->bd_status = MIOC_SDREBUILD;				break;			case MEGASCSI_PD_HOTSPARE:				bd->bd_status = MIOC_SDHOTSPARE;				break;			default:				bd->bd_status = MIOC_SDINVALID;			}			bd->bd_size = (unsigned long long)p->apd[off].adp_size *			    (unsigned long long)512;			ch = p->ald[i].asp[s].adv[t].add_target >> 4;			tg = p->ald[i].asp[s].adv[t].add_target & 0x0f;			if (!megascsi_drv_inq(scsi_adapter, ch, tg, 0, &inqbuf)) {				char vend[8+16+4+1];				memcpy(vend, inqbuf.vendor, sizeof vend - 1);				vend[sizeof vend - 1] = '\0';				strncpy(bd->bd_vendor, vend,				    sizeof(bd->bd_vendor));			}			if (!megascsi_drv_inq(scsi_adapter, ch, tg, 0x80, &vpdbuf)) {				char ser[32 + 1];				memcpy(ser, vpdbuf.serial, sizeof ser - 1);				ser[sizeof ser - 1] = '\0';				if (vpdbuf.page_length < sizeof ser)					ser[vpdbuf.page_length] = '\0';				strncpy(bd->bd_serial, ser,				    sizeof(bd->bd_serial));			}			bd->bd_channel = ch;			bd->bd_target = tg;			strncpy(bd->bd_procdev, scsi_adapter->adapter_rawadapters[ch].adapter_procdev,			    sizeof(bd->bd_procdev));			error = 0;			goto bail;		}	/* XXX if we reach this do dedicated hotspare magic*/bail:	free(p);	return (error);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久蜜桃香蕉精品一区二区三区| 欧洲人成人精品| 国产一区二区女| 精品一区二区三区欧美| 久久成人18免费观看| 国产成人精品网址| 丰满白嫩尤物一区二区| 国产精品1024| 在线精品亚洲一区二区不卡| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 色偷偷88欧美精品久久久| 日韩一区二区三区在线| 国产视频一区在线观看| 亚洲精选一二三| 香蕉成人啪国产精品视频综合网| 日韩高清欧美激情| 国产精品99久久久久久久女警| 成人综合在线观看| 在线免费不卡电影| 久久综合国产精品| 婷婷综合久久一区二区三区| 国产mv日韩mv欧美| 欧美妇女性影城| 国产精品久久久一本精品| 视频一区二区国产| 白白色 亚洲乱淫| 91精品国产综合久久小美女| 中文字幕一区二区三区在线观看| 天天综合网 天天综合色| 国产自产视频一区二区三区| 色爱区综合激月婷婷| 国产日韩欧美高清| 日本女人一区二区三区| 色综合天天综合在线视频| 久久精品日产第一区二区三区高清版 | 亚洲国产精品人人做人人爽| 91在线观看美女| 午夜久久久久久久久久一区二区| 在线播放视频一区| 日韩精品久久久久久| 欧美一级二级三级乱码| 日本aⅴ免费视频一区二区三区| 欧美军同video69gay| 日韩精品午夜视频| 欧美日本视频在线| 一区二区三区日韩欧美| 欧美视频一区在线| 日韩精品每日更新| 欧美va亚洲va在线观看蝴蝶网| 久久精品国产亚洲一区二区三区| 欧美成人伊人久久综合网| 狠狠色狠狠色合久久伊人| 中文字幕欧美三区| 欧美午夜寂寞影院| 精品一区二区综合| 国产精品久久夜| 欧美丰满美乳xxx高潮www| 奇米888四色在线精品| 亚洲国产精品成人综合| 99久久精品国产导航| 亚洲精品日韩综合观看成人91| 欧美日韩亚洲高清一区二区| 蜜桃av一区二区| 中文字幕日本乱码精品影院| 色欧美日韩亚洲| 国产高清精品网站| 夜色激情一区二区| 国产欧美日韩亚州综合| 7777精品伊人久久久大香线蕉最新版| 国产99久久久精品| 国产综合色精品一区二区三区| 1000精品久久久久久久久| 久久久久久一二三区| 日本高清免费不卡视频| 国产美女娇喘av呻吟久久| 最新国产成人在线观看| 精品粉嫩超白一线天av| 91成人在线精品| 成人精品一区二区三区四区| 亚洲一区二区在线观看视频 | 日韩中文字幕不卡| 亚洲精选在线视频| 亚洲国产精品久久久久婷婷884| 亚洲免费av观看| 国产精品成人在线观看| 国产精品久久三| 中文一区二区完整视频在线观看| 欧美美女一区二区在线观看| 一本一本大道香蕉久在线精品 | av在线一区二区| 韩国毛片一区二区三区| 国产一区二区在线观看视频| 国产一区二区不卡| 久久99精品久久久久久| 久久99久久久久久久久久久| 亚洲成a人片在线观看中文| 亚洲精品乱码久久久久| 亚洲自拍偷拍综合| 亚洲国产精品久久艾草纯爱| 亚洲午夜激情网站| 视频一区视频二区在线观看| 天天色 色综合| 国产永久精品大片wwwapp| 国产suv精品一区二区三区| 成人性生交大合| 色综合久久久久综合体| 欧美绝品在线观看成人午夜影视| 欧美一区二区日韩一区二区| 久久久久久免费网| 亚洲欧洲一区二区在线播放| 一区二区激情小说| 亚洲成人高清在线| 国产一区二区精品久久91| 不卡的av网站| 欧美日本在线视频| 国产女人水真多18毛片18精品视频| 国产精品美女视频| 一区二区三区电影在线播| 免费在线成人网| 波多野结衣中文字幕一区二区三区 | 国产精品天干天干在线综合| 亚洲成av人影院| 国产大陆精品国产| 欧美日韩亚洲综合在线| 中文无字幕一区二区三区| 日本欧洲一区二区| 欧美人成免费网站| 午夜视频在线观看一区二区| 伊人婷婷欧美激情| 爽好多水快深点欧美视频| 91网站在线播放| 一本大道综合伊人精品热热 | 不卡电影免费在线播放一区| 久久综合九色综合欧美就去吻| 日韩福利电影在线| 91精品国产一区二区三区香蕉 | 99精品1区2区| 国产亚洲1区2区3区| 狠狠色狠狠色综合日日91app| 欧美一区二区私人影院日本| 亚洲在线一区二区三区| av中文字幕亚洲| 成人免费一区二区三区视频 | 欧美在线观看一二区| 洋洋av久久久久久久一区| 91久久香蕉国产日韩欧美9色| 亚洲日本va在线观看| 99久久夜色精品国产网站| 中文字幕精品一区二区三区精品| 国产麻豆精品在线| 日本一区二区三区高清不卡| 韩国女主播一区二区三区| 精品电影一区二区三区 | 亚洲韩国精品一区| 欧美精品久久久久久久久老牛影院| 午夜久久久影院| 久久久久99精品国产片| 91在线免费视频观看| 久久精品理论片| 亚洲九九爱视频| 国产亚洲人成网站| 欧美日韩三级视频| 免费久久99精品国产| 欧美tickling网站挠脚心| 国产一区二区三区在线观看免费视频 | 中文字幕日本乱码精品影院| 色婷婷久久久久swag精品| 日韩**一区毛片| 国产精品日产欧美久久久久| 在线观看日产精品| 精品写真视频在线观看| 亚洲精品你懂的| 日韩欧美的一区二区| 99久久久免费精品国产一区二区| 亚洲国产精品一区二区尤物区| 日韩精品一区在线| av午夜精品一区二区三区| 久久se这里有精品| 亚洲成人动漫精品| 国产日韩欧美亚洲| 欧美顶级少妇做爰| 99久久99久久精品免费看蜜桃| 日本中文一区二区三区| 中文字幕亚洲电影| 日韩欧美综合在线| 欧美日韩成人综合天天影院| 国产精品一级黄| 久久99最新地址| 五月天亚洲精品| 一级精品视频在线观看宜春院| 欧美激情综合在线| 欧美xxxx老人做受| 欧美日韩中文精品| 91精彩视频在线| 99久久er热在这里只有精品15| 东方aⅴ免费观看久久av| 久久成人麻豆午夜电影| 日韩不卡一二三区| 图片区日韩欧美亚洲| 亚洲免费观看高清完整版在线观看熊 |