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

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

?? store_io_aufs.c

?? 代理服務器 squid-2.6.STABLE16
?? C
?? 第 1 頁 / 共 2 頁
字號:
}voidstoreAufsRecycle(SwapDir * SD, StoreEntry * e){    debug(79, 3) ("storeAufsRecycle: fileno %08X\n", e->swap_filen);    /* detach from the underlying physical object */    if (e->swap_filen > -1) {	storeAufsDirReplRemove(e);	storeAufsDirMapBitReset(SD, e->swap_filen);	e->swap_filen = -1;	e->swap_dirn = -1;    }}/*  === STATIC =========================================================== */static intstoreAufsKickWriteQueue(storeIOState * sio){    squidaiostate_t *aiostate = (squidaiostate_t *) sio->fsstate;    struct _queued_write *q = linklistShift(&aiostate->pending_writes);    if (NULL == q)	return 0;    debug(79, 3) ("storeAufsKickWriteQueue: writing queued chunk of %ld bytes\n",	(long int) q->size);    storeAufsWrite(INDEXSD(sio->swap_dirn), sio, q->buf, q->size, q->offset, q->free_func);    memPoolFree(aufs_qwrite_pool, q);    return 1;}static intstoreAufsKickReadQueue(storeIOState * sio){    squidaiostate_t *aiostate = (squidaiostate_t *) sio->fsstate;    struct _queued_read *q = linklistShift(&(aiostate->pending_reads));    if (NULL == q)	return 0;    debug(79, 3) ("storeAufsKickReadQueue: reading queued request of %ld bytes\n",	(long int) q->size);    if (cbdataValid(q->callback_data))	storeAufsRead(INDEXSD(sio->swap_dirn), sio, q->buf, q->size, q->offset, q->callback, q->callback_data);    cbdataUnlock(q->callback_data);    memPoolFree(aufs_qread_pool, q);    return 1;}static voidstoreAufsOpenDone(int unused, void *my_data, const char *unused2, int fd, int errflag){    storeIOState *sio = my_data;    squidaiostate_t *aiostate = (squidaiostate_t *) sio->fsstate;    debug(79, 3) ("storeAufsOpenDone: FD %d, errflag %d\n", fd, errflag);    Opening_FD--;    aiostate->flags.opening = 0;    if (errflag || fd < 0) {	errno = errflag;	debug(79, 0) ("storeAufsOpenDone: %s\n", xstrerror());	debug(79, 1) ("\t%s\n", storeAufsDirFullPath(INDEXSD(sio->swap_dirn), sio->swap_filen, NULL));	storeAufsIOCallback(sio, DISK_ERROR);	return;    }    store_open_disk_fd++;    aiostate->fd = fd;    commSetCloseOnExec(fd);    fd_open(fd, FD_FILE, storeAufsDirFullPath(INDEXSD(sio->swap_dirn), sio->swap_filen, NULL));    if (FILE_MODE(sio->mode) == O_WRONLY) {	if (storeAufsKickWriteQueue(sio))	    return;    } else if ((FILE_MODE(sio->mode) == O_RDONLY) && !aiostate->flags.close_request) {	if (storeAufsKickReadQueue(sio))	    return;    }    if (aiostate->flags.close_request)	storeAufsIOCallback(sio, errflag);    debug(79, 3) ("storeAufsOpenDone: exiting\n");}#if ASYNC_READstatic voidstoreAufsReadDone(int fd, void *my_data, const char *buf, int len, int errflag)#elsestatic voidstoreAufsReadDone(int fd, const char *buf, int len, int errflag, void *my_data)#endif{    storeIOState *sio = my_data;    squidaiostate_t *aiostate = (squidaiostate_t *) sio->fsstate;    STRCB *callback = sio->read.callback;    void *their_data = sio->read.callback_data;    ssize_t rlen;    int inreaddone = aiostate->flags.inreaddone;	/* Protect from callback loops */    debug(79, 3) ("storeAufsReadDone: dirno %d, fileno %08X, FD %d, len %d\n",	sio->swap_dirn, sio->swap_filen, fd, len);    aiostate->flags.inreaddone = 1;    aiostate->flags.reading = 0;    if (errflag) {	debug(79, 3) ("storeAufsReadDone: got failure (%d)\n", errflag);	rlen = -1;    } else {	rlen = len;	sio->offset += len;    }#if ASYNC_READ    /* translate errflag from errno to Squid disk error */    errno = errflag;    if (errflag)	errflag = DISK_ERROR;    else	errflag = DISK_OK;#else    if (errflag == DISK_EOF)	errflag = DISK_OK;	/* EOF is signalled by len == 0, not errors... */#endif    assert(callback);    assert(their_data);    sio->read.callback = NULL;    sio->read.callback_data = NULL;    if (!aiostate->flags.close_request && cbdataValid(their_data)) {#if ASYNC_READ	if (rlen > 0)	    memcpy(aiostate->read_buf, buf, rlen);#endif	callback(their_data, aiostate->read_buf, rlen);    }    cbdataUnlock(their_data);    aiostate->flags.inreaddone = 0;    if (aiostate->flags.close_request && !inreaddone)	storeAufsIOCallback(sio, errflag);}#if ASYNC_WRITEstatic voidstoreAufsWriteDone(int fd, void *my_data, const char *buf, int aio_return, int aio_errno)#elsestatic voidstoreAufsWriteDone(int fd, int errflag, size_t len, void *my_data)#endif{    static int loop_detect = 0;    storeIOState *sio = my_data;    squidaiostate_t *aiostate = (squidaiostate_t *) sio->fsstate;#if ASYNC_WRITE    int errflag;    int len = aio_return;    /* Translate from errno to Squid disk error */    if (aio_errno)	errflag = aio_errno == ENOSPC ? DISK_NO_SPACE_LEFT : DISK_ERROR;    else	errflag = DISK_OK;#endif    debug(79, 3) ("storeAufsWriteDone: dirno %d, fileno %08X, FD %d, len %ld, err=%d\n",	sio->swap_dirn, sio->swap_filen, fd, (long int) len, errflag);    assert(++loop_detect < 10);    aiostate->flags.writing = 0;    if (errflag) {	debug(79, 0) ("storeAufsWriteDone: got failure (%d)\n", errflag);	storeAufsIOCallback(sio, errflag);	loop_detect--;	return;    }    sio->offset += len;#if ASYNC_WRITE    if (storeAufsKickWriteQueue(sio))	(void) 0;    else if (aiostate->flags.close_request)	storeAufsIOCallback(sio, errflag);#else    /* loop around storeAufsKickWriteQueue to break recursion stack     * overflow when large amounts of data has been queued for write.     * As writes are blocking here we immediately get called again     * without going via the I/O event loop..     */    if (!aiostate->flags.write_kicking) {	/* cbdataLock to protect us from the storeAufsIOCallback on error above */	cbdataLock(sio);	aiostate->flags.write_kicking = 1;	while (storeAufsKickWriteQueue(sio))	    if (!cbdataValid(sio))		break;	if (cbdataValid(sio)) {	    aiostate->flags.write_kicking = 0;	    if (aiostate->flags.close_request)		storeAufsIOCallback(sio, errflag);	}	cbdataUnlock(sio);    }#endif    loop_detect--;}static voidstoreAufsIOCallback(storeIOState * sio, int errflag){    STIOCB *callback = sio->callback;    void *their_data = sio->callback_data;    squidaiostate_t *aiostate = (squidaiostate_t *) sio->fsstate;    int fd = aiostate->fd;    debug(79, 3) ("storeAufsIOCallback: errflag=%d\n", errflag);    sio->callback = NULL;    sio->callback_data = NULL;    debug(79, 9) ("%s:%d\n", __FILE__, __LINE__);    if (callback)	if (NULL == their_data || cbdataValid(their_data))	    callback(their_data, errflag, sio);    debug(79, 9) ("%s:%d\n", __FILE__, __LINE__);    cbdataUnlock(their_data);    aiostate->fd = -1;    if (aiostate->flags.opening)	Opening_FD--;    cbdataFree(sio);    if (fd < 0)	return;    debug(79, 9) ("%s:%d\n", __FILE__, __LINE__);#if ASYNC_CLOSE    fd_close(fd);    aioClose(fd);#else    aioCancel(fd);    file_close(fd);#endif    store_open_disk_fd--;    statCounter.syscalls.disk.closes++;    debug(79, 9) ("%s:%d\n", __FILE__, __LINE__);}static intstoreAufsNeedCompletetion(storeIOState * sio){    squidaiostate_t *aiostate = (squidaiostate_t *) sio->fsstate;    if (aiostate->flags.writing)	return 1;    if (aiostate->flags.opening && FILE_MODE(sio->mode) == O_WRONLY)	return 1;    if (aiostate->flags.reading)	return 1;    if (aiostate->flags.inreaddone)	return 1;    return 0;}/*       * Clean up references from the SIO before it gets released. * The actuall SIO is managed by cbdata so we do not need * to bother with that. */static voidstoreAufsIOFreeEntry(void *siop){    storeIOState *sio = (storeIOState *) siop;    squidaiostate_t *aiostate = (squidaiostate_t *) sio->fsstate;    struct _queued_write *qw;    struct _queued_read *qr;    while ((qw = linklistShift(&aiostate->pending_writes))) {	if (qw->free_func)	    qw->free_func(qw->buf);	memPoolFree(aufs_qwrite_pool, qw);    }    while ((qr = linklistShift(&aiostate->pending_reads))) {	cbdataUnlock(qr->callback_data);	memPoolFree(aufs_qread_pool, qr);    }    if (sio->read.callback_data)	cbdataUnlock(sio->read.callback_data);    if (sio->callback_data)	cbdataUnlock(sio->callback_data);    memPoolFree(squidaio_state_pool, aiostate);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一级在线观看| 激情综合亚洲精品| 久久国产精品一区二区| eeuss鲁片一区二区三区在线观看| 在线精品观看国产| 国产精品丝袜黑色高跟| 麻豆精品视频在线观看免费 | 国产精品私人影院| 日韩专区欧美专区| 一本到一区二区三区| 欧美国产精品劲爆| 国产精品一区二区无线| 欧美一级搡bbbb搡bbbb| 亚洲影院在线观看| 色www精品视频在线观看| 国产欧美日韩三区| 国产在线精品免费av| 日韩欧美国产综合| 日韩高清一区在线| 欧美日本一区二区三区四区| 亚洲精品ww久久久久久p站 | 国产片一区二区| 久久99精品久久久久久久久久久久| 欧美午夜在线观看| 《视频一区视频二区| 成人午夜电影久久影院| 国产日韩欧美不卡| 国产成人综合在线播放| 国产午夜三级一区二区三| 久久精品国产亚洲一区二区三区| 国产传媒欧美日韩成人| 亚洲夂夂婷婷色拍ww47| 91免费国产在线观看| 国产精品麻豆一区二区| 91玉足脚交白嫩脚丫在线播放| 中文成人综合网| 成人a级免费电影| 欧美国产综合一区二区| 成人福利视频在线| 亚洲天堂福利av| 91久久久免费一区二区| 亚洲动漫第一页| 3d成人动漫网站| 国精产品一区一区三区mba桃花| 精品国产乱码久久久久久夜甘婷婷| 久久se精品一区精品二区| 久久久久久久久免费| 国产成人午夜精品5599| 国产精品萝li| 欧美午夜影院一区| 男女男精品视频网| 国产亚洲精久久久久久| 成人免费看的视频| 亚洲综合色网站| 欧美一区二区女人| 国产精品亚洲综合一区在线观看| 国产精品色哟哟| 在线观看不卡视频| 久久不见久久见免费视频1| 国产欧美一区视频| 欧美色综合网站| 精品一区二区国语对白| 亚洲欧美在线视频观看| 欧美精品久久99| 成人污视频在线观看| 亚洲成年人影院| 久久久青草青青国产亚洲免观| www.日韩精品| 精品一区二区在线观看| 亚洲欧美一区二区视频| 欧美一区二区三区在线观看| 成人黄色在线看| 日韩专区一卡二卡| 中文字幕亚洲区| 精品国产伦理网| 日本电影欧美片| 高清不卡一二三区| 日本成人在线电影网| 中文字幕亚洲欧美在线不卡| 日韩精品中文字幕在线不卡尤物| jiyouzz国产精品久久| 男女激情视频一区| 亚洲一区二区视频在线观看| 国产视频一区在线播放| 欧美精品乱码久久久久久| 懂色一区二区三区免费观看| 免费在线观看一区二区三区| 亚洲视频狠狠干| 欧美激情资源网| 日韩精品中午字幕| 欧美日本一区二区三区四区 | 国产精品免费视频一区| 亚洲一区在线观看免费观看电影高清 | 亚洲男女一区二区三区| 久久先锋影音av鲁色资源网| 欧洲精品在线观看| 色婷婷av一区二区三区软件 | 日本丰满少妇一区二区三区| 国产不卡在线视频| 国产乱色国产精品免费视频| 蜜臀精品一区二区三区在线观看 | 色综合视频在线观看| 国产乱人伦偷精品视频免下载 | 一区二区三区.www| 中文字幕中文在线不卡住| 国产偷v国产偷v亚洲高清| 精品国产91久久久久久久妲己| 欧美日韩国产影片| 欧美日韩国产片| 欧美区在线观看| 欧美日本一道本| 欧美日韩和欧美的一区二区| 欧美日韩一级大片网址| 欧美日韩国产系列| 337p亚洲精品色噜噜狠狠| 欧美一三区三区四区免费在线看| 欧美日韩一区久久| 欧美日韩成人综合在线一区二区| 在线观看三级视频欧美| 欧美色综合久久| 欧美丰满美乳xxx高潮www| 欧美精品丝袜久久久中文字幕| 日韩精品一区二区三区swag| 欧美变态凌虐bdsm| 日韩精品一区二| 久久久亚洲精品石原莉奈| 久久久夜色精品亚洲| 国产精品毛片a∨一区二区三区| 1024亚洲合集| 亚洲成av人综合在线观看| 强制捆绑调教一区二区| 久久超碰97中文字幕| 国产精品996| 91亚洲国产成人精品一区二三| 91福利精品第一导航| 这里只有精品99re| 久久久天堂av| 一区二区三区影院| 日本欧美一区二区三区乱码| 国产一区二区三区在线观看免费视频 | 欧美一区在线视频| 久久久久一区二区三区四区| 国产精品成人在线观看| 亚洲第一福利一区| 麻豆国产精品一区二区三区| 亚洲欧美一区二区三区国产精品| 国产精品久久久久天堂| 精品国产自在久精品国产| 精品免费一区二区三区| 国产精品超碰97尤物18| 亚洲va中文字幕| 国产激情91久久精品导航| 色综合天天在线| 精品久久久久久久久久久久久久久 | 久久先锋影音av| 一区二区三区四区av| 日韩电影在线观看电影| 国产成人aaa| 欧美色综合影院| 国产拍揄自揄精品视频麻豆| 亚洲一区中文在线| 国产传媒日韩欧美成人| 欧美日韩一级二级| 国产精品免费人成网站| 无码av免费一区二区三区试看| 国模少妇一区二区三区| 91色视频在线| 不卡av在线网| 成人av综合在线| 日韩精品专区在线影院观看| 亚洲视频免费观看| 国产精品中文字幕欧美| 欧美日韩精品欧美日韩精品| 亚洲欧美中日韩| 国产美女精品一区二区三区| 欧美日本一区二区| 亚洲人成网站在线| 高清国产午夜精品久久久久久| 91精品国产91久久久久久最新毛片 | 韩国精品在线观看| 在线成人午夜影院| 亚洲自拍偷拍综合| 91浏览器入口在线观看| 国产亚洲美州欧州综合国 | 精品国产制服丝袜高跟| 亚瑟在线精品视频| 在线观看日产精品| 亚洲视频电影在线| 成人免费看片app下载| 久久久久高清精品| 国内欧美视频一区二区| 91精品国产综合久久精品| 亚洲一区在线视频| 色欧美日韩亚洲| 亚洲美女屁股眼交| 91视频精品在这里| 亚洲欧美日韩综合aⅴ视频| 成人18精品视频| 中文字幕人成不卡一区| 不卡影院免费观看|