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

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

?? truncate.c

?? LINUX1.0源代碼,代碼條理清晰
?? C
字號:
/*
 *  linux/fs/truncate.c
 *
 *  Copyright (C) 1991, 1992  Linus Torvalds
 */

#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/minix_fs.h>
#include <linux/stat.h>
#include <linux/fcntl.h>

/*
 * Truncate has the most races in the whole filesystem: coding it is
 * a pain in the a**. Especially as I don't do any locking...
 *
 * The code may look a bit weird, but that's just because I've tried to
 * handle things like file-size changes in a somewhat graceful manner.
 * Anyway, truncating a file at the same time somebody else writes to it
 * is likely to result in pretty weird behaviour...
 *
 * The new code handles normal truncates (size = 0) as well as the more
 * general case (size = XXX). I hope.
 */

static int trunc_direct(struct inode * inode)
{
	unsigned short * p;
	struct buffer_head * bh;
	int i, tmp;
	int retry = 0;
#define DIRECT_BLOCK ((inode->i_size + 1023) >> 10)

repeat:
	for (i = DIRECT_BLOCK ; i < 7 ; i++) {
		p = i + inode->u.minix_i.i_data;
		if (!(tmp = *p))
			continue;
		bh = get_hash_table(inode->i_dev,tmp,BLOCK_SIZE);
		if (i < DIRECT_BLOCK) {
			brelse(bh);
			goto repeat;
		}
		if ((bh && bh->b_count != 1) || tmp != *p) {
			retry = 1;
			brelse(bh);
			continue;
		}
		*p = 0;
		inode->i_dirt = 1;
		brelse(bh);
		minix_free_block(inode->i_sb,tmp);
	}
	return retry;
}

static int trunc_indirect(struct inode * inode, int offset, unsigned short * p)
{
	struct buffer_head * bh;
	int i, tmp;
	struct buffer_head * ind_bh;
	unsigned short * ind;
	int retry = 0;
#define INDIRECT_BLOCK (DIRECT_BLOCK-offset)

	tmp = *p;
	if (!tmp)
		return 0;
	ind_bh = bread(inode->i_dev, tmp, BLOCK_SIZE);
	if (tmp != *p) {
		brelse(ind_bh);
		return 1;
	}
	if (!ind_bh) {
		*p = 0;
		return 0;
	}
repeat:
	for (i = INDIRECT_BLOCK ; i < 512 ; i++) {
		if (i < 0)
			i = 0;
		if (i < INDIRECT_BLOCK)
			goto repeat;
		ind = i+(unsigned short *) ind_bh->b_data;
		tmp = *ind;
		if (!tmp)
			continue;
		bh = get_hash_table(inode->i_dev,tmp,BLOCK_SIZE);
		if (i < INDIRECT_BLOCK) {
			brelse(bh);
			goto repeat;
		}
		if ((bh && bh->b_count != 1) || tmp != *ind) {
			retry = 1;
			brelse(bh);
			continue;
		}
		*ind = 0;
		ind_bh->b_dirt = 1;
		brelse(bh);
		minix_free_block(inode->i_sb,tmp);
	}
	ind = (unsigned short *) ind_bh->b_data;
	for (i = 0; i < 512; i++)
		if (*(ind++))
			break;
	if (i >= 512)
		if (ind_bh->b_count != 1)
			retry = 1;
		else {
			tmp = *p;
			*p = 0;
			minix_free_block(inode->i_sb,tmp);
		}
	brelse(ind_bh);
	return retry;
}
		
static int trunc_dindirect(struct inode * inode)
{
	int i, tmp;
	struct buffer_head * dind_bh;
	unsigned short * dind, * p;
	int retry = 0;
#define DINDIRECT_BLOCK ((DIRECT_BLOCK-(512+7))>>9)

	p = 8 + inode->u.minix_i.i_data;
	if (!(tmp = *p))
		return 0;
	dind_bh = bread(inode->i_dev, tmp, BLOCK_SIZE);
	if (tmp != *p) {
		brelse(dind_bh);
		return 1;
	}
	if (!dind_bh) {
		*p = 0;
		return 0;
	}
repeat:
	for (i = DINDIRECT_BLOCK ; i < 512 ; i ++) {
		if (i < 0)
			i = 0;
		if (i < DINDIRECT_BLOCK)
			goto repeat;
		dind = i+(unsigned short *) dind_bh->b_data;
		retry |= trunc_indirect(inode,7+512+(i<<9),dind);
		dind_bh->b_dirt = 1;
	}
	dind = (unsigned short *) dind_bh->b_data;
	for (i = 0; i < 512; i++)
		if (*(dind++))
			break;
	if (i >= 512)
		if (dind_bh->b_count != 1)
			retry = 1;
		else {
			tmp = *p;
			*p = 0;
			inode->i_dirt = 1;
			minix_free_block(inode->i_sb,tmp);
		}
	brelse(dind_bh);
	return retry;
}
		
void minix_truncate(struct inode * inode)
{
	int retry;

	if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) ||
	     S_ISLNK(inode->i_mode)))
		return;
	while (1) {
		retry = trunc_direct(inode);
		retry |= trunc_indirect(inode,7,inode->u.minix_i.i_data+7);
		retry |= trunc_dindirect(inode);
		if (!retry)
			break;
		current->counter = 0;
		schedule();
	}
	inode->i_mtime = inode->i_ctime = CURRENT_TIME;
	inode->i_dirt = 1;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人激情开心网| 精品av久久707| 亚洲国产精品久久一线不卡| 综合电影一区二区三区| 成人性视频免费网站| 99国产精品久久久| 日本欧美久久久久免费播放网| 日韩一区二区三区视频在线观看| 欧美第一区第二区| 综合久久久久久久| 日韩av在线播放中文字幕| 国产视频一区二区在线观看| 欧美艳星brazzers| 精品欧美一区二区在线观看| 中文字幕二三区不卡| 日韩小视频在线观看专区| 国产欧美日韩一区二区三区在线观看| 国产欧美日产一区| 蜜桃久久精品一区二区| 91在线国内视频| 久久综合丝袜日本网| 日韩影院在线观看| 亚洲一区在线观看网站| 亚洲欧美影音先锋| 欧美激情在线看| 国产精品久久一级| 极品美女销魂一区二区三区| 视频一区中文字幕| 91黄色在线观看| 欧洲av一区二区嗯嗯嗯啊| 成人激情黄色小说| 欧美经典一区二区三区| 久久综合成人精品亚洲另类欧美| 亚洲观看高清完整版在线观看 | 国产福利精品导航| 欧美人牲a欧美精品| 中文字幕免费不卡| 9色porny自拍视频一区二区| 日韩久久一区二区| 99精品偷自拍| 一区二区欧美国产| 欧美亚洲日本国产| 91精品国产综合久久久蜜臀粉嫩| 日韩一级大片在线观看| 久久九九久久九九| 成人黄色av电影| 7777女厕盗摄久久久| 蜜臀国产一区二区三区在线播放| 56国语精品自产拍在线观看| 精品一区二区三区的国产在线播放| 国产精品18久久久久| 欧美性感一区二区三区| 久久精品国产亚洲高清剧情介绍 | 北岛玲一区二区三区四区| 欧美中文字幕亚洲一区二区va在线| 国产蜜臀av在线一区二区三区| 美国av一区二区| 久久精品亚洲精品国产欧美kt∨ | 美女精品自拍一二三四| 国产一区二区不卡老阿姨| 久久精品欧美日韩| 丁香天五香天堂综合| 亚洲午夜羞羞片| 日韩中文字幕91| 欧美性色aⅴ视频一区日韩精品| 一区二区三区视频在线观看| 在线观看精品一区| 精品日韩一区二区三区| 国产成人亚洲综合a∨婷婷| 亚洲精品ww久久久久久p站| 色网综合在线观看| 亚洲一级二级三级在线免费观看| 国产日韩精品视频一区| 欧美一级生活片| 亚洲精品一线二线三线| 欧美一级艳片视频免费观看| 欧美成人精精品一区二区频| 狂野欧美性猛交blacked| 亚洲欧美综合网| 久久精品国产色蜜蜜麻豆| 亚洲中国最大av网站| 亚洲乱码精品一二三四区日韩在线 | 久久久天堂av| 亚洲国产日韩综合久久精品| 欧美性欧美巨大黑白大战| 青青草91视频| 欧美日韩三级在线| 色哟哟国产精品| 国产亚洲人成网站| 综合自拍亚洲综合图不卡区| 91丨九色丨蝌蚪丨老版| 中文字幕av免费专区久久| 99视频在线精品| 成人国产精品免费| 久久久久久亚洲综合| 在线观看三级视频欧美| 亚洲精品一二三四区| 国产不卡高清在线观看视频| 日本欧美一区二区三区乱码 | 国产99久久久国产精品免费看| 91黄色免费看| 天使萌一区二区三区免费观看| 欧美一区二区女人| 欧美久久婷婷综合色| 欧美肥胖老妇做爰| 成人小视频在线观看| 亚洲夂夂婷婷色拍ww47 | 亚洲精品成人天堂一二三| 国产精品麻豆视频| 久久精品国产99| 欧美一区二区女人| 欧美一级二级三级乱码| 欧美视频在线不卡| 亚洲私人黄色宅男| 久88久久88久久久| 久久精品人人爽人人爽| 亚洲视频一二三区| 精品一区二区三区视频在线观看| 婷婷开心激情综合| 99综合电影在线视频| 国产米奇在线777精品观看| 一级特黄大欧美久久久| 久久精品水蜜桃av综合天堂| 91精品国产黑色紧身裤美女| 国产三级精品三级在线专区| 欧美日韩电影在线| 久久夜色精品国产欧美乱极品| 豆国产96在线|亚洲| 国产露脸91国语对白| 欧美色图在线观看| 久久精品视频在线免费观看| 国产日产精品一区| 久久99久久久久| 精品电影一区二区| 国产亚洲精品超碰| 激情综合一区二区三区| 国产激情视频一区二区三区欧美 | av在线播放一区二区三区| 精品国产免费人成在线观看| 欧美精品亚洲一区二区在线播放| 亚洲一区二区在线免费看| 97久久精品人人做人人爽| 国产精品午夜春色av| 亚洲国产高清在线观看视频| 国产精品 欧美精品| 国产欧美综合在线观看第十页 | 国产精品影视网| 99久久精品免费看国产| 91久久国产综合久久| 亚洲国产综合91精品麻豆| 日本成人在线一区| 粉嫩av一区二区三区| 99精品欧美一区| 日韩色视频在线观看| www一区二区| 亚洲综合清纯丝袜自拍| 久久国产综合精品| 亚洲视频在线一区二区| 制服丝袜中文字幕一区| 国产黄人亚洲片| 亚洲午夜一区二区| 亚洲国产高清不卡| 欧美日韩免费电影| www.成人网.com| 欧美精品一区二区三区蜜桃| 91浏览器打开| 国产91精品精华液一区二区三区 | 欧美人与z0zoxxxx视频| 久久国产人妖系列| 亚洲女同ⅹxx女同tv| 欧美一区二区不卡视频| 欧美三级欧美一级| 色诱亚洲精品久久久久久| 日本一区二区三区高清不卡| 日韩免费视频线观看| 久久国产生活片100| 亚洲精品v日韩精品| 一本久久a久久免费精品不卡| 国产成人免费高清| 久久精品人人做| 成人免费看黄yyy456| 久久久国产精品午夜一区ai换脸| 岛国一区二区三区| 亚洲综合视频在线| 久久综合丝袜日本网| 国产精品天天看| 午夜a成v人精品| 国产大陆精品国产| 91麻豆免费观看| 欧美一级在线视频| 亚洲天堂福利av| 麻豆中文一区二区| 99久久国产免费看| 欧美一区二区在线播放| 国产精品三级av在线播放| 午夜精品久久久久影视| 国产一区视频在线看| 婷婷综合另类小说色区| 久久精品国产99久久6| 欧美色精品天天在线观看视频|