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

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

?? proc.c

?? ocfs1.2.7 源碼
?? C
字號:
/* -*- mode: c; c-basic-offset: 8; -*- * vim: noexpandtab sw=8 ts=8 sts=0: * * proc.c * * proc interface * * Copyright (C) 2002, 2004 Oracle.  All rights reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 021110-1307, USA. */#include <linux/fs.h>#include <linux/types.h>#include <linux/slab.h>#include <linux/proc_fs.h>#include <linux/socket.h>#define MLOG_MASK_PREFIX ML_SUPER#include <cluster/masklog.h>#include "ocfs2.h"#include "proc.h"#include "alloc.h"#include "heartbeat.h"#include "inode.h"#include "journal.h"#include "ver.h"#define OCFS2_PROC_BASENAME    "fs/ocfs2"static struct proc_dir_entry *ocfs2_proc_root_dir = NULL; /* points to /proc/fs/ocfs2 */static int ocfs2_proc_version(char *page,			      char **start,			      off_t off,			      int count,			      int *eof,			      void *data);static int ocfs2_proc_nodenum(char *page,			      char **start,			      off_t off,			      int count,			      int *eof,			      void *data);static int ocfs2_proc_slotnum(char *page,			      char **start,			      off_t off,			      int count,			      int *eof,			      void *data);static int ocfs2_proc_nodename(char *page,			       char **start,			       off_t off,			       int count,			       int *eof,			       void *data);static int ocfs2_proc_uuid(char *page,			   char **start,			   off_t off,			   int count,			   int *eof,			   void *data);static int ocfs2_proc_device(char *page,			     char **start,			     off_t off,			     int count,			     int *eof,			     void *data);static int ocfs2_proc_nodes(char *page,			    char **start,			    off_t off,			    int count,			    int *eof,			    void *data);static int ocfs2_proc_alloc_stat(char *page,				 char **start,				 off_t off,				 int count,				 int *eof,				 void *data);static int ocfs2_proc_label(char *page,			    char **start,			    off_t off,			    int count,			    int *eof,			    void *data);typedef struct _ocfs2_proc_list{	char *name;	char *data;	int (*read_proc) (char *, char **, off_t, int, int *, void *);	write_proc_t *write_proc;	mode_t mode;} ocfs2_proc_list;static ocfs2_proc_list top_dir[] = {	{ "version", NULL, ocfs2_proc_version, NULL, S_IFREG | S_IRUGO, },	{ "nodename", NULL, ocfs2_proc_nodename, NULL, S_IFREG | S_IRUGO, },	{ NULL }};static ocfs2_proc_list sub_dir[] = {	{ "nodenum", NULL, ocfs2_proc_nodenum, NULL, S_IFREG | S_IRUGO, },	{ "uuid", NULL, ocfs2_proc_uuid, NULL, S_IFREG | S_IRUGO, },	{ "slotnum", NULL, ocfs2_proc_slotnum, NULL, S_IFREG | S_IRUGO, },	{ "device", NULL, ocfs2_proc_device, NULL, S_IFREG | S_IRUGO, },	{ "nodes", NULL, ocfs2_proc_nodes, NULL, S_IFREG | S_IRUGO, },	{ "allocstat", NULL, ocfs2_proc_alloc_stat, NULL, S_IFREG | S_IRUGO, },	{ "label", NULL, ocfs2_proc_label, NULL, S_IFREG | S_IRUGO, },	{ NULL }};int ocfs2_proc_init(void){	struct proc_dir_entry *parent = NULL;	ocfs2_proc_list *p;	struct proc_dir_entry* entry;	mlog_entry_void();	parent = proc_mkdir(OCFS2_PROC_BASENAME, NULL);	if (parent) {		ocfs2_proc_root_dir = parent;		for (p = top_dir; p->name; p++) {			entry = create_proc_read_entry(p->name, p->mode,						       parent, p->read_proc,						       p->data);			if (!entry)				return -EINVAL;			if (p->write_proc)				entry->write_proc = p->write_proc;			entry->owner = THIS_MODULE;		}	}	mlog_exit_void();	return 0;}void ocfs2_proc_deinit(void){	struct proc_dir_entry *parent = ocfs2_proc_root_dir;	ocfs2_proc_list *p;	mlog_entry_void();	if (parent) {		for (p = top_dir; p->name; p++)			remove_proc_entry(p->name, parent);		remove_proc_entry(OCFS2_PROC_BASENAME, NULL);	}	mlog_exit_void();}static int ocfs2_proc_calc_metrics(char *page, char **start, off_t off,				   int count, int *eof, int len){	mlog_entry_void();	if (len <= off + count)		*eof = 1;	*start = page + off;	len -= off;	if (len > count)		len = count;	if (len < 0)		len = 0;	mlog_exit_void();	return len;}static int ocfs2_proc_alloc_stat(char *page, char **start, off_t off,				 int count, int *eof, void *data){	int len, ret;	char *la_state;	struct ocfs2_super *osb = data;	mlog_entry_void();#define ALLOC_STATS_HDR "%-25s %10u\n"	len = sprintf(page, "%s\n", "*** Disk Allocation Stats ***");	if (osb->local_alloc_state == OCFS2_LA_ENABLED)		la_state = "enabled";	else if (osb->local_alloc_state == OCFS2_LA_DISABLED)		la_state = "disabled";	else		la_state = "unused";	len += sprintf(page + len, "%-25s %10s\n", "Local Alloc", la_state);	len += sprintf(page + len, ALLOC_STATS_HDR, "Window Moves",		       atomic_read(&osb->alloc_stats.moves));	len += sprintf(page + len, ALLOC_STATS_HDR, "Local Allocs",		       atomic_read(&osb->alloc_stats.local_data));	len += sprintf(page + len, ALLOC_STATS_HDR, "Bitmap Allocs",		       atomic_read(&osb->alloc_stats.bitmap_data));	len += sprintf(page + len, ALLOC_STATS_HDR, "Block Group Allocs",		       atomic_read(&osb->alloc_stats.bg_allocs));	len += sprintf(page + len, ALLOC_STATS_HDR, "Block Group Adds",		       atomic_read(&osb->alloc_stats.bg_extends));	ret = ocfs2_proc_calc_metrics(page, start, off, count, eof, len);	mlog_exit(ret);	return ret;}static int ocfs2_proc_version(char *page, char **start, off_t off,			      int count, int *eof, void *data){	int len;	int ret;	mlog_entry_void();        len = ocfs2_str_version(page);	ret = ocfs2_proc_calc_metrics(page, start, off, count, eof, len);	mlog_exit(ret);	return ret;}static int ocfs2_proc_nodenum(char *page, char **start, off_t off,			      int count, int *eof, void *data){	int len;	int ret;	struct ocfs2_super *osb = data;	mlog_entry_void();	len = sprintf(page, "%d\n", osb->node_num);	ret = ocfs2_proc_calc_metrics(page, start, off, count, eof, len);	mlog_exit(ret);	return ret;}static int ocfs2_proc_slotnum(char *page, char **start, off_t off,			      int count, int *eof, void *data){	int len;	int ret;	struct ocfs2_super *osb = data;	mlog_entry_void();	len = sprintf(page, "%d\n", osb->slot_num);	ret = ocfs2_proc_calc_metrics(page, start, off, count, eof, len);	mlog_exit(ret);	return ret;}static int ocfs2_proc_nodename(char *page, char **start, off_t off,			       int count, int *eof, void *data){	int len;	int ret;	struct o2nm_node *node;	mlog_entry_void();	node = o2nm_get_node_by_num(o2nm_this_node());	if (node) {		len = sprintf(page, "%s\n", node->nd_name);		o2nm_node_put(node);	} else		len = sprintf(page, "(unknown)\n");	ret = ocfs2_proc_calc_metrics(page, start, off, count, eof, len);	mlog_exit(ret);	return ret;}void ocfs2_proc_add_volume(struct ocfs2_super * osb){	char newdir[20];	struct proc_dir_entry *parent = NULL;	struct proc_dir_entry* entry;	ocfs2_proc_list *p;	mlog_entry_void();	snprintf(newdir, sizeof(newdir), "%u_%u",		 MAJOR(osb->sb->s_dev), MINOR(osb->sb->s_dev));	parent = proc_mkdir(newdir, ocfs2_proc_root_dir);	osb->proc_sub_dir = parent;	if (!parent) {		mlog_exit_void();		return;	}	for (p = sub_dir; p->name; p++) {		/* XXX: What do we do if		 * create_proc_read_entry fails?! */		entry = create_proc_read_entry(p->name, p->mode,					       parent, p->read_proc,					       (char *)osb);		if (entry) {			if (p->write_proc)				entry->write_proc = p->write_proc;			entry->owner = THIS_MODULE;		}	}	mlog_exit_void();}void ocfs2_proc_remove_volume(struct ocfs2_super * osb){	ocfs2_proc_list *p;	char dir[20];	mlog_entry_void();	if (osb->proc_sub_dir) {		for (p = sub_dir; p->name; p++)			remove_proc_entry(p->name, osb->proc_sub_dir);		snprintf(dir, sizeof(dir), "%u_%u",			 MAJOR(osb->sb->s_dev), MINOR(osb->sb->s_dev));		remove_proc_entry(dir, ocfs2_proc_root_dir);	}	mlog_exit_void();}static int ocfs2_proc_uuid(char *page, char **start, off_t off,			   int count, int *eof, void *data){	int len, ret;	struct ocfs2_super *osb = data;	mlog_entry_void();	len = sprintf(page, "%s\n", osb->uuid_str);	ret = ocfs2_proc_calc_metrics(page, start, off, count, eof, len);	mlog_exit(ret);	return ret;}static int ocfs2_proc_device(char *page, char **start, off_t off,			     int count, int *eof, void *data){	int len;	int ret;	struct ocfs2_super *osb = data;	mlog_entry_void();	len = snprintf(page, sizeof(osb->dev_str), "%s\n", osb->dev_str);	ret = ocfs2_proc_calc_metrics(page, start, off, count, eof, len);	mlog_exit(ret);	return ret;}static int ocfs2_proc_nodes(char *page, char **start, off_t off,			    int count, int *eof, void *data){	int len = 0;	int i;	int ret;	struct ocfs2_super *osb = data;	char mount;	mlog_entry_void();	if (osb) {		for (i = 0; i < OCFS2_NODE_MAP_MAX_NODES; i++) {			mount = ocfs2_node_map_test_bit(osb, &osb->mounted_map, i) ? 'M' : ' ';			len += sprintf(page + len, "%2d %c\n", i, mount);		}	}	ret = ocfs2_proc_calc_metrics(page, start, off, count, eof, len);	mlog_exit(ret);	return ret;}static int ocfs2_proc_label(char *page, char **start, off_t off,			    int count, int *eof, void *data){	int len;	int ret;	struct ocfs2_super *osb = data;	mlog_entry_void();	len = sprintf(page, "%s\n", osb->vol_label);	ret = ocfs2_proc_calc_metrics(page, start, off, count, eof, len);	mlog_exit(ret);	return ret;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91美女在线视频| 亚洲成人黄色影院| 日韩av在线播放中文字幕| 一本一道久久a久久精品综合蜜臀| 亚洲欧洲国产日韩| 在线日韩国产精品| 亚洲国产色一区| 欧美高清hd18日本| 久久国产剧场电影| 国产欧美日本一区视频| 99久久99久久精品国产片果冻| 亚洲激情第一区| 欧美日韩视频一区二区| 裸体在线国模精品偷拍| 久久免费美女视频| av高清不卡在线| 亚洲一区二区三区在线看| 欧美一区在线视频| 国产一区二区三区精品视频| 国产精品久久久久四虎| 欧洲一区二区三区在线| 久久国产精品72免费观看| 国产午夜亚洲精品理论片色戒| 色婷婷亚洲一区二区三区| 日韩高清在线不卡| 欧美系列一区二区| 在线亚洲一区二区| 偷拍一区二区三区四区| 精品久久久久久久久久久久包黑料 | 午夜精品国产更新| 精品美女一区二区| 色综合天天综合网国产成人综合天| 日本伊人午夜精品| 日本一区二区三区高清不卡| 欧美日韩视频在线第一区| 国产福利一区在线| 亚洲一区二区三区四区不卡| 久久先锋影音av鲁色资源网| 在线亚洲人成电影网站色www| 国内欧美视频一区二区| 亚洲精品videosex极品| 国产欧美一区二区精品仙草咪| 欧美日本国产视频| 成人黄色av网站在线| 免费观看一级特黄欧美大片| 亚洲精品日韩一| 国产网红主播福利一区二区| 欧美日本在线播放| 91片在线免费观看| 国产成人午夜精品影院观看视频 | 日韩经典中文字幕一区| 一色屋精品亚洲香蕉网站| 欧美一区二区精美| 一本色道久久综合狠狠躁的推荐| 精品一区二区在线播放| 亚洲一卡二卡三卡四卡无卡久久| 国产精品色在线| 久久亚洲综合色一区二区三区| 欧美亚洲丝袜传媒另类| 成人h动漫精品一区二区| 精品一区二区三区影院在线午夜 | 五月激情综合色| 亚洲欧美日韩国产成人精品影院| 国产蜜臀97一区二区三区 | 国产精品麻豆一区二区| 久久这里只有精品首页| 日韩你懂的在线播放| 欧美日本一区二区三区| 欧美日韩精品一区二区三区| 91啦中文在线观看| 国产成人免费视频网站高清观看视频| 久久国产麻豆精品| 久久精品久久精品| 麻豆精品国产91久久久久久| 奇米影视在线99精品| 日韩福利视频网| 日韩精品成人一区二区在线| 丝袜亚洲精品中文字幕一区| 日日夜夜精品免费视频| 亚洲成av人影院| 三级在线观看一区二区| 日本系列欧美系列| 久久激情综合网| 亚洲精品在线三区| 成人h动漫精品一区二区| 成人爱爱电影网址| 国产美女精品一区二区三区| 国产精品一区不卡| 成人在线视频一区二区| 成人动漫一区二区三区| 色综合天天综合色综合av| 91美女在线观看| 在线观看一区不卡| 欧美视频日韩视频在线观看| 宅男噜噜噜66一区二区66| 欧美日韩免费观看一区三区| 欧美一区二区三级| 久久影院电视剧免费观看| 欧美国产一区视频在线观看| 18成人在线观看| 亚洲成在人线在线播放| 日韩精品成人一区二区三区| 精品亚洲porn| 波多野结衣在线一区| 91福利精品第一导航| 3d动漫精品啪啪1区2区免费 | 欧美一二三四区在线| 欧美va日韩va| 中文字幕在线观看一区二区| 亚洲男女毛片无遮挡| 免费看欧美美女黄的网站| 丁香婷婷深情五月亚洲| 欧洲av一区二区嗯嗯嗯啊| 欧美一级欧美一级在线播放| 国产精品乱子久久久久| 一区二区在线看| 久久国产精品72免费观看| 成人avav在线| 日韩一级免费观看| 最近中文字幕一区二区三区| 日日夜夜精品视频天天综合网| 国产成人自拍在线| 欧美久久久久久久久久| 国产精品日日摸夜夜摸av| 婷婷六月综合网| 成人免费的视频| 欧美成人精品3d动漫h| 亚洲乱码国产乱码精品精98午夜| 久久电影网电视剧免费观看| 色菇凉天天综合网| 99久久精品国产导航| 成人精品免费网站| 91精品国产综合久久香蕉麻豆 | 午夜免费欧美电影| 国产aⅴ综合色| 日韩亚洲欧美一区| 亚洲女人****多毛耸耸8| 极品少妇xxxx精品少妇| 欧美日韩一区二区三区免费看 | 欧美国产欧美综合| 免费观看30秒视频久久| 欧美体内she精高潮| 中文字幕一区在线观看| 国产一区二区三区电影在线观看| 在线综合视频播放| 亚洲日本丝袜连裤袜办公室| 国产精品一区二区在线观看不卡| 欧美一区午夜视频在线观看| 一区二区理论电影在线观看| 国产91丝袜在线18| 精品国产乱码久久久久久久 | 免费成人你懂的| 欧美网站一区二区| 亚洲人成精品久久久久久| 丰满亚洲少妇av| 欧美精品一区二区三区一线天视频| 日韩综合一区二区| 欧美伊人精品成人久久综合97| 亚洲欧美日韩国产综合| www.欧美亚洲| 国产精品久久午夜| 极品销魂美女一区二区三区| 日韩一区二区精品葵司在线| 午夜精品久久久久久久久久| 91久久一区二区| 亚洲在线中文字幕| 欧美综合久久久| 亚洲一区二区三区国产| 91久久香蕉国产日韩欧美9色| 亚洲三级在线免费| 一本一道综合狠狠老| 久久99精品国产麻豆不卡| 欧美四级电影网| 午夜久久久久久| 91麻豆精品国产无毒不卡在线观看| 日本不卡一二三| 精品免费视频.| 国产精品一区免费在线观看| 国产亚洲一区二区在线观看| 成人h精品动漫一区二区三区| 亚洲视频每日更新| 欧美艳星brazzers| 青青草精品视频| 久久久99精品久久| 成人av网址在线| 一区二区在线观看视频| 欧美网站大全在线观看| 日本欧美韩国一区三区| 久久一区二区三区四区| 国产成人亚洲综合a∨猫咪| 国产精品国产三级国产普通话蜜臀| 91蜜桃在线免费视频| 天天影视网天天综合色在线播放| 日韩视频一区二区三区在线播放| 国产资源精品在线观看| 中文字幕一区二区在线播放| 欧美日韩大陆一区二区| 精品系列免费在线观看| 国产精品乱码一区二三区小蝌蚪| 欧美日韩一区二区在线观看视频 |