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

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

?? bb_inode.c

?? busybox是一個集成了一百多個最常用linux命令和工具的軟件,在嵌入式linux應用中,busybox有非常廣的應用。
?? C
字號:
/* vi: set sw=4 ts=4: *//* * bb_inode.c --- routines to update the bad block inode. * * WARNING: This routine modifies a lot of state in the filesystem; if * this routine returns an error, the bad block inode may be in an * inconsistent state. * * Copyright (C) 1994, 1995 Theodore Ts'o. * * %Begin-Header% * This file may be redistributed under the terms of the GNU Public * License. * %End-Header% */#include <stdio.h>#include <string.h>#if HAVE_UNISTD_H#include <unistd.h>#endif#include <fcntl.h>#include <time.h>#if HAVE_SYS_STAT_H#include <sys/stat.h>#endif#if HAVE_SYS_TYPES_H#include <sys/types.h>#endif#include "ext2_fs.h"#include "ext2fs.h"struct set_badblock_record {	ext2_badblocks_iterate	bb_iter;	int		bad_block_count;	blk_t		*ind_blocks;	int		max_ind_blocks;	int		ind_blocks_size;	int		ind_blocks_ptr;	char		*block_buf;	errcode_t	err;};static int set_bad_block_proc(ext2_filsys fs, blk_t *block_nr,			      e2_blkcnt_t blockcnt,			      blk_t ref_block, int ref_offset,			      void *priv_data);static int clear_bad_block_proc(ext2_filsys fs, blk_t *block_nr,				e2_blkcnt_t blockcnt,				blk_t ref_block, int ref_offset,				void *priv_data);/* * Given a bad blocks bitmap, update the bad blocks inode to reflect * the map. */errcode_t ext2fs_update_bb_inode(ext2_filsys fs, ext2_badblocks_list bb_list){	errcode_t			retval;	struct set_badblock_record	rec;	struct ext2_inode		inode;	EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);	if (!fs->block_map)		return EXT2_ET_NO_BLOCK_BITMAP;	rec.bad_block_count = 0;	rec.ind_blocks_size = rec.ind_blocks_ptr = 0;	rec.max_ind_blocks = 10;	retval = ext2fs_get_mem(rec.max_ind_blocks * sizeof(blk_t),				&rec.ind_blocks);	if (retval)		return retval;	memset(rec.ind_blocks, 0, rec.max_ind_blocks * sizeof(blk_t));	retval = ext2fs_get_mem(fs->blocksize, &rec.block_buf);	if (retval)		goto cleanup;	memset(rec.block_buf, 0, fs->blocksize);	rec.err = 0;	/*	 * First clear the old bad blocks (while saving the indirect blocks)	 */	retval = ext2fs_block_iterate2(fs, EXT2_BAD_INO,				       BLOCK_FLAG_DEPTH_TRAVERSE, 0,				       clear_bad_block_proc, &rec);	if (retval)		goto cleanup;	if (rec.err) {		retval = rec.err;		goto cleanup;	}	/*	 * Now set the bad blocks!	 *	 * First, mark the bad blocks as used.  This prevents a bad	 * block from being used as an indirecto block for the bad	 * block inode (!).	 */	if (bb_list) {		retval = ext2fs_badblocks_list_iterate_begin(bb_list,							     &rec.bb_iter);		if (retval)			goto cleanup;		retval = ext2fs_block_iterate2(fs, EXT2_BAD_INO,					       BLOCK_FLAG_APPEND, 0,					       set_bad_block_proc, &rec);		ext2fs_badblocks_list_iterate_end(rec.bb_iter);		if (retval)			goto cleanup;		if (rec.err) {			retval = rec.err;			goto cleanup;		}	}	/*	 * Update the bad block inode's mod time and block count	 * field.	 */	retval = ext2fs_read_inode(fs, EXT2_BAD_INO, &inode);	if (retval)		goto cleanup;	inode.i_atime = inode.i_mtime = time(0);	if (!inode.i_ctime)		inode.i_ctime = time(0);	inode.i_blocks = rec.bad_block_count * (fs->blocksize / 512);	inode.i_size = rec.bad_block_count * fs->blocksize;	retval = ext2fs_write_inode(fs, EXT2_BAD_INO, &inode);	if (retval)		goto cleanup;cleanup:	ext2fs_free_mem(&rec.ind_blocks);	ext2fs_free_mem(&rec.block_buf);	return retval;}/* * Helper function for update_bb_inode() * * Clear the bad blocks in the bad block inode, while saving the * indirect blocks. */#ifdef __TURBOC__# pragma argsused#endifstatic int clear_bad_block_proc(ext2_filsys fs, blk_t *block_nr,				e2_blkcnt_t blockcnt,				blk_t ref_block EXT2FS_ATTR((unused)),				int ref_offset EXT2FS_ATTR((unused)),				void *priv_data){	struct set_badblock_record *rec = (struct set_badblock_record *)		priv_data;	errcode_t	retval;	unsigned long	old_size;	if (!*block_nr)		return 0;	/*	 * If the block number is outrageous, clear it and ignore it.	 */	if (*block_nr >= fs->super->s_blocks_count ||	    *block_nr < fs->super->s_first_data_block) {		*block_nr = 0;		return BLOCK_CHANGED;	}	if (blockcnt < 0) {		if (rec->ind_blocks_size >= rec->max_ind_blocks) {			old_size = rec->max_ind_blocks * sizeof(blk_t);			rec->max_ind_blocks += 10;			retval = ext2fs_resize_mem(old_size,				   rec->max_ind_blocks * sizeof(blk_t),				   &rec->ind_blocks);			if (retval) {				rec->max_ind_blocks -= 10;				rec->err = retval;				return BLOCK_ABORT;			}		}		rec->ind_blocks[rec->ind_blocks_size++] = *block_nr;	}	/*	 * Mark the block as unused, and update accounting information	 */	ext2fs_block_alloc_stats(fs, *block_nr, -1);	*block_nr = 0;	return BLOCK_CHANGED;}/* * Helper function for update_bb_inode() * * Set the block list in the bad block inode, using the supplied bitmap. */#ifdef __TURBOC__ #pragma argsused#endifstatic int set_bad_block_proc(ext2_filsys fs, blk_t *block_nr,			      e2_blkcnt_t blockcnt,			      blk_t ref_block EXT2FS_ATTR((unused)),			      int ref_offset EXT2FS_ATTR((unused)),			      void *priv_data){	struct set_badblock_record *rec = (struct set_badblock_record *)		priv_data;	errcode_t	retval;	blk_t		blk;	if (blockcnt >= 0) {		/*		 * Get the next bad block.		 */		if (!ext2fs_badblocks_list_iterate(rec->bb_iter, &blk))			return BLOCK_ABORT;		rec->bad_block_count++;	} else {		/*		 * An indirect block; fetch a block from the		 * previously used indirect block list.  The block		 * most be not marked as used; if so, get another one.		 * If we run out of reserved indirect blocks, allocate		 * a new one.		 */	retry:		if (rec->ind_blocks_ptr < rec->ind_blocks_size) {			blk = rec->ind_blocks[rec->ind_blocks_ptr++];			if (ext2fs_test_block_bitmap(fs->block_map, blk))				goto retry;		} else {			retval = ext2fs_new_block(fs, 0, 0, &blk);			if (retval) {				rec->err = retval;				return BLOCK_ABORT;			}		}		retval = io_channel_write_blk(fs->io, blk, 1, rec->block_buf);		if (retval) {			rec->err = retval;			return BLOCK_ABORT;		}	}	/*	 * Update block counts	 */	ext2fs_block_alloc_stats(fs, blk, +1);	*block_nr = blk;	return BLOCK_CHANGED;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品一区二区www | 人人精品人人爱| 国产情人综合久久777777| 欧美日韩国产电影| 91免费看片在线观看| 国模冰冰炮一区二区| 亚洲一区二区三区视频在线播放 | 国产在线播放一区三区四| 亚洲一区二区三区在线播放| 久久亚洲综合色一区二区三区| 欧美日韩久久一区二区| 色综合天天性综合| 国产成人高清视频| 国产不卡在线视频| www.av精品| 欧美性感一区二区三区| 91精品国产福利| 精品第一国产综合精品aⅴ| 久久久久久久久久久久久久久99 | 日韩在线播放一区二区| 蜜臀av一区二区三区| 久久99国产精品麻豆| 国产成人av电影在线播放| 91在线高清观看| 欧美精选一区二区| 国产视频视频一区| 一区二区三区 在线观看视频| 午夜精彩视频在线观看不卡| 国产综合久久久久久久久久久久| 不卡av电影在线播放| 欧美日韩综合一区| 久久亚洲一区二区三区四区| 中文字幕在线视频一区| 亚洲va中文字幕| 成人免费观看av| 欧美视频中文一区二区三区在线观看| 91精品在线免费| 中文字幕不卡在线播放| 日韩中文字幕不卡| 成人91在线观看| 日韩亚洲欧美中文三级| 中文字幕制服丝袜成人av | 欧美激情在线观看视频免费| 一区二区视频在线看| 韩国在线一区二区| 欧美日韩你懂的| 亚洲欧美综合另类在线卡通| 日韩二区三区四区| 在线这里只有精品| 日本一区二区三区电影| 日本午夜精品视频在线观看| 91在线观看成人| 国产精品蜜臀av| 国内精品伊人久久久久影院对白| 色婷婷综合久久久中文一区二区 | 91在线观看美女| 日本一区二区三区高清不卡| 蜜臀av一区二区| 日韩午夜精品视频| 亚洲va欧美va人人爽午夜| 91理论电影在线观看| 欧美国产成人精品| 国产精品一区二区黑丝| 欧美电影免费观看高清完整版在线观看| 一区二区不卡在线视频 午夜欧美不卡在 | caoporn国产一区二区| 久久久久久久精| 精品一区二区三区视频在线观看 | 91成人免费电影| 最新日韩在线视频| 成人污污视频在线观看| 久久精品欧美一区二区三区不卡| 日本亚洲一区二区| 日韩午夜电影在线观看| 三级欧美韩日大片在线看| 欧美婷婷六月丁香综合色| 一区二区三区在线免费播放| 91美女福利视频| 亚洲欧美日韩系列| 日本久久一区二区三区| 一区二区成人在线视频| 欧亚一区二区三区| 亚洲福利一区二区三区| 欧美伦理影视网| 天堂久久久久va久久久久| 欧美久久一区二区| 美女视频黄久久| 久久久综合九色合综国产精品| 久久 天天综合| 国产三级久久久| 91视频观看免费| 视频一区二区三区中文字幕| 精品欧美一区二区在线观看| 国产宾馆实践打屁股91| 亚洲视频中文字幕| 在线免费不卡视频| 蜜桃视频免费观看一区| 中文字幕免费不卡| 91看片淫黄大片一级在线观看| 亚洲午夜精品一区二区三区他趣| 91精品婷婷国产综合久久性色| 韩国女主播一区| 亚洲欧洲综合另类| 精品日韩一区二区三区| 成人午夜伦理影院| 午夜私人影院久久久久| 久久亚洲欧美国产精品乐播| 一本大道久久a久久综合婷婷| 亚洲成人在线观看视频| 欧美va在线播放| 91视视频在线观看入口直接观看www | 国产亚洲精品7777| 色婷婷av一区二区三区软件| 免费观看日韩av| 亚洲视频一区二区在线| 日韩午夜在线观看视频| 不卡av电影在线播放| 免费在线观看视频一区| 国产精品成人免费在线| 精品欧美一区二区三区精品久久 | 欧美一区在线视频| 9色porny自拍视频一区二区| 日本欧美一区二区三区乱码 | 欧美日韩一级视频| 国产乱理伦片在线观看夜一区| 亚洲精品高清在线| 久久久综合精品| 欧美精品vⅰdeose4hd| caoporen国产精品视频| 久久99久久99小草精品免视看| 一二三区精品福利视频| 国产精品免费视频网站| 久久久不卡网国产精品二区| 欧美一区二区私人影院日本| 色香蕉久久蜜桃| a美女胸又www黄视频久久| 国产精品影视在线观看| 日韩黄色免费网站| 三级不卡在线观看| 亚洲中国最大av网站| 国产精品国产三级国产| 久久精品人人做| 久久久综合视频| 国产午夜精品美女毛片视频| 精品久久99ma| 日韩欧美激情四射| 欧美一卡二卡在线| 91精品国产乱码| 91精品在线免费观看| 欧美一区二区成人| 91精品国产色综合久久不卡电影| 在线免费观看日本一区| 在线观看不卡一区| 欧美日韩美少妇| 制服视频三区第一页精品| 欧美一卡在线观看| 精品久久人人做人人爰| 26uuu国产在线精品一区二区| 日韩一区二区在线看| 精品区一区二区| 久久久久国产精品厨房| 国产精品美女久久福利网站| 国产精品成人免费在线| 亚洲六月丁香色婷婷综合久久| 一区二区三区高清| 五月婷婷色综合| 久久精品国产999大香线蕉| 国产呦萝稀缺另类资源| 成人小视频免费观看| 91国偷自产一区二区三区观看| 欧美日韩精品一区二区在线播放| 8x8x8国产精品| 久久久www成人免费无遮挡大片| 国产精品天干天干在观线| 亚洲一线二线三线视频| 日本系列欧美系列| 懂色av一区二区在线播放| 色一情一伦一子一伦一区| 制服丝袜在线91| 中文在线免费一区三区高中清不卡| 亚洲人成人一区二区在线观看| 爽爽淫人综合网网站| 国产伦精一区二区三区| 99久久婷婷国产综合精品电影| 欧美色网站导航| 精品成人一区二区三区四区| 国产精品久久久久桃色tv| 日日夜夜精品视频免费 | 国产精品灌醉下药二区| 日韩女优视频免费观看| 国产毛片精品国产一区二区三区| 国产高清亚洲一区| 91久久久免费一区二区| 日韩一区二区免费电影| 亚洲欧洲国产日本综合| 日本午夜一本久久久综合| 99久久免费精品| 久久网这里都是精品| 婷婷一区二区三区| 99riav久久精品riav|