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

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

?? util.c

?? UnixBSD、SunOs、FreeBSD、NetBSD、OpenBSD和NeXTStep文件系統源代碼
?? C
字號:
/* *  linux/fs/ufs/util.c * * Copyright (C) 1998 * Daniel Pirkl <daniel.pirkl@email.cz> * Charles University, Faculty of Mathematics and Physics */ #include <linux/string.h>#include <linux/slab.h>#include <linux/buffer_head.h>#include "ufs_fs.h"#include "ufs.h"#include "swab.h"#include "util.h"struct ufs_buffer_head * _ubh_bread_ (struct ufs_sb_private_info * uspi,	struct super_block *sb, u64 fragment, u64 size){	struct ufs_buffer_head * ubh;	unsigned i, j ;	u64  count = 0;	if (size & ~uspi->s_fmask)		return NULL;	count = size >> uspi->s_fshift;	if (count > UFS_MAXFRAG)		return NULL;	ubh = (struct ufs_buffer_head *)		kmalloc (sizeof (struct ufs_buffer_head), GFP_KERNEL);	if (!ubh)		return NULL;	ubh->fragment = fragment;	ubh->count = count;	for (i = 0; i < count; i++)		if (!(ubh->bh[i] = sb_bread(sb, fragment + i)))			goto failed;	for (; i < UFS_MAXFRAG; i++)		ubh->bh[i] = NULL;	return ubh;failed:	for (j = 0; j < i; j++)		brelse (ubh->bh[j]);	kfree(ubh);	return NULL;}struct ufs_buffer_head * ubh_bread_uspi (struct ufs_sb_private_info * uspi,	struct super_block *sb, u64 fragment, u64 size){	unsigned i, j;	u64 count = 0;	if (size & ~uspi->s_fmask)		return NULL;	count = size >> uspi->s_fshift;	if (count <= 0 || count > UFS_MAXFRAG)		return NULL;	USPI_UBH(uspi)->fragment = fragment;	USPI_UBH(uspi)->count = count;	for (i = 0; i < count; i++)		if (!(USPI_UBH(uspi)->bh[i] = sb_bread(sb, fragment + i)))			goto failed;	for (; i < UFS_MAXFRAG; i++)		USPI_UBH(uspi)->bh[i] = NULL;	return USPI_UBH(uspi);failed:	for (j = 0; j < i; j++)		brelse (USPI_UBH(uspi)->bh[j]);	return NULL;}void ubh_brelse (struct ufs_buffer_head * ubh){	unsigned i;	if (!ubh)		return;	for (i = 0; i < ubh->count; i++)		brelse (ubh->bh[i]);	kfree (ubh);}void ubh_brelse_uspi (struct ufs_sb_private_info * uspi){	unsigned i;	if (!USPI_UBH(uspi))		return;	for ( i = 0; i < USPI_UBH(uspi)->count; i++ ) {		brelse (USPI_UBH(uspi)->bh[i]);		USPI_UBH(uspi)->bh[i] = NULL;	}}void ubh_mark_buffer_dirty (struct ufs_buffer_head * ubh){	unsigned i;	if (!ubh)		return;	for ( i = 0; i < ubh->count; i++ )		mark_buffer_dirty (ubh->bh[i]);}void ubh_mark_buffer_uptodate (struct ufs_buffer_head * ubh, int flag){	unsigned i;	if (!ubh)		return;	if (flag) {		for ( i = 0; i < ubh->count; i++ )			set_buffer_uptodate (ubh->bh[i]);	} else {		for ( i = 0; i < ubh->count; i++ )			clear_buffer_uptodate (ubh->bh[i]);	}}void ubh_ll_rw_block(int rw, struct ufs_buffer_head *ubh){	if (!ubh)		return;	ll_rw_block(rw, ubh->count, ubh->bh);}void ubh_wait_on_buffer (struct ufs_buffer_head * ubh){	unsigned i;	if (!ubh)		return;	for ( i = 0; i < ubh->count; i++ )		wait_on_buffer (ubh->bh[i]);}void ubh_bforget (struct ufs_buffer_head * ubh){	unsigned i;	if (!ubh) 		return;	for ( i = 0; i < ubh->count; i++ ) if ( ubh->bh[i] ) 		bforget (ubh->bh[i]);} int ubh_buffer_dirty (struct ufs_buffer_head * ubh){	unsigned i;	unsigned result = 0;	if (!ubh)		return 0;	for ( i = 0; i < ubh->count; i++ )		result |= buffer_dirty(ubh->bh[i]);	return result;}void _ubh_ubhcpymem_(struct ufs_sb_private_info * uspi, 	unsigned char * mem, struct ufs_buffer_head * ubh, unsigned size){	unsigned len, bhno;	if (size > (ubh->count << uspi->s_fshift))		size = ubh->count << uspi->s_fshift;	bhno = 0;	while (size) {		len = min_t(unsigned int, size, uspi->s_fsize);		memcpy (mem, ubh->bh[bhno]->b_data, len);		mem += uspi->s_fsize;		size -= len;		bhno++;	}}void _ubh_memcpyubh_(struct ufs_sb_private_info * uspi, 	struct ufs_buffer_head * ubh, unsigned char * mem, unsigned size){	unsigned len, bhno;	if (size > (ubh->count << uspi->s_fshift))		size = ubh->count << uspi->s_fshift;	bhno = 0;	while (size) {		len = min_t(unsigned int, size, uspi->s_fsize);		memcpy (ubh->bh[bhno]->b_data, mem, len);		mem += uspi->s_fsize;		size -= len;		bhno++;	}}dev_tufs_get_inode_dev(struct super_block *sb, struct ufs_inode_info *ufsi){	__u32 fs32;	dev_t dev;	if ((UFS_SB(sb)->s_flags & UFS_ST_MASK) == UFS_ST_SUNx86)		fs32 = fs32_to_cpu(sb, ufsi->i_u1.i_data[1]);	else		fs32 = fs32_to_cpu(sb, ufsi->i_u1.i_data[0]);	switch (UFS_SB(sb)->s_flags & UFS_ST_MASK) {	case UFS_ST_SUNx86:	case UFS_ST_SUN:		if ((fs32 & 0xffff0000) == 0 ||		    (fs32 & 0xffff0000) == 0xffff0000)			dev = old_decode_dev(fs32 & 0x7fff);		else			dev = MKDEV(sysv_major(fs32), sysv_minor(fs32));		break;	default:		dev = old_decode_dev(fs32);		break;	}	return dev;}voidufs_set_inode_dev(struct super_block *sb, struct ufs_inode_info *ufsi, dev_t dev){	__u32 fs32;	switch (UFS_SB(sb)->s_flags & UFS_ST_MASK) {	case UFS_ST_SUNx86:	case UFS_ST_SUN:		fs32 = sysv_encode_dev(dev);		if ((fs32 & 0xffff8000) == 0) {			fs32 = old_encode_dev(dev);		}		break;	default:		fs32 = old_encode_dev(dev);		break;	}	if ((UFS_SB(sb)->s_flags & UFS_ST_MASK) == UFS_ST_SUNx86)		ufsi->i_u1.i_data[1] = cpu_to_fs32(sb, fs32);	else		ufsi->i_u1.i_data[0] = cpu_to_fs32(sb, fs32);}/** * ufs_get_locked_page() - locate, pin and lock a pagecache page, if not exist * read it from disk. * @mapping: the address_space to search * @index: the page index * * Locates the desired pagecache page, if not exist we'll read it, * locks it, increments its reference * count and returns its address. * */struct page *ufs_get_locked_page(struct address_space *mapping,				 pgoff_t index){	struct page *page;	page = find_lock_page(mapping, index);	if (!page) {		page = read_mapping_page(mapping, index, NULL);		if (IS_ERR(page)) {			printk(KERN_ERR "ufs_change_blocknr: "			       "read_mapping_page error: ino %lu, index: %lu\n",			       mapping->host->i_ino, index);			goto out;		}		lock_page(page);		if (unlikely(page->mapping == NULL)) {			/* Truncate got there first */			unlock_page(page);			page_cache_release(page);			page = NULL;			goto out;		}		if (!PageUptodate(page) || PageError(page)) {			unlock_page(page);			page_cache_release(page);			printk(KERN_ERR "ufs_change_blocknr: "			       "can not read page: ino %lu, index: %lu\n",			       mapping->host->i_ino, index);			page = ERR_PTR(-EIO);		}	}out:	return page;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日产欧美一区二区三区 | 欧美xxxx老人做受| 99re这里只有精品首页| 国产在线一区观看| 韩国av一区二区| 国产一区二区不卡在线| 蜜臀av一区二区三区| 日本麻豆一区二区三区视频| 美国十次了思思久久精品导航| 日韩av不卡在线观看| 久久国产精品99久久久久久老狼| 青青草国产成人99久久| 另类小说欧美激情| 国产一区二区看久久| 国产不卡免费视频| 91伊人久久大香线蕉| 在线亚洲一区二区| 欧美另类z0zxhd电影| 日韩欧美的一区二区| xf在线a精品一区二区视频网站| 久久综合五月天婷婷伊人| 国产日韩欧美一区二区三区乱码 | 丁香天五香天堂综合| 国产伦精品一区二区三区视频青涩| 国产九九视频一区二区三区| 高清shemale亚洲人妖| 91捆绑美女网站| 欧美日本乱大交xxxxx| 精品成人在线观看| 国产女同性恋一区二区| 亚洲精品乱码久久久久久黑人| 亚洲国产精品天堂| 国产精品一区二区黑丝| 91免费在线看| 日韩视频一区二区在线观看| 欧美国产在线观看| 亚洲成人av一区二区| 国产精品亚洲一区二区三区在线 | 精品日韩在线一区| 国产精品午夜久久| 亚洲二区在线视频| 丰满亚洲少妇av| 欧美私模裸体表演在线观看| 精品国产123| 亚洲精品欧美综合四区| 国产在线国偷精品免费看| 色婷婷久久久久swag精品| 日韩你懂的在线播放| 一区二区三区在线高清| 国产精品一品视频| 欧美一区二区三区成人| 一区二区三区欧美亚洲| 国产乱码字幕精品高清av| 欧美日韩一卡二卡| 1000精品久久久久久久久| 激情欧美一区二区三区在线观看| 91在线精品一区二区三区| 久久亚洲一级片| 免费欧美日韩国产三级电影| 在线视频一区二区免费| 国产精品水嫩水嫩| 精品无人码麻豆乱码1区2区 | 亚洲欧美国产77777| 久久国产精品72免费观看| 欧美精品一卡两卡| 亚洲综合无码一区二区| 99国产精品视频免费观看| 欧美变态tickle挠乳网站| 午夜伦欧美伦电影理论片| 在线一区二区三区四区五区| 亚洲欧美中日韩| 懂色av一区二区夜夜嗨| 国产日韩欧美一区二区三区综合| 久久国产成人午夜av影院| 欧美二区三区的天堂| 污片在线观看一区二区| 欧美揉bbbbb揉bbbbb| 性做久久久久久| 欧美丰满少妇xxxxx高潮对白| 亚洲国产欧美日韩另类综合| 在线观看免费亚洲| 亚洲激情中文1区| 在线观看成人小视频| 亚洲精品v日韩精品| 欧美视频三区在线播放| 午夜成人在线视频| 欧美一区二区成人6969| 久久99国产精品免费网站| 日韩欧美国产一二三区| 国产一区二区三区久久久| 2024国产精品| 99热这里都是精品| 一区二区三区高清不卡| 欧美日韩一区久久| 青娱乐精品视频| 国产亚洲婷婷免费| 色视频一区二区| 日韩av在线播放中文字幕| 日韩精品一区二区三区老鸭窝 | 成人黄页毛片网站| 亚洲日本护士毛茸茸| 欧美私模裸体表演在线观看| 日韩成人av影视| 欧美国产丝袜视频| 欧美伊人精品成人久久综合97| 亚洲成人一区二区在线观看| 精品福利一二区| 在线亚洲人成电影网站色www| 日日夜夜精品视频天天综合网| 欧美成人video| av电影在线观看不卡| 日韩国产精品久久久久久亚洲| 久久久久国产一区二区三区四区| 成人黄色一级视频| 蜜桃av一区二区三区电影| 国产日韩欧美亚洲| 91精品中文字幕一区二区三区| 国产福利精品导航| 午夜精品一区二区三区电影天堂| 欧美精品一区二区久久久| 色婷婷av久久久久久久| 国产福利一区在线观看| 午夜激情一区二区三区| 亚洲欧洲精品天堂一级| 精品日本一线二线三线不卡| 91福利在线看| 成人激情校园春色| 黄色日韩三级电影| 丝袜亚洲另类欧美| 亚洲女子a中天字幕| 国产视频在线观看一区二区三区 | 国产乱子伦视频一区二区三区 | 寂寞少妇一区二区三区| 一区二区三区四区亚洲| 国产日韩欧美亚洲| www国产成人免费观看视频 深夜成人网| 99精品久久99久久久久| 国产夫妻精品视频| 久99久精品视频免费观看| 亚洲成精国产精品女| 亚洲欧洲色图综合| 国产精品网站在线播放| 久久久亚洲精品石原莉奈| 日韩亚洲欧美一区二区三区| 欧美日韩国产免费一区二区 | 蜜臀精品一区二区三区在线观看| 中文字幕在线观看一区| 久久综合久久综合久久| 欧美成人三级电影在线| 日韩午夜电影在线观看| 777午夜精品免费视频| 欧美人与性动xxxx| 欧美视频三区在线播放| 欧美影院一区二区| 欧美色手机在线观看| 在线精品国精品国产尤物884a| 99久久精品国产观看| 成人av网址在线| jlzzjlzz国产精品久久| 一本到高清视频免费精品| 91美女在线观看| 在线观看不卡一区| 91麻豆精品国产91久久久资源速度| 欧美性受xxxx| 欧美丰满一区二区免费视频| 日韩一区二区免费电影| 26uuu亚洲| 国产精品日韩成人| 一区二区三区在线视频免费观看| 一区二区三区视频在线看| 亚洲久草在线视频| 亚洲v日本v欧美v久久精品| 蜜桃精品视频在线观看| 国产一区二区精品久久99| 成人性视频网站| 91久久精品国产91性色tv| 91麻豆精品国产自产在线观看一区| 日韩精品一区二区三区四区| 日本一区二区动态图| 亚洲综合一区二区三区| 久久精品国产精品亚洲红杏| 国产福利精品一区二区| 色av成人天堂桃色av| 欧美一级片在线观看| 久久精品一区二区| 一级精品视频在线观看宜春院 | 欧美精品一区二区三区很污很色的| 久久综合九色综合欧美98| 亚洲欧美在线视频| 蜜桃一区二区三区在线| 99久久99久久精品国产片果冻| 欧美日韩中文国产| 久久中文字幕电影| 亚洲激情网站免费观看| 久久精品99国产精品| av毛片久久久久**hd| 欧美xxxxxxxx| 亚洲国产精品一区二区久久恐怖片 | 日韩视频永久免费| 亚洲天堂成人网|