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

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

?? store_io_ufs.c

?? 代理服務器 squid-2.6.STABLE16
?? C
字號:
/* * $Id: store_io_ufs.c,v 1.16 2006/11/05 21:14:37 hno Exp $ * * DEBUG: section 79    Storage Manager UFS Interface * AUTHOR: Duane Wessels * * SQUID Web Proxy Cache          http://www.squid-cache.org/ * ---------------------------------------------------------- * *  Squid is the result of efforts by numerous individuals from *  the Internet community; see the CONTRIBUTORS file for full *  details.   Many organizations have provided support for Squid's *  development; see the SPONSORS file for full details.  Squid is *  Copyrighted (C) 2001 by the Regents of the University of *  California; see the COPYRIGHT file for full details.  Squid *  incorporates software developed and/or copyrighted by other *  sources; see the CREDITS file for full details. * *  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 02111, USA. * */#include "squid.h"#include "store_ufs.h"static DRCB storeUfsReadDone;static DWCB storeUfsWriteDone;static void storeUfsIOCallback(storeIOState * sio, int errflag);static CBDUNL storeUfsIOFreeEntry;CBDATA_TYPE(storeIOState);/* === PUBLIC =========================================================== */storeIOState *storeUfsOpen(SwapDir * SD, StoreEntry * e, STFNCB * file_callback,    STIOCB * callback, void *callback_data){    ufsinfo_t *ufsinfo = (ufsinfo_t *) SD->fsdata;    sfileno f = e->swap_filen;    char *path = storeUfsDirFullPath(SD, f, NULL);    storeIOState *sio;    struct stat sb;    int fd;    debug(79, 3) ("storeUfsOpen: fileno %08X\n", f);    fd = file_open(path, O_RDONLY | O_BINARY | O_NOATIME);    if (fd < 0) {	debug(79, 3) ("storeUfsOpen: got failure (%d)\n", errno);	return NULL;    }    debug(79, 3) ("storeUfsOpen: opened FD %d\n", fd);    CBDATA_INIT_TYPE_FREECB(storeIOState, storeUfsIOFreeEntry);    sio = cbdataAlloc(storeIOState);    sio->fsstate = memPoolAlloc(ufs_state_pool);    sio->swap_filen = f;    sio->swap_dirn = SD->index;    sio->mode = O_RDONLY | O_BINARY;    sio->callback = callback;    sio->callback_data = callback_data;    cbdataLock(callback_data);    sio->e = e;    ((ufsstate_t *) (sio->fsstate))->fd = fd;    ((ufsstate_t *) (sio->fsstate))->flags.writing = 0;    ((ufsstate_t *) (sio->fsstate))->flags.reading = 0;    ((ufsstate_t *) (sio->fsstate))->flags.close_request = 0;    if (fstat(fd, &sb) == 0)	sio->st_size = sb.st_size;    store_open_disk_fd++;    ufsinfo->open_files++;    /* We should update the heap/dlink position here ! */    return sio;}storeIOState *storeUfsCreate(SwapDir * SD, StoreEntry * e, STFNCB * file_callback, STIOCB * callback, void *callback_data){    storeIOState *sio;    int fd;    int mode = (O_WRONLY | O_CREAT | O_TRUNC | O_BINARY);    char *path;    ufsinfo_t *ufsinfo = (ufsinfo_t *) SD->fsdata;    sfileno filn;    sdirno dirn;    /* Allocate a number */    dirn = SD->index;    filn = storeUfsDirMapBitAllocate(SD);    ufsinfo->suggest = filn + 1;    /* Shouldn't we handle a 'bitmap full' error here? */    path = storeUfsDirFullPath(SD, filn, NULL);    debug(79, 3) ("storeUfsCreate: fileno %08X\n", filn);    fd = file_open(path, mode);    if (fd < 0) {	debug(79, 1) ("storeUfsCreate: Failed to create %s (%s)\n", path, xstrerror());	return NULL;    }    debug(79, 3) ("storeUfsCreate: opened FD %d\n", fd);    CBDATA_INIT_TYPE_FREECB(storeIOState, storeUfsIOFreeEntry);    sio = cbdataAlloc(storeIOState);    sio->fsstate = memPoolAlloc(ufs_state_pool);    sio->swap_filen = filn;    sio->swap_dirn = dirn;    sio->mode = mode;    sio->callback = callback;    sio->callback_data = callback_data;    cbdataLock(callback_data);    sio->e = (StoreEntry *) e;    ((ufsstate_t *) (sio->fsstate))->fd = fd;    ((ufsstate_t *) (sio->fsstate))->flags.writing = 0;    ((ufsstate_t *) (sio->fsstate))->flags.reading = 0;    ((ufsstate_t *) (sio->fsstate))->flags.close_request = 0;    store_open_disk_fd++;    ufsinfo->open_files++;    /* now insert into the replacement policy */    storeUfsDirReplAdd(SD, e);    return sio;}voidstoreUfsClose(SwapDir * SD, storeIOState * sio){    ufsstate_t *ufsstate = (ufsstate_t *) sio->fsstate;    debug(79, 3) ("storeUfsClose: dirno %d, fileno %08X, FD %d\n",	sio->swap_dirn, sio->swap_filen, ufsstate->fd);    if (ufsstate->flags.reading || ufsstate->flags.writing) {	ufsstate->flags.close_request = 1;	return;    }    storeUfsIOCallback(sio, 0);}voidstoreUfsRead(SwapDir * SD, storeIOState * sio, char *buf, size_t size, squid_off_t offset, STRCB * callback, void *callback_data){    ufsstate_t *ufsstate = (ufsstate_t *) sio->fsstate;    assert(sio->read.callback == NULL);    assert(sio->read.callback_data == NULL);    sio->read.callback = callback;    sio->read.callback_data = callback_data;    cbdataLock(callback_data);    debug(79, 3) ("storeUfsRead: dirno %d, fileno %08X, FD %d\n",	sio->swap_dirn, sio->swap_filen, ufsstate->fd);    sio->offset = offset;    ufsstate->flags.reading = 1;    file_read(ufsstate->fd,	buf,	size,	(off_t) offset,	storeUfsReadDone,	sio);}voidstoreUfsWrite(SwapDir * SD, storeIOState * sio, char *buf, size_t size, squid_off_t offset, FREE * free_func){    ufsstate_t *ufsstate = (ufsstate_t *) sio->fsstate;    debug(79, 3) ("storeUfsWrite: dirn %d, fileno %08X, FD %d\n", sio->swap_dirn, sio->swap_filen, ufsstate->fd);    ufsstate->flags.writing = 1;    file_write(ufsstate->fd,	(off_t) offset,	buf,	size,	storeUfsWriteDone,	sio,	free_func);}voidstoreUfsUnlink(SwapDir * SD, StoreEntry * e){    debug(79, 3) ("storeUfsUnlink: fileno %08X\n", e->swap_filen);    storeUfsDirReplRemove(e);    storeUfsDirMapBitReset(SD, e->swap_filen);    storeUfsDirUnlinkFile(SD, e->swap_filen);}voidstoreUfsRecycle(SwapDir * SD, StoreEntry * e){    debug(79, 3) ("storeUfsUnlink: fileno %08X\n", e->swap_filen);    /* Detach from underlying physical object */    if (e->swap_filen > -1) {	storeUfsDirReplRemove(e);	storeUfsDirMapBitReset(SD, e->swap_filen);	e->swap_filen = -1;	e->swap_dirn = -1;    }}/*  === STATIC =========================================================== */static voidstoreUfsReadDone(int fd, const char *buf, int len, int errflag, void *my_data){    storeIOState *sio = my_data;    ufsstate_t *ufsstate = (ufsstate_t *) sio->fsstate;    STRCB *callback = sio->read.callback;    void *their_data = sio->read.callback_data;    ssize_t rlen;    debug(79, 3) ("storeUfsReadDone: dirno %d, fileno %08X, FD %d, len %d\n",	sio->swap_dirn, sio->swap_filen, fd, len);    ufsstate->flags.reading = 0;    if (errflag) {	debug(79, 3) ("storeUfsReadDone: got failure (%d)\n", errflag);	rlen = -1;    } else {	rlen = len;	sio->offset += len;    }    assert(callback);    assert(their_data);    sio->read.callback = NULL;    sio->read.callback_data = NULL;    if (cbdataValid(their_data))	callback(their_data, buf, rlen);    cbdataUnlock(their_data);}static voidstoreUfsWriteDone(int fd, int errflag, size_t len, void *my_data){    storeIOState *sio = my_data;    ufsstate_t *ufsstate = (ufsstate_t *) sio->fsstate;    debug(79, 3) ("storeUfsWriteDone: dirno %d, fileno %08X, FD %d, len %ld\n",	sio->swap_dirn, sio->swap_filen, fd, (long int) len);    ufsstate->flags.writing = 0;    if (errflag) {	debug(79, 0) ("storeUfsWriteDone: got failure (%d)\n", errflag);	storeUfsIOCallback(sio, errflag);	return;    }    sio->offset += len;    if (ufsstate->flags.close_request)	storeUfsIOCallback(sio, errflag);}static voidstoreUfsIOCallback(storeIOState * sio, int errflag){    ufsstate_t *ufsstate = (ufsstate_t *) sio->fsstate;    debug(79, 3) ("storeUfsIOCallback: errflag=%d\n", errflag);    if (ufsstate->fd > -1) {	SwapDir *SD = INDEXSD(sio->swap_dirn);	ufsinfo_t *ufsinfo = (ufsinfo_t *) SD->fsdata;	file_close(ufsstate->fd);	store_open_disk_fd--;	ufsinfo->open_files--;    }    if (cbdataValid(sio->callback_data))	sio->callback(sio->callback_data, errflag, sio);    cbdataUnlock(sio->callback_data);    sio->callback_data = NULL;    sio->callback = NULL;    cbdataFree(sio);}/* * Clean up any references from the SIO before it get's released. */static voidstoreUfsIOFreeEntry(void *sio){    memPoolFree(ufs_state_pool, ((storeIOState *) sio)->fsstate);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产福利在线观看| 成人黄色在线看| 亚洲男人的天堂在线aⅴ视频| 欧美剧情电影在线观看完整版免费励志电影| 精品一区二区影视| 日韩精品高清不卡| 夜色激情一区二区| 自拍av一区二区三区| 欧美极品另类videosde| 欧美精品一区二区精品网| 欧美日本不卡视频| 欧美亚洲动漫制服丝袜| 色先锋资源久久综合| 97精品超碰一区二区三区| 成人精品国产福利| youjizz国产精品| 成人黄色免费短视频| 懂色一区二区三区免费观看| 国产一区视频在线看| 国产美女在线观看一区| 国产乱子伦视频一区二区三区| 亚洲精品乱码久久久久| ㊣最新国产の精品bt伙计久久| 欧美国产亚洲另类动漫| 国产精品久久看| 国产精品高清亚洲| 亚洲一二三四久久| 亚洲午夜在线视频| 免费成人av资源网| 国产麻豆91精品| 成人激情黄色小说| 欧美性受xxxx黑人xyx性爽| 精品视频123区在线观看| 欧美精品一二三四| 久久色成人在线| 中文字幕在线不卡视频| 亚洲国产精品久久艾草纯爱| 三级欧美韩日大片在线看| 青青草精品视频| 国产成人av一区二区三区在线| 国产91高潮流白浆在线麻豆| 91在线观看污| 91精品国产高清一区二区三区| 久久嫩草精品久久久精品| 最近日韩中文字幕| 天堂在线一区二区| 成人免费看的视频| 欧美午夜精品一区二区三区| 欧美大片日本大片免费观看| 中文字幕日韩一区二区| 舔着乳尖日韩一区| 成人性生交大片免费| 欧美三级欧美一级| 中文字幕国产一区| 三级久久三级久久| 成人av影视在线观看| 欧美二区乱c少妇| 久久久av毛片精品| 午夜天堂影视香蕉久久| 国产69精品久久久久毛片| 欧美高清激情brazzers| 久久久久久久综合| 午夜亚洲国产au精品一区二区| 国产久卡久卡久卡久卡视频精品| 欧美视频一区二区在线观看| 国产精品入口麻豆九色| 青青草伊人久久| 欧美亚洲一区二区在线| 国产精品女主播av| 国产在线视视频有精品| 欧美美女黄视频| 精品久久国产97色综合| 视频一区二区不卡| 欧美体内she精视频| 国产目拍亚洲精品99久久精品| 免费一级片91| 欧美一区二区三区四区高清| 亚洲三级久久久| 99久久精品国产网站| 国产女人18毛片水真多成人如厕| 激情综合网av| 欧美成人vr18sexvr| 日韩黄色免费电影| 欧美三级视频在线播放| 亚洲美女屁股眼交3| 99精品在线免费| 国产精品美女久久久久久久网站| 国产精品一区一区| 精品国产一区二区国模嫣然| 久久激情五月激情| 51久久夜色精品国产麻豆| 午夜私人影院久久久久| 欧美三级电影一区| 亚洲国产aⅴ天堂久久| 欧美日韩精品一二三区| 午夜电影网亚洲视频| 欧美天堂一区二区三区| 日韩精品五月天| 日韩欧美专区在线| 免费观看成人av| 精品sm捆绑视频| 国产精品夜夜爽| 中文字幕一区二区三区在线不卡| 99视频一区二区三区| 亚洲乱码国产乱码精品精98午夜| 色天使久久综合网天天| 亚洲午夜免费电影| 日韩亚洲电影在线| 国产精品亚洲一区二区三区妖精| 国产精品久久久久一区二区三区 | 国产美女主播视频一区| 久久综合九色综合97婷婷女人| 国产一区二区成人久久免费影院 | 91久久香蕉国产日韩欧美9色| 国产精品不卡在线| 欧美日韩国产欧美日美国产精品| 丝袜脚交一区二区| 精品久久久网站| 91网页版在线| 日韩国产一区二| 久久久久久97三级| 欧美无乱码久久久免费午夜一区| 日本成人在线网站| 国产精品热久久久久夜色精品三区| av一本久道久久综合久久鬼色| 一区二区三区在线视频免费| 日韩一区二区三区视频| 成人91在线观看| 免费在线看成人av| 亚洲欧美在线aaa| 精品少妇一区二区三区日产乱码| 国产91精品一区二区麻豆亚洲| 一区二区三区欧美视频| 精品av久久707| 欧美日韩一本到| 激情欧美一区二区| 亚洲影视资源网| 国产日韩欧美精品综合| 欧美日韩亚洲综合在线| 国产成人亚洲综合a∨婷婷图片| 亚洲影院在线观看| 国产欧美日韩在线| 日韩三级伦理片妻子的秘密按摩| 成人高清免费在线播放| 麻豆精品一区二区av白丝在线| 亚洲欧美日韩国产一区二区三区 | 天堂av在线一区| 国产精品区一区二区三区| 日韩一区二区三区视频| 欧美在线免费播放| 99久久精品国产麻豆演员表| 蜜桃视频免费观看一区| 国产日产欧美一区二区三区 | 久久久精品黄色| 日韩午夜电影av| 欧美一区二区视频在线观看2022 | 欧美一区二视频| 欧美日韩一区二区三区高清| 99久久99久久免费精品蜜臀| 国产又黄又大久久| 一区二区三区精品久久久| 欧美激情综合在线| 国产欧美一二三区| 国产午夜精品理论片a级大结局| 日韩精品一区二区三区在线| 91.com在线观看| 欧美男男青年gay1069videost| 欧美午夜精品久久久久久孕妇| 色婷婷久久久久swag精品| jizz一区二区| 一本大道久久a久久综合| 白白色 亚洲乱淫| 91在线观看污| 91国在线观看| 欧美日韩亚洲另类| 欧美一区二区在线视频| 欧美一区二区成人| 欧美一区二区三区视频| 日韩一级高清毛片| 欧美刺激午夜性久久久久久久| 欧美一级欧美三级在线观看| 日韩欧美国产成人一区二区| 精品国产污网站| 欧美激情中文不卡| 亚洲蜜桃精久久久久久久| 一区二区在线电影| 午夜精品久久久久久久久久久| 午夜精品久久久久久久久久| 日韩精品一级中文字幕精品视频免费观看 | 欧美一区二区女人| 国产精品亲子乱子伦xxxx裸| 亚洲电影第三页| 国产a精品视频| 欧美日韩高清在线| 国产精品免费网站在线观看| 免费欧美在线视频| 91小视频免费观看| 国产日韩影视精品| 蜜桃精品视频在线| 在线观看视频一区|