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

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

?? store_io_aufs.c

?? 代理服務器 squid-2.6.STABLE16
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * $Id: store_io_aufs.c,v 1.34 2006/11/05 21:14:31 hno Exp $ * * DEBUG: section 79    Squid-side AUFS I/O functions. * * 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 "async_io.h"#include "store_asyncufs.h"#if ASYNC_READstatic AIOCB storeAufsReadDone;#elsestatic DRCB storeAufsReadDone;#endif#if ASYNC_WRITEstatic AIOCB storeAufsWriteDone;#elsestatic DWCB storeAufsWriteDone;#endifstatic void storeAufsIOCallback(storeIOState * sio, int errflag);static AIOCB storeAufsOpenDone;static int storeAufsNeedCompletetion(storeIOState *);static int storeAufsKickWriteQueue(storeIOState * sio);static CBDUNL storeAufsIOFreeEntry;CBDATA_TYPE(storeIOState);/* === PUBLIC =========================================================== *//* open for reading */storeIOState *storeAufsOpen(SwapDir * SD, StoreEntry * e, STFNCB * file_callback,    STIOCB * callback, void *callback_data){    sfileno f = e->swap_filen;    char *path = storeAufsDirFullPath(SD, f, NULL);    storeIOState *sio;#if !ASYNC_OPEN    int fd;#endif    debug(79, 3) ("storeAufsOpen: fileno %08X\n", f);    /*     * we should detect some 'too many files open' condition and return     * NULL here.     */#ifdef MAGIC2    if (aioQueueSize() > MAGIC2)	return NULL;#endif#if !ASYNC_OPEN    fd = file_open(path, O_RDONLY | O_BINARY | O_NOATIME);    if (fd < 0) {	debug(79, 3) ("storeAufsOpen: got failure (%d)\n", errno);	return NULL;    }#endif    CBDATA_INIT_TYPE_FREECB(storeIOState, storeAufsIOFreeEntry);    sio = cbdataAlloc(storeIOState);    sio->fsstate = memPoolAlloc(squidaio_state_pool);    ((squidaiostate_t *) (sio->fsstate))->fd = -1;    ((squidaiostate_t *) (sio->fsstate))->flags.opening = 1;    sio->swap_filen = f;    sio->swap_dirn = SD->index;    sio->mode = O_RDONLY | O_BINARY;    sio->callback = callback;    sio->callback_data = callback_data;    sio->e = e;    cbdataLock(callback_data);    Opening_FD++;    statCounter.syscalls.disk.opens++;#if ASYNC_OPEN    aioOpen(path, O_RDONLY | O_BINARY | O_NOATIME, 0644, storeAufsOpenDone, sio);#else    storeAufsOpenDone(fd, sio, fd, 0);#endif    return sio;}/* open for creating */storeIOState *storeAufsCreate(SwapDir * SD, StoreEntry * e, STFNCB * file_callback, STIOCB * callback, void *callback_data){    char *path;    storeIOState *sio;    sfileno filn;    sdirno dirn;#if !ASYNC_CREATE    int fd;#endif    /* Allocate a number */    dirn = SD->index;    filn = storeAufsDirMapBitAllocate(SD);    path = storeAufsDirFullPath(SD, filn, NULL);    debug(79, 3) ("storeAufsCreate: fileno %08X\n", filn);    /*     * we should detect some 'too many files open' condition and return     * NULL here.     */#ifdef MAGIC2    if (aioQueueSize() > MAGIC2)	return NULL;#endif#if !ASYNC_CREATE    fd = file_open(path, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY);    if (fd < 0) {	debug(79, 3) ("storeAufsCreate: got failure (%d)\n", errno);	return NULL;    }#endif    CBDATA_INIT_TYPE_FREECB(storeIOState, storeAufsIOFreeEntry);    sio = cbdataAlloc(storeIOState);    sio->fsstate = memPoolAlloc(squidaio_state_pool);    ((squidaiostate_t *) (sio->fsstate))->fd = -1;    ((squidaiostate_t *) (sio->fsstate))->flags.opening = 1;    sio->swap_filen = filn;    sio->swap_dirn = dirn;    sio->mode = O_WRONLY | O_BINARY;    sio->callback = callback;    sio->callback_data = callback_data;    sio->e = (StoreEntry *) e;    cbdataLock(callback_data);    Opening_FD++;    statCounter.syscalls.disk.opens++;#if ASYNC_CREATE    aioOpen(path, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0644, storeAufsOpenDone, sio);#else    storeAufsOpenDone(fd, sio, fd, 0);#endif    /* now insert into the replacement policy */    storeAufsDirReplAdd(SD, e);    return sio;}/* Close */voidstoreAufsClose(SwapDir * SD, storeIOState * sio){    squidaiostate_t *aiostate = (squidaiostate_t *) sio->fsstate;    debug(79, 3) ("storeAufsClose: dirno %d, fileno %08X, FD %d\n",	sio->swap_dirn, sio->swap_filen, aiostate->fd);    if (storeAufsNeedCompletetion(sio)) {	aiostate->flags.close_request = 1;	return;    }    storeAufsIOCallback(sio, DISK_OK);}/* Read */voidstoreAufsRead(SwapDir * SD, storeIOState * sio, char *buf, size_t size, squid_off_t offset, STRCB * callback, void *callback_data){    squidaiostate_t *aiostate = (squidaiostate_t *) sio->fsstate;    assert(sio->read.callback == NULL);    assert(sio->read.callback_data == NULL);    assert(!aiostate->flags.reading);    if (aiostate->fd < 0) {	struct _queued_read *q;	debug(79, 3) ("storeAufsRead: queueing read because FD < 0\n");	assert(aiostate->flags.opening);	assert(aiostate->pending_reads == NULL);	q = memPoolAlloc(aufs_qread_pool);	q->buf = buf;	q->size = size;	q->offset = (off_t) offset;	q->callback = callback;	q->callback_data = callback_data;	cbdataLock(q->callback_data);	linklistPush(&(aiostate->pending_reads), q);	return;    }    sio->read.callback = callback;    sio->read.callback_data = callback_data;    aiostate->read_buf = buf;    cbdataLock(callback_data);    debug(79, 3) ("storeAufsRead: dirno %d, fileno %08X, FD %d\n",	sio->swap_dirn, sio->swap_filen, aiostate->fd);    sio->offset = offset;    aiostate->flags.reading = 1;#if ASYNC_READ    aioRead(aiostate->fd, (off_t) offset, size, storeAufsReadDone, sio);    statCounter.syscalls.disk.reads++;#else    file_read(aiostate->fd, buf, size, (off_t) offset, storeAufsReadDone, sio);    /* file_read() increments syscalls.disk.reads */#endif}/* Write */voidstoreAufsWrite(SwapDir * SD, storeIOState * sio, char *buf, size_t size, squid_off_t offset, FREE * free_func){    squidaiostate_t *aiostate = (squidaiostate_t *) sio->fsstate;    debug(79, 3) ("storeAufsWrite: dirno %d, fileno %08X, FD %d\n",	sio->swap_dirn, sio->swap_filen, aiostate->fd);    if (aiostate->fd < 0) {	/* disk file not opened yet */	struct _queued_write *q;	assert(aiostate->flags.opening);	q = memPoolAlloc(aufs_qwrite_pool);	q->buf = buf;	q->size = size;	q->offset = (off_t) offset;	q->free_func = free_func;	linklistPush(&(aiostate->pending_writes), q);	return;    }#if ASYNC_WRITE    if (aiostate->flags.writing) {	struct _queued_write *q;	debug(79, 3) ("storeAufsWrite: queuing write\n");	q = memPoolAlloc(aufs_qwrite_pool);	q->buf = buf;	q->size = size;	q->offset = (off_t) offset;	q->free_func = free_func;	linklistPush(&(aiostate->pending_writes), q);	return;    }    aiostate->flags.writing = 1;    aioWrite(aiostate->fd, (off_t) offset, buf, size, storeAufsWriteDone, sio,	free_func);    statCounter.syscalls.disk.writes++;#else    file_write(aiostate->fd, (off_t) offset, buf, size, storeAufsWriteDone, sio,	free_func);    /* file_write() increments syscalls.disk.writes */#endif}/* Unlink */voidstoreAufsUnlink(SwapDir * SD, StoreEntry * e){    debug(79, 3) ("storeAufsUnlink: dirno %d, fileno %08X\n", SD->index, e->swap_filen);    storeAufsDirReplRemove(e);    storeAufsDirMapBitReset(SD, e->swap_filen);    storeAufsDirUnlinkFile(SD, e->swap_filen);    statCounter.syscalls.disk.unlinks++;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱淫av一区二区三区| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 石原莉奈在线亚洲三区| 久草精品在线观看| 色欧美乱欧美15图片| 久久嫩草精品久久久精品| 亚洲综合一区二区三区| 丁香婷婷综合五月| 91精品黄色片免费大全| 亚洲猫色日本管| 国产精品 日产精品 欧美精品| 欧美午夜理伦三级在线观看| 中文字幕亚洲一区二区av在线 | 91精品综合久久久久久| 日韩一区中文字幕| 国产成都精品91一区二区三| 日韩欧美在线不卡| 亚洲成人精品在线观看| 99精品欧美一区二区三区小说| 久久综合av免费| 九九视频精品免费| 欧美一区二区三区日韩| 亚洲国产一区视频| 日本久久电影网| 亚洲色图色小说| 成人国产精品免费| 国产亚洲精品aa| 国产999精品久久久久久绿帽| 精品sm捆绑视频| 激情五月婷婷综合| 欧美精品一区二区三区在线| 美女在线视频一区| 2023国产精华国产精品| 精品一区二区三区欧美| 欧美一区二区三区日韩| 99re这里都是精品| 中文字幕日韩精品一区| 99久久99久久精品国产片果冻| 国产精品免费视频一区| www.色精品| 一区二区三区中文字幕电影 | 欧美精品xxxxbbbb| 日韩精品欧美成人高清一区二区| 欧美日韩视频在线一区二区| 午夜日韩在线电影| 欧美成人女星排行榜| 激情图区综合网| 国产精品免费久久| 色婷婷亚洲婷婷| 日本欧美大码aⅴ在线播放| 日韩亚洲欧美综合| 国产精品主播直播| 亚洲精品国产无天堂网2021| 欧美日韩国产影片| 国产精品夜夜嗨| 亚洲日本电影在线| 欧美精品国产精品| 国产盗摄女厕一区二区三区| 亚洲精品成人天堂一二三| 欧美乱妇15p| 国产福利一区二区| 一区二区高清免费观看影视大全 | 99re成人精品视频| 日韩电影免费在线看| 国产三区在线成人av| 欧美午夜精品免费| 极品少妇一区二区| 亚洲精品写真福利| 欧美大片在线观看一区| 91在线一区二区| 麻豆久久久久久| 亚洲免费观看在线视频| 日韩免费性生活视频播放| 95精品视频在线| 韩国三级电影一区二区| 亚洲综合色噜噜狠狠| 久久综合资源网| 欧美午夜精品电影| 成人午夜精品一区二区三区| 午夜欧美电影在线观看| 中文字幕欧美区| 欧美一区二区三区在| 91麻豆免费看| 国产精品91一区二区| 午夜av一区二区三区| 中文字幕五月欧美| 精品国内二区三区| 欧美日本乱大交xxxxx| 春色校园综合激情亚洲| 另类调教123区 | 亚洲六月丁香色婷婷综合久久 | 久久国产精品一区二区| 一区二区三区影院| 国产精品网站在线观看| 欧美精品一区二区三区蜜桃视频| 欧美日本免费一区二区三区| 91色婷婷久久久久合中文| 国产a区久久久| 韩国av一区二区三区四区| 天堂av在线一区| 亚洲一线二线三线视频| 亚洲色图欧美激情| 国产精品久久久久久久久果冻传媒| 日韩免费性生活视频播放| 7777精品伊人久久久大香线蕉完整版| 91黄色免费版| 91精品1区2区| 在线免费观看日本一区| 色呦呦国产精品| 色综合天天视频在线观看| 91社区在线播放| 一本久久综合亚洲鲁鲁五月天 | 一区二区三区蜜桃网| 亚洲人成伊人成综合网小说| 中文字幕亚洲综合久久菠萝蜜| 中文字幕一区二| 亚洲综合丁香婷婷六月香| 夜夜精品视频一区二区| 亚洲国产日韩在线一区模特| 亚洲一区视频在线| 天堂影院一区二区| 免费在线观看一区二区三区| 久久精品国产99| 韩日av一区二区| 成人激情免费电影网址| 91网站在线观看视频| 91看片淫黄大片一级在线观看| 色偷偷久久一区二区三区| 在线精品视频小说1| 欧美丰满一区二区免费视频| 欧美一级理论片| 久久久国际精品| 亚洲视频在线一区| 亚洲成av人片在线观看无码| 日日夜夜精品视频免费| 精品一区二区三区在线观看| 国产成人av一区二区三区在线观看| 成人性色生活片| 欧美性猛交xxxx乱大交退制版| 欧美日韩一区二区三区免费看| 欧美一区国产二区| 久久综合色婷婷| 亚洲精品亚洲人成人网在线播放| 日韩精品一区第一页| 国产精品原创巨作av| 色天天综合久久久久综合片| 日韩一级精品视频在线观看| 中文字幕高清不卡| 日日夜夜精品视频免费| 成人午夜视频在线| 欧美日韩免费在线视频| 久久嫩草精品久久久精品一| 亚洲综合成人在线视频| 国产精品99久久久久久有的能看 | 同产精品九九九| 国产电影一区在线| 欧美综合欧美视频| 国产清纯在线一区二区www| 亚洲国产精品久久一线不卡| 精品亚洲欧美一区| 欧美午夜视频网站| 国产精品狼人久久影院观看方式| 亚洲一级二级在线| 国产99精品视频| 日韩三级精品电影久久久| 亚洲视频网在线直播| 美女视频黄 久久| 欧美综合亚洲图片综合区| 国产精品色噜噜| 日韩av电影天堂| 日本高清不卡在线观看| 欧美极品aⅴ影院| 免费一级片91| 欧美日韩精品福利| 亚洲日本在线天堂| 成人激情校园春色| 久久综合久久综合九色| 日韩国产高清在线| 欧美日韩亚洲丝袜制服| 亚洲欧美日韩国产一区二区三区| 久99久精品视频免费观看| 欧美日韩卡一卡二| 夜夜嗨av一区二区三区中文字幕| 成人黄色777网| 欧美国产97人人爽人人喊| 九九九久久久精品| 日韩欧美高清在线| 日韩国产精品大片| 日韩一区二区三区视频| 五月天精品一区二区三区| 欧美制服丝袜第一页| 亚洲欧美另类小说视频| 99re这里只有精品6| 最新国产精品久久精品| 成人黄色软件下载| 亚洲日本在线观看| 91国偷自产一区二区三区成为亚洲经典 | 国产综合色产在线精品| 精品少妇一区二区| 精品一区二区精品|