午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > Linux系統調用fsync函數詳解

Linux系統調用fsync函數詳解

熱門標簽:制作地圖標注 外呼系統怎么弄 地址高德地圖標注 商店地圖標注外賣入駐 新科火車站地圖標注點 地圖標注的牌子 外呼系統鏈接 桂林市ai電銷機器人公司 磁力導航地圖標注
功能描述:

同步內存中所有已修改的文件數據到儲存設備。

用法:
#include unistd.h>

int fsync(int fd);

參數:
fd:文件描述詞。

返回說明:
成功執行時,返回0。失敗返回-1,errno被設為以下的某個值
EBADF: 文件描述詞無效
EIO : 讀寫的過程中發生錯誤

EROFS, EINVAL:文件所在的文件系統不支持同步

強制把系統緩存寫入文件sync和fsync函數,, fflush和fsync的聯系和區別2010-05-10 11:25傳統的U N I X實現在內核中設有緩沖存儲器,大多數磁盤I / O都通過緩存進行。當將數據寫
到文件上時,通常該數據先由內核復制到緩存中,如果該緩存尚未寫滿,則并不將其排入輸出
隊列,而是等待其寫滿或者當內核需要重用該緩存以便存放其他磁盤塊數據時,再將該緩存排
入輸出隊列,然后待其到達隊首時,才進行實際的I / O操作。這種輸出方式被稱之為延遲寫
(delayed write)(Bach 〔1 9 8 6〕第3章詳細討論了延遲寫)。延遲寫減少了磁盤讀寫次數,但是
第4章文件和目錄8 7
下載
卻降低了文件內容的更新速度,使得欲寫到文件中的數據在一段時間內并沒有寫到磁盤上。當
系統發生故障時,這種延遲可能造成文件更新內容的丟失。為了保證磁盤上實際文件系統與緩
存中內容的一致性,U N I X系統提供了s y n c和f s y n c兩個系統調用函數。
#include unistd.h>
void sync(void);
int fsync(intf i l e d e s) ;
返回:若成功則為0,若出錯則為-1
s y n c只是將所有修改過的塊的緩存排入寫隊列,然后就返回,它并不等待實際I / O操作結束。
系統精靈進程(通常稱為u p d a t e )一般每隔3 0秒調用一次s y n c函數。這就保證了定期刷新內
核的塊緩存。命令s y n c ( 1 )也調用s y n c函數。
函數f s y n c只引用單個文件(由文件描述符f i l e d e s指定),它等待I / O結束,然后返回。f s y n c可
用于數據庫這樣的應用程序,它確保修改過的塊立即寫到磁盤上。比較一下f s y n c和O _ S Y N C標
志(見3 . 1 3節)。當調用f s y n c時,它更新文件的內容,而對于O _ S Y N C,則每次對文件調用w r i t e
函數時就更新文件的內容。


fflush和fsync的聯系和區別
[zz ] http://blog.chinaunix.net/u2/73874/showart_1421917.html

1.提供者fflush是libc.a中提供的方法,fsync是系統提供的系統調用。2.原形fflush接受一個參數FILE *.fflush(FILE *);fsync接受的時一個Int型的文件描述符。fsync(int fd);3.功能fflush:是把C庫中的緩沖調用write函數寫到磁盤[其實是寫到內核的緩沖區]。fsync:是把內核緩沖刷到磁盤上。

c庫緩沖-----fflush---------〉內核緩沖--------fsync-----〉磁盤


再轉一篇英文的

Write-back support
UBIFS supports write-back, which means that file changes do not go to the flash media straight away, but they are cached and go to the flash later, when it is absolutely necessary. This helps to greatly reduce the amount of I/O which results in better performance. Write-back caching is a standard technique which is used by most file systems like ext3 or XFS.
In contrast, JFFS2 does not have write-back support and all the JFFS2 file system changes go the flash synchronously. Well, this is not completely true and JFFS2 does have a small buffer of a NAND page size (if the underlying flash is NAND). This buffer contains last written data and is flushed once it is full. However, because the amount of cached data are very small, JFFS2 is very close to a synchronous file system.
Write-back support requires the application programmers to take extra care about synchronizing important files in time. Otherwise the files may corrupt or disappear in case of power-cuts, which happens very often in many embedded devices. Let's take a glimpse at Linux manual pages:
$ man 2 write
....
NOTES
A successful return from write() does not make any guarantee that data
has been committed to disk. In fact, on some buggy implementations, it
does not even guarantee that space has successfully been reserved for
the data. The only way to be sure is to call fsync(2) after you are
done writing all your data.
...
This is true for UBIFS (except of the "some buggy implementations" part, because UBIFS does reserves space for cached dirty data). This is also true for JFFS2, as well as for any other Linux file system.
However, some (perhaps not very good) user-space programmers do not take write-back into account. They do not read manual pages carefully. When such applications are used in embedded systems which run JFFS2 - they work fine, because JFFS2 is almost synchronous. Of course, the applications are buggy, but they appear to work well enough with JFFS2. But the bugs show up when UBIFS is used instead. Please, be careful and check/test your applications with respect to power cut tolerance if you switch from JFFS2 to UBIFS. The following is a list of useful hints and advices.
If you want to switch into synchronous mode, use the -o sync option when mounting UBIFS; however, the file system performance will drop - be careful; Also remember that UBIFS mounted in synchronous mode provides less guarantees than JFFS2 - refer this section for details.
Always keep in mind the above statement from the manual pages and run fsync() for all important files you change; of course, there is no need to synchronize "throw-away" temporary files; Just think how important is the file data and decide; and do not use fsync() unnecessarily, because this will hit the performance;
If you want to be more accurate, you may use fdatasync(), in which cases only data changes will be flushed, but not inode meta-data changes (e.g., "mtime" or permissions); this might be more optimal than using fsync() if the synchronization is done often, e.g., in a loop; otherwise just stick with fsync();
In shell, the sync command may be used, but it synchronizes whole file system which might be not very optimal; and there is a similar libc sync() function;
You may use the O_SYNC flag of the open() call; this will make sure all the data (but not meta-data) changes go to the media before the write() operation returns; but in general, it is better to use fsync(), because O_SYNC makes each write to be synchronous, while fsync() allows to accumulate many writes and synchronize them at once;
It is possible to make certain inodes to be synchronous by default by setting the "sync" inode flag; in a shell, the chattr +S command may be used; in C programs, use the FS_IOC_SETFLAGS ioctl command; Note, the mkfs.ubifs tool checks for the "sync" flag in the original FS tree, so the synchronous files in the original FS tree will be synchronous in the resulting UBIFS image.
Let us stress that the above items are true for any Linux file system, including JFFS2.
fsync() may be called for directories - it synchronizes the directory inode meta-data. The "sync" flag may also be set for directories to make the directory inode synchronous. But the flag is inherited, which means all new children of this directory will also have this flag. New files and sub-directories of this directory will also be synchronous, and their children, and so forth. This feature is very useful if one needs to create a whole sub-tree of synchronous files and directories, or to make all new children of some directory to be synchronous by default (e.g., /etc).
The fdatasync() call for directories is "no-op" in UBIFS and all UBIFS operations which change directory entries are synchronous. However, you should not assume this for portability (e.g., this is not true for ext2). Similarly, the "dirsync" inode flag has no effect in UBIFS.
The functions mentioned above work on file-descriptors, not on streams (FILE *). To synchronize a stream, you should first get its file descriptor using the fileno() libc function, then flush the stream using fflush(), and then synchronize the file using fsync() or fdatasync(). You may use other synchronization methods, but remember to flush the stream before synchronizing the file. The fflush() function flushes the libc-level buffers, while sync(), fsync(), etc flush kernel-level buffers.
Please, refer this FAQ entry for information about how to atomically update the contents of a file. Also, the Theodore Tso's article is a good reading.
Write-back knobs in Linux
Linux has several knobs in "/proc/sys/vm" which you may use to tune write-back. The knobs are global, so they affect all file-systems. Please, refer the "Documentation/sysctl/vm.txt" file fore more information. The file may be found in the Linux kernel source tree. Below are interesting knobs described in UBIFS context and in a simplified form.
dirty_writeback_centisecs - how often the Linux periodic write-back thread wakes up and writes out dirty data. This is a mechanism which makes sure all dirty data hits the media at some point.
dirty_expire_centisecs - dirty data expire period. This is maximum time data may stay dirty. After this period of time it will be written back by the Linux periodic write-back thread. IOW, the periodic write-back thread wakes up every "dirty_writeback_centisecs" centi-seconds and synchronizes data which was dirtied "dirty_expire_centisecs" centi-seconds ago.
dirty_background_ratio - maximum amount of dirty data in percent of total memory. When the amount of dirty data becomes larger, the periodic write-back thread starts synchronizing it until it becomes smaller. Even non-expired data will be synchronized. This may be used to set a "soft" limit for the amount of dirty data in the system.
dirty_ratio - maximum amount of dirty data at which writers will first synchronize the existing dirty data before adding more. IOW, this is a "hard" limit of the amount of dirty data in the system.
Note, UBIFS additionally has small write-buffers which are synchronized every 3-5 seconds. This means that most of the dirty data are delayed by dirty_expire_centisecs centi-seconds, but the last few KiB are additionally delayed by 3-5 seconds.
UBIFS write-buffer
UBIFS is asynchronous file-system (read this section for more information). As other Linux file-system, it utilizes the page cache. The page cache is a generic Linux memory-management mechanism. It may be very large and cache a lot of data. When you write to a file, the data are written to the page cache, marked as dirty, and the write returns (unless the file is synchronous). Later the data are written-back.
Write-buffer is an additional UBIFS buffer, which is implemented inside UBIFS, and it sits between the page cache and the flash. This means that write-back actually writes to the write-buffer, not directly to the flash.
The write-buffer is designated to speed-up UBIFS on NAND flashes. NAND flashes consist of NAND pages, which are usually 512, 2KiB or 4KiB in size. NAND page is the minimal read/write unit of NAND flash (see this section).
Write-buffer size is equivalent to NAND page size (so it is tiny comparing to the page cache). It's purpose is to accumulate small writes, and write full NAND pages instead of partially filled. Indeed, imagine we have to write 4 512-byte nodes with half a second interval, and NAND page size is 2KiB. Without write-buffer we would have to write 4 NAND pages and waste 6KiB of flash space, while write-buffer allows us to write only once and waste nothing. This means we write less, we create less dirty space so UBIFS garbage collector will have to do less work, we save power.
Well, the example shows an ideal situation, and even with the write-buffer we may waste space, for example in case of synchronous I/O, or if the data arrives with long time intervals. This is because the write-buffer has an associated timer, which flushes it every 3-5 seconds, even if it isn't full. We do this for data integrity reasons.
Of course, when UBIFS has to write a lot of data, it does not use write buffer. Only the last part of the data which is smaller than the NAND page ends up in the write-buffer and waits more for data, until it is flushed by the timer.
The write-buffer implementation is a little more complex, and we actually have several of them - one for each journal head. But this does not change the basic idea behind the write-buffer.
Few notes with regards to synchronization:
"sync()" also synchronizes all write-buffers;
"fsync(fd)" also synchronizes all write-buffers which contain pieces of "fd";
synchronous files, as well as files opened with "O_SYNC", bypass write-buffers, so the I/O is indeed synchronous for this files;
write-buffers are also bypassed if the file-system is mounted with the "-o sync" mount option.
Take into account that write-buffers delay the data synchronization timeout defined by "dirty_expire_centisecs" (see here) by 3-5 seconds. However, since write-buffers are small, only few data are delayed.
UBIFS in synchronous mode vs JFFS2
When UBIFS is mounted in synchronous mode (-o sync mount options) - all file system operations become synchronous. This means that all data are written to flash before the file-system operations return.
For example, if you write 10MiB of data to a file f.dat using the write() call, and UBIFS is in synchronous mode, then UBIFS guarantees that all 10MiB of data and the meta-data (file size and date changes) will reach the flash media before write() returns. And if a power cut happens after the write() call returns, the file will contain the written data.
The same is true for situations when f.dat has was opened with O_SYNC or has the sync flag (see man 2 chattr).
It is well-known that the JFFS2 file-system is synchronous (except a small write-buffer). However, UBIFS in synchronous mode is not the same as JFFS2 and provides somewhat less guarantees that JFFS2 does with respect to sudden power cuts.
In JFFS2 all the meta-data (like inode atime/mtime/ctime, inode size, UID/GID, etc) are stored in the data node headers. Data nodes carry 4KiB of (compressed) data. This means that the meta-data information is duplicated in many places, but this also means that every time JFFS2 writes a data node to the flash media, it updates inode size as well. So when JFFS2 mounts it scans the flash media, finds the latest data node, and fetches the inode size from there.
In practice this means that JFFS2 will write these 10MiB of data sequentially, from the beginning to the end. And if you have a power cut, you will just lose some amount of data at the end of the inode. For example, if JFFS2 starts writing those 10MiB of data, write 5MiB, and a power cut happens, you will end up with a 5MiB f.dat file. You lose only the last 5MiB.
Things are a little bit more complex in case of UBIFS, where data are stored in data nodes and meta-data are stored in (separate) inode nodes. The meta-data are not duplicated in each data node, like in JFFS2. UBIFS never writes data nodes beyond the on-flash inode size. If it has to write a data node and the data node is beyond the on-flash inode size (the in-memory inode has up-to-data size, but it is dirty and was not flushed yet), then UBIFS first writes the inode to the media, and then it starts writing the data. And if you have an interrupt, you lose data nodes and you have holes (or old data nodes, if you are overwriting). Lets consider an example.
User creates an empty file f.dat. The file is synchronous, or UBIFS is mounted in synchronous mode. User calls the write() function with a 10MiB buffer.
The kernel first copies all 10MiB of the data to the page cache. Inode size is changed to 10MiB as well and the inode is marked as dirty. Nothing has been written to the flash media so far. If a power cut happens at this point, the user will end up with an empty f.dat file.
UBIFS sees that the I/O has to be synchronous, and starts synchronizing the inode. First of all, it writes the inode node to the flash media. If a power cut happens at this moment, the user will end up with a 10MiB file which contains no data (hole), and if he read this file, he will get 10MiB of zeroes.
UBIFS starts writing the data. If a power cut happens at this point, the user will end up with a 10MiB file containing a hole at the end.
Note, if the I/O was not synchronous, UBIFS would skip the last step and would just return. And the actual write-back would then happen in back-ground. But power cuts during write-back could anyway lead to files with holes at the end.
Thus, synchronous I/O in UBIFS provides less guarantees than JFFS2 I/O - UBIFS has an effect of holes at the end of files. In ideal world applications should not assume anything about the contents of files which were not synchronized before a power-cut has happened. And "mainstream" file-systems like ext3 do not provide JFSS2-like guarantees.
However, UBIFS is sometimes used as a JFFS2 replacement and people may want it to behave the same way as JFFS2 if it is mounted synchronously. This is doable, but needs some non-trivial development, so this was not implemented so far. On the other hand, there was no strong demand. You may implement this as an exercise, or you may try to convince UBIFS authors to do this.
Synchronization exceptions for buggy applications
As this section describes, UBIFS is an asynchronous file-system, and applications should synchronize their files whenever it is required. The same applies to most Linux file-systems, e.g. XFS.
However, many applications ignore this and do not synchronize files properly. And there was a huge war between user-space and kernel developers related to ext4 delayed allocation feature. Please, see the Theodore Tso's blog post. More information may be found in this LWN article.
In short, the flame war was about 2 cases. The first case was about the atomic re-name, where many user-space programs did not synchronize the copy before re-naming it. The second case was about applications which truncate files, then change them. There was no final agreement, but the "we cannot ignore the real world" argument found ext4 developers' understanding, and there were 2 ext4 changes which help both problems.
Roughly speaking, the first change made ext4 synchronize files on close if they were previously truncated. This was a hack from file-system point of view, but it "fixed" applications which truncate files, write new contents, and close the files without synchronizing them.
The second change made ext4 synchronize the renamed file.
Well, this is not exactly correct description, because ext4 does not write the files synchronously, but actually initiates asynchronous write-out of the files, so the performance hit is not very high. For the truncation case this means that the file is synchronized soon after it is closed. For the re-name case this means that ext4 writes data before it writes the re-name meta-data.
However, the application writers should never rely on these things, because this is not portable. Instead, they should properly synchronize files. The ext4 fixes were because there were many broken user-space applications in the wild already.
We have plans to implement these features in UBIFS, but this has not been done yet. The problem is that UBI/MTD are fully synchronous and we cannot initiate asynchronous write-out, so we'd have to synchronously write files on close/rename, which is slow. So implementing these features would require implementing asynchronous I/O in UBI, which is a big job. But feel free to do this :-).

標簽:衡陽 仙桃 茂名 六盤水 三門峽 湘西 衡陽 慶陽

巨人網絡通訊聲明:本文標題《Linux系統調用fsync函數詳解》,本文關鍵詞  Linux,系統,調用,fsync,函數,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Linux系統調用fsync函數詳解》相關的同類信息!
  • 本頁收集關于Linux系統調用fsync函數詳解的相關信息資訊供網民參考!
  • 推薦文章
    亚洲AV无码乱码国产精品牛牛| 一区二区欧美亚洲| www.66久久| 无码人妻久久一区二区三区不卡| 久操免费在线视频| 免费一级a毛片| 亚州成人在线电影| 韩国欧美亚洲国产| 欧美日韩一区二区三区免费| 动漫美女无遮挡免费| 男人天堂2024| 日韩精品一区二区三区四区| 久久久久久久久久久久久国产| 美国美女黄色片| 日本美女视频一区二区| 中文字幕一区二区三区精华液| 欧美一区二区高清| 精品国产一区二区三区四区vr| 成人免费黄色av| 久久久久久不卡| 99在线视频精品| 日韩视频在线观看免费| 精品国产精品国产精品| 亚洲精品一区在线观看| 精品国产一二三四区| 91丨九色丨海角社区| 成a人片亚洲日本久久| 日韩欧美国产综合在线一区二区三区 | 福利一区视频在线观看| 日韩欧美国产一区在线观看| 风间由美久久久| 成人毛片在线播放| 日韩精品免费在线| 2020国产精品久久精品不卡| 欧美日韩精品亚洲精品| 国产精品水嫩水嫩| 亚洲一区二区高清| 裸模一区二区三区免费| 国产精品久久久久久久久毛片 | 91丨porny丨首页| 亚洲国产精品一区二区www| 精品国精品国产| 亚洲不卡在线观看| 欧美视频自拍偷拍| 亚洲激情一区二区三区| 日批视频免费在线观看| 亚洲成av人在线观看| 国产精品一区二区av| 国产一级中文字幕| 亚洲精品在线免费播放| 男生裸体视频网站| 在线欧美一区二区| 夜夜爽99久久国产综合精品女不卡 | 欧美极品美女视频网站在线观看免费| 欧美a∨亚洲欧美亚洲| 欧美激情中文不卡| 日本视频久久久| 少妇真人直播免费视频| 91毛片在线观看| 亚洲激情在线观看视频免费| 色噜噜狠狠一区二区| 国产最新精品免费| 激情久久av一区av二区av三区| 青青草视频在线免费播放 | 男人插女人下面免费视频| 欧美在线一二三| 国产精品扒开腿做爽爽| 中文在线资源观看视频网站免费不卡| 在线观看福利片| 色综合久久88色综合天天免费| 成人午夜激情网| 中文字幕亚洲第一| 日韩av一区二区三区| 久久er精品视频| 午夜伊人狠狠久久| 久久国产精品电影| 国产又大又长又粗又黄| 久久丫精品忘忧草西安产品| 亚洲图片欧美在线| 亚洲色图视频网| 欧美日本高清一区| 国产一二三区在线播放| 日本熟妇色xxxxx日本免费看| 91在线精品秘密一区二区| 亚洲大尺度美女在线| 999视频在线免费观看| 国产精品无码人妻一区二区在线| 国产视频手机在线播放| 一级片在线免费观看视频| 欧美成人午夜视频| 成人三级视频在线观看一区二区| 精品久久久久久亚洲| 中文字幕一区二区免费| 亚洲少妇30p| 欧美国产日韩xxxxx| 国产免费黄色av| 免费看污视频的网站| 一本一道久久a久久精品| 国产精品日韩av| 五月激情五月婷婷| 久久久久久久高潮| 精品久久免费看| 久久艳妇乳肉豪妇荡乳av| 少妇精品一区二区三区| 99视频一区二区| 精品国产欧美成人夜夜嗨| 日av中文字幕| 亚洲av综合色区无码一区爱av| 色香色香欲天天天影视综合网| 成人久久一区二区| 多男操一女视频| 国产精品成人一区二区艾草| 日韩美女在线观看| 国产一卡二卡三卡四卡| 6—12呦国产精品| 国产精品国产精品国产专区不片| 日韩情涩欧美日韩视频| 国产美女激情视频| 欧美日韩日日骚| 91麻豆精品久久毛片一级| 国产成人免费91av在线| 亚洲美女在线一区| 欧美大喷水吹潮合集在线观看| av不卡在线播放| 国模精品视频一区二区| 成人一区二区三区仙踪林| 黄一区二区三区| 欧美成人性色生活仑片| 久久免费精品国产| 久久综合色婷婷| 国产99久久久欧美黑人| 香蕉网在线播放| 久久精品视频在线免费观看| 国产精品www| 可以免费看av的网址| 国产精品久久久一区麻豆最新章节| 欧美一区二区色| 国产三级av在线播放| 久久这里都是精品| 日韩视频123| 欧美a v在线播放| 91亚洲大成网污www| 久久夜色精品国产亚洲aⅴ| 美女网站免费观看视频 | 91精品视频一区| 天天操夜夜操av| 91黄色免费观看| 成人欧美一区二区三区在线| av免费观看在线| 一本色道久久88综合亚洲精品ⅰ| 欧洲在线免费视频| 成+人+亚洲+综合天堂| 国产精品草莓在线免费观看| 欧美黑吊大战白妞| 精品美女一区二区三区| www.污网站| 国产精品伦理在线| 小说区图片区图片区另类灬| 中文字幕69页| 制服丝袜成人动漫| 天天爽夜夜爽一区二区三区| xnxx国产精品| 成人性色av| 精品久久久免费视频| 精品国产欧美成人夜夜嗨| 特级西西人体wwwww| 亚洲国产一二三| 国产欧美精品aaaaaa片| 风间由美性色一区二区三区| 久久大香伊蕉在人线观看热2| 中文字幕一区二区三区四区免费看| 国产香蕉97碰碰久久人人| 亚洲天堂网一区| 无码h黄肉3d动漫在线观看| 日韩中文字幕视频| 懂色av蜜臀av粉嫩av永久| 欧美专区日韩专区| 国产在线观看中文字幕| 久久久久女人精品毛片九一| 亚洲一区二区三区四区在线观看 | 韩国欧美一区二区| 日本一区二区视频在线观看| 色av成人天堂桃色av| 国产一区二区免费| 欧美一级片在线播放| 亚洲国产欧洲综合997久久| 国产原创精品在线| 欧美日韩精品在线观看视频| 亚洲黄色在线免费观看| 国产日韩精品一区二区三区在线| 欧美中文一区二区三区| 欧美刺激性大交免费视频| 国产不卡一区二区在线观看| 18视频在线观看娇喘| 日本一区二区免费视频| 日韩色图在线观看| 精品夜夜嗨av一区二区三区| 亚洲一区二区三区中文字幕在线| 精品亚洲va在线va天堂资源站| 国产国产精品人在线视| 亚洲第一综合网站| 添女人荫蒂视频| 一区二区三区www污污污网站| 久久成人精品无人区| 五月婷婷激情综合| 国产一区二区黄| 国产91视觉| 最近中文字幕一区二区| 18精品爽视频在线观看| 亚洲第一成人av| 国产精品久久久久久亚洲毛片 | av免费观看网| 日韩激情综合网| 天使萌一区二区三区免费观看| 亚洲码国产岛国毛片在线| 精品成人一区二区| 国产乱色精品成人免费视频| 国产激情视频一区二区在线观看| 色噜噜狠狠色综合中国| 欧美人交a欧美精品| 亚洲一区二区三区精品在线观看| 国产伦精品一区三区精东| 国产精品自偷自拍| 日本一区二区成人| 亚洲欧美日韩网| 国产91一区二区三区| 天天综合天天添夜夜添狠狠添| 69夜色精品国产69乱| 秋霞电影网一区二区| 好吊成人免视频| 久久久亚洲福利精品午夜| 香蕉视频在线网址| 麻豆国产精品一区| 全国男人的天堂网| 亚洲高清在线视频| 欧美日韩第一视频| 视频在线一区二区三区| 我和岳m愉情xxxⅹ视频| 性xxxxbbbb| 婷婷成人综合网| 久久久久久亚洲精品中文字幕| 日韩第一页在线观看| 中文字幕91视频| 日韩二区三区在线观看| 日韩欧美亚洲综合| 欧美诱惑福利视频| 久久久久久久久久久视频| 日本少妇bbwbbw精品| 国产成a人亚洲精品| 日韩一级成人av| 亚洲自拍小视频| 亚洲在线观看网站| jizz中国女人| 亚洲国产欧美一区二区三区丁香婷| 不用播放器成人网| 熟女视频一区二区三区| 国产精品白丝喷水在线观看| 国产一区二区三区免费看| 欧美性猛交xxxx黑人| 国产盗摄xxxx视频xxx69| 国产91对白刺激露脸在线观看| 日本三级欧美三级| 久久亚区不卡日本| 一区二区三区四区在线观看视频| 一区在线电影| av激情在线观看| 91蜜桃免费观看视频| 亚洲成人精品视频在线观看| 婷婷国产在线综合| 亚洲女人天堂视频| 日韩久久在线| 在线免费观看亚洲视频| 成人毛片在线观看| 亚洲网址你懂得| 爱爱爱视频网站| 日本系列第一页| 国产日韩欧美高清| 久久国产精品电影| 亚洲一区在线免费| 国产精品不卡av| 中文字幕一区二区三区四区不卡| 欧美伦理91i| 日本黄网站免费| 波多野结衣不卡| 亚洲自拍另类综合| 日韩美女视频在线观看| 蜜桃福利午夜精品一区| 少妇精品高潮欲妇又嫩中文字幕| 色拍拍在线精品视频8848| 国产精品男人爽免费视频1| 免费在线观看污网站| 粉嫩av一区二区夜夜嗨| 欧美在线综合视频| 久久av免费一区| 婷婷激情四射网| 久久九九久久九九| 欧美激情精品久久久久久蜜臀| 国产精品无码人妻一区二区在线| 一区二区视频在线免费观看| 欧美日韩性视频| 成人av蜜桃| 一区二区三区伦理片| 91视频免费看| 久久91亚洲精品中文字幕奶水| 2019亚洲男人天堂| 久久伊人91精品综合网站| 亚洲国产一区二区三区在线 | 欧美一区二区色| 日韩久久久久久久久久久| 久久一日本道色综合久久| 在线电影欧美成精品| 欧美一区激情视频在线观看| 久久久精品人妻一区二区三区四 | 国产精品成人国产乱一区| 不卡的一区二区| 激情伊人五月天久久综合| 制服丝袜亚洲精品中文字幕| 五月天亚洲综合| 丁香六月婷婷综合| 欧美日韩免费在线| 俄罗斯精品一区二区| 欧美人妻精品一区二区三区 | 亚洲免费观看高清完整版在线观看 | 精品日产一区2区三区黄免费| 欧美爱爱免费视频| 亚洲图片你懂的| 国产日韩在线精品av| 黄瓜视频污在线观看| 99视频在线精品| 欧美华人在线视频| 久久久久亚洲av无码专区首jn| 日韩国产高清在线| 中文字幕国产精品久久| 国产无套粉嫩白浆内谢的出处| 久久婷婷亚洲| 亚洲人成啪啪网站| 精品999在线| 麻豆精品视频在线观看免费| 一本色道久久88综合日韩精品 | 中文字幕在线观看一区| 国产精品入口福利| 女同久久另类69精品国产| 亚洲欧洲日产国产综合网| 91久久久久久久一区二区| 国产jizz18女人高潮| 一区二区三区中文字幕| 成人资源av| 久久久久久不卡| 欧美日韩国产综合久久| 制服诱惑一区| 精品国产亚洲av麻豆| 亚洲精品一区av在线播放| 欧美 日韩 国产 激情| 激情综合网最新| 国模精品视频一区二区| 日本美女xxx| 亚洲精品欧美在线| 国产欧美日韩一区| 日韩黄色免费观看| 亚洲最大成人综合| 久久久久久草| 中文字幕 亚洲视频| 欧美日韩一本到| 黄色成人在线免费观看| 婷婷av一区二区三区| 最新国产精品拍自在线播放| 国产吃瓜黑料一区二区| 国产午夜精品美女毛片视频| 亚洲综合国产精品| 毛片毛片女人毛片毛片| 日韩一区二区三区在线视频| 中文字幕中文字幕一区三区| 日韩专区第一页| 欧美成人免费网| 这里只有久久精品| 一区二区日韩av| 日韩av电影免费播放| 欧美特级特黄aaaaaa在线看| 色哟哟网站入口亚洲精品| 成人区人妻精品一区二 | 欧美性一区二区三区| 天天看天天摸天天操| 亚洲国产一区二区三区青草影视 | 亚洲国产午夜伦理片大全在线观看网站 | 一区二区三区免费| 欧美日韩在线高清| 精品久久久久中文慕人妻| 日韩中文字在线| 亚洲欧美视频在线播放| 亚洲一区二区中文在线| 久久人人九九| a天堂在线视频| 日韩视频中文字幕| av网在线播放| 日本乱人伦aⅴ精品| 精品国偷自产一区二区三区| 毛片av一区二区三区| 久久久久国产视频| 91插插插插插插| 欧美日韩精品专区| 久久精品午夜福利| 国产亚洲欧洲997久久综合| 国产精品av一区| 精品人妻伦一二三区久久| 这里只有精品在线观看| 久久午夜夜伦鲁鲁片| 午夜精品福利在线| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 国精品人妻无码一区二区三区喝尿| 久久久91精品|