日韩成人av网_四虎成人精品永久免费av_亚洲图片欧美在线_欧美高清性xxxxhd_一本色道久久综合亚洲aⅴ蜜桃 _欧美亚洲国产另类_国内久久婷婷综合_国产伦视频一区二区三区_一区二区三区日韩在线观看_狠狠操精品视频_亚洲视频在线观看一区_成人在线免费观看av

 
 

您當前的位置: 首頁 > 網絡技術  > 服務器教程 瀏覽
Linux系統調用fsync函數詳解
發布時間:2015-12-14    點擊率:次    來源:www.0068468.cn    作者:電腦技術學習網

   功能描述:

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

  用法:

  #include

  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

  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. Lets 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 Tsos 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). Its 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 isnt 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 Tsos 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 wed 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 :-).

來源 電腦技術網 www.0068468.cn
發表留言
發表留言請先登錄!
免責聲明:本站發布的信息和評論純屬網民個人行為,并不代表本站立場,如發現有違法信息或侵權行為,請直接與本站管理員聯系,我們將在收到您的信息后24小時內作出處理!
人妻中文字幕一区| 日本精品视频在线| 欧美日韩成人综合| 国产日韩高清在线| 国产乱对白刺激视频不卡| 亚洲av无码不卡| 亚洲欧洲日韩综合| 欧美一区二区黄| 香蕉久久国产av一区二区| 午夜激情视频网| 国产亚洲成人av| 天堂网一区二区三区| 五月天激情丁香| 国产精品久久久久久久久毛片| 精品视频免费看| 久久久久久免费看| 日日夜夜精品视频免费| 国产福利91精品一区二区三区| 丁香六月色婷婷| 久久99精品国产| 久久久不卡网国产精品二区| 黄色激情视频在线观看| 一本一本a久久| 最近中文字幕日韩精品| 91黄色免费网站| 有码中文亚洲精品| 精品国产一区二区国模嫣然| 欧美一区二区大片| 国产精品视频免费一区| 伊人久久久久久久久久久久| 一本到三区不卡视频| 久久久久www| 久久成人这里只有精品| 久久精品夜夜夜夜夜久久| 久国内精品在线| 国产一区国产精品| 国产又黄又粗的视频| 日本黄色片在线播放| 97caocao| 91av久久久| 国产精一品亚洲二区在线视频| 午夜久久久久久久久久影院| 国产5g成人5g天天爽| www.色就是色| 成人免费看的视频| 一区二区三区日韩欧美| 国产精品高潮呻吟久久av黑人| 热久久精品国产| 日韩一级在线免费观看| 手机av免费看| 亚洲精品一区二区三区新线路| 午夜电影久久久| 蜜桃91麻豆精品一二三区| 999这里只有精品| 欧产日产国产v| 久久成人国产精品入口| 中文字幕在线不卡| 午夜激情一区二区三区| 精品中文字幕在线| 亚洲三级在线观看视频| 欧美国产日产图区| 麻豆av一区二区| 欧美熟妇乱码在线一区| 精品久久中文字幕久久av| 亚洲国产精品免费| 亚洲91精品在线观看| www.xxx麻豆| 亚洲一区尤物| 国产精品视频中文字幕91| 久久人人爽人人爽人人片av高清| 国产婷婷成人久久av免费高清| 日韩av一二三四区| 五月婷婷色丁香| 秋霞午夜av一区二区三区| 精品少妇一区二区三区视频免付费| 亚洲人精品午夜射精日韩| 久久久国产一区二区三区四区小说| 91久久久久久久一区二区| 在线观看污视频| 中文字幕第36页| 中文字幕精品视频在线观看| 欧美午夜片在线免费观看| 成人国产电影网| 成人一级视频在线观看| 欧美国产日韩a欧美在线观看| 国产欧美日韩激情| 精品中文字幕一区二区小辣椒 | 欧美精品成人一区二区在线观看| 国产乱码精品一品二品| 亚洲午夜精品一区二区三区| 一本一道人人妻人人妻αv| 欧美亚洲综合一区| 国产伦精品一区二区三区照片91| 欧美性猛交xxxx乱大交91| jizz中国少妇| 欧美日韩国产影片| 亚洲人成网站999久久久综合| av成人综合网| 欧美国产日韩一二三区| 在线观看亚洲区| av免费中文字幕| 蜜桃久久一区二区三区| 蜜桃久久久久久久| 国产小视频91| 大香煮伊手机一区| 干日本少妇首页| 性刺激的欧美三级视频| 91麻豆精品国产91久久综合| 99久久久无码国产精品免费蜜柚| 久久久综合网| 亚洲影视在线观看| 国产亚洲精品激情久久| 91九色露脸| 一本久道中文无码字幕av| 色一情一交一乱一区二区三区| 久久精品国产亚洲av麻豆蜜芽| 毛片不卡一区二区| 93久久精品日日躁夜夜躁欧美| 欧美激情综合五月色丁香| 色综合av在线| 欧美有码在线视频| 国产97在线 | 亚洲| 亚洲欧美小视频| 国产老肥熟一区二区三区| 欧美视频精品在线观看| 精品小视频在线| 国产精品美女诱惑| 国产精品一级黄片| 久久亚洲欧洲| 欧美精品欧美精品| 欧美一区,二区| 久久综合网络一区二区| 色噜噜狠狠色综合中国| 性色av一区二区三区免费| 亚洲免费视频播放| 久久精品无码人妻| 亚洲国产激情av| 欧美激情网站在线观看| 精品国产成人在线影院| 91久久久久久久久久久久久久| www.51色.com| 永久免费未视频| 成人h动漫精品| 精品日韩在线一区| 国产在线播放一区二区| 午夜精产品一区二区在线观看的| 日韩中文字幕免费观看| 在线精品国精品国产尤物884a| 日本亚洲精品在线观看| 男生操女生视频在线观看| 久久综合图片| 夜夜嗨av一区二区三区免费区| 亚洲在线色站| 国产精品高潮呻吟AV无码| 欧美在线啊v一区| 精品国产一区二区三区麻豆小说 | 成人美女在线视频| 亚洲欧美在线视频观看| 久久99国产综合精品女同| 日韩毛片在线免费看| 一级黄色片在线看| 4438x成人网最大色成网站| 亚洲一区二区免费视频软件合集| 国产在线观看黄色| 69久久夜色精品国产69蝌蚪网| 日本日本精品二区免费| 亚洲av综合一区| 日韩一级片在线播放| 熟妇熟女乱妇乱女网站| 亚洲黄色在线播放| 中文字幕亚洲欧美| 三上悠亚ssⅰn939无码播放| 国产精品美女久久久久久2018| 国产欧美一区二区三区视频| 国产精品久久久久久久精| 一本色道久久综合狠狠躁的推荐| 91免费在线观看网站| 激情综合网五月婷婷| 天天综合日日夜夜精品| 自拍另类欧美| 久久99久国产精品黄毛片色诱| 尤物tv国产一区| 久久精品国产亚洲av久| 在线一区二区三区做爰视频网站| 色哺乳xxxxhd奶水米仓惠香| 国产91丝袜在线18| 国产日产精品一区二区三区四区| 免费在线黄色片| 欧美性色视频在线| 亚欧美在线观看| 在线免费观看一区| 中文字幕第三区| 色视频成人在线观看免| 国产精品日日摸夜夜爽| 精品电影在线观看| 污视频在线观看免费网站| 日韩欧美在线观看| 国产国语老龄妇女a片| 欧美日韩视频一区二区| 可以直接看的无码av| 欧美一区二区二区| 国产黄色的视频| 美女啪啪无遮挡免费久久网站| 国产午夜免费视频| 精品精品欲导航| 国产精九九网站漫画| 欧美一区二区三区四区视频| 波多野结衣加勒比| 日韩三区在线观看| 免费中文字幕在线| 国产亚洲欧美另类中文| 福利网址在线观看| 久久久免费电影| 午夜婷婷在线观看| 国产在线精品成人一区二区三区| 青娱乐精品在线视频| 波多野结衣 久久| 国产乱码精品一区二区三区忘忧草| 日韩不卡免费视频| 久久99九九| 成人av免费网站| 91好吊色国产欧美日韩在线| 欧美在线观看一二区| 成 人 黄 色 小说网站 s色| 欧美午夜激情在线| 国产精品天天干| 深夜福利国产精品| 国产老妇伦国产熟女老妇视频| 国产在线视频2019最新视频| 麻豆中文一区二区| 男女超爽视频免费播放| 欧美日韩亚洲高清| 日韩精品一区二区亚洲av性色| 久久久免费电影| 国产91在线观看| 五月天婷婷激情视频| 日韩欧美自拍偷拍| 中文区中文字幕免费看| 久久精品一二三区| 午夜av电影一区| a级黄色片免费看| 国产色婷婷国产综合在线理论片a| 国产成人丝袜美腿| 一区二区免费av| 久久中文字幕在线| 国产成人日日夜夜| www精品久久| 日韩av资源在线播放| 亚洲欧美综合一区二区| 高清在线观看免费| 在线电影av不卡网址| 久久精品国产精品亚洲红杏| 国产精品自拍合集| 亚洲国产精品成人综合| 中文字幕乱码在线| 91精品中文在线| 日本一区二区三级电影在线观看 | 色免费在线视频| 欧美成人免费一级人片100| 国产亚洲欧美一区在线观看| 小早川怜子一区二区的演员表| 国产美女在线精品免费观看| 欧美日韩一区二区在线观看| 亚洲精品无amm毛片| 国产综合内射日韩久| 亚洲精品免费一区二区三区| 日韩视频一区二区| 91在线观看免费视频| 波多野结衣二区三区| 秋霞毛片久久久久久久久| 日韩女优视频免费观看| 国产suv精品一区二区6| 日本在线一级片| 国产一线二线三线女| 欧洲亚洲妇女av| 精品国产一区久久| 亚洲欧洲日产国码二区| 深爱五月激情五月| 全程偷拍露脸中年夫妇| 免费激情视频在线观看| 91超碰在线电影| 中文字幕欧美国内| 久久久久国产精品人| a片在线免费观看| 91亚洲一区二区| 国产精品免费福利| 亚洲欧洲国产伦综合| 亚洲欧洲在线观看av| 久久91精品国产91久久小草 | 日本久久高清视频| 国产ts一区二区| 日韩av在线网| 91久久一区二区| 久久精品亚洲国产奇米99| 日韩福利片在线观看| 免费黄色a级片| 久久久久久久久久久久久国产精品| 精品欧美一区二区三区久久久| 久久久久国产精品免费| 精品第一国产综合精品aⅴ| 午夜精品久久久| 91网上在线视频| 青青草97国产精品免费观看无弹窗版| 久久婷婷一区二区| 无码人妻精品一区二区三应用大全 | 久久99国产精品成人| 天天操天天干天天插| 亚洲精品一区二三区| 加勒比av在线播放| 国产jizz18女人高潮| 久久精品国产亚洲av麻豆| 五月天六月丁香| 欧美 国产 小说 另类| 男人添女人下面高潮视频| 福利网在线观看| 日韩欧美第二区在线观看| 国产欧美日韩综合精品二区| 成人国产精品日本在线| 欧美性做爰毛片| 国产91精品久久久久| 欧美成人在线影院| 亚洲激情视频在线播放| 欧美日韩一区二区免费视频| 亚洲一区欧美在线| 在线不卡av电影| av地址在线观看| 日韩五码在线观看| 男人亚洲天堂网| av在线播放网址| 人妻体内射精一区二区| 国产探花在线视频| 中文字幕第28页| 国产原创视频在线| 黑人精品无码一区二区三区AV| 国产精品欧美综合| 日韩福利电影在线观看| 狠狠色伊人亚洲综合成人| av亚洲精华国产精华精| 亚洲男人天堂一区| 欧美另类高清zo欧美| 91麻豆精品国产91久久久久久| 日韩理论片久久| 久久青草福利网站| 亚洲综合色激情五月| 你懂的网址一区二区三区| www.69av| 超碰在线人人爱| 9.1片黄在线观看| 国产又黄又猛又爽| 玖玖精品视频| 久久久精品黄色| 国产精品久久久久久妇女6080| 精品成人乱色一区二区| 亚洲天堂av在线免费观看| 国产91亚洲精品| 狠狠精品干练久久久无码中文字幕 | 亚洲图片你懂的| 精品粉嫩超白一线天av| 久久乐国产精品| 日韩人妻精品一区二区三区| av无码一区二区三区| 一级特黄aaa大片| 国产综合久久久久久鬼色| 日韩人妻精品一区二区三区| 欧美一级爆毛片| 欧美精品在线视频观看| 国产精品美女av| 国产在线青青草| 欧美亚韩一区二区三区| 日本欧美一区二区| 91毛片在线观看| 日韩在线视频导航| 国内精品久久国产| 免费看毛片的网站| 日本免费不卡视频| 香蕉乱码成人久久天堂爱免费| 欧美电影一区二区| 亚洲自拍欧美色图| 国产视频久久久久久| 欧洲av在线播放| 欧美日韩国产综合视频在线观看中文| yw.139尤物在线精品视频| 日韩三级电影免费观看| 久久久男人的天堂| 无码精品人妻一区二区三区影院| 亚洲精品一二三四区| 97国产精品久久| 奇米影视四色在线| 久久精品网址| 欧美高清hd18日本| 精品免费二区三区三区高中清不卡| 中国av免费看| 国产一区二区视频在线播放| 精品一区二区三区三区| 亚洲三级一区| 女人黄色一级片| 日本一区免费视频| 欧美一二三视频| 日韩毛片在线免费看| 无码人妻精品一区二区三区9厂 | 欧洲亚洲免费在线| 在线免费观看成年人视频| 99国内精品久久| 不卡av在线播放| 这里只有精品在线观看视频| 美女www一区二区| 精品国产依人香蕉在线精品| 欧美第一页浮力影院| 精品亚洲aⅴ乱码一区二区三区| 91av在线免费观看|