精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

littlefs原理分析--存儲結構(一)

系統 OpenHarmony
本文介紹littlefs的整體結構,包括超級塊、文件、目錄等在磁盤上的存儲,以及文件、目錄打開后在內存中的表示,希望能讓讀者對littlefs有一個大概的印象。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

前言

littlefs是一個小型的文件系統,其特點有:

(1)具有磨損均衡功能。

(2)具有掉電保護能力。

(3)適用于ROM和RAM有限的場景。

本系列文章將對littlefs的原理進行分析。作為系列的第一篇,首先對littlefs整體的存儲結構進行介紹,在后面的文章中,再對具體的目錄、文件操作等進行分析。

1、總覽

#littlefs原理分析#[一]存儲結構-開源基礎軟件社區

littlefs的存儲結構大體上如上圖所示。其中超級塊是littlefs存儲目錄和文件的起點,根目錄緊隨其后。littlefs中的目錄均可以指向其他的目錄,構成樹狀結構。在目錄中可以包含多個文件,上圖中右邊的目錄中即包含了一個inline文件和一個outline文件。

2、元數據對

在對littlefs的存儲結構進行具體介紹之前,先對littlefs中一個核心的數據結構,即元數據,進行介紹。littlefs中使用元數據對存儲目錄信息、超級塊信息、文件信息、inline文件的數據等內容,是其設計的核心數據結構。

元數據對的存儲結構如下圖:

#littlefs原理分析#[一]存儲結構-開源基礎軟件社區

以下為具體說明:

  • 一個元數據對與物理上的兩個塊相對應,且均記錄了一個revision count。revision count較大的塊存儲的為較新的內容,每當更新其中的數據時,revision count就會加1。使用兩個塊的好處是,當一個塊放不下更新的內容時,可以將數據壓縮并轉存到另一個塊上(如進行compact操作),避免直接破壞原有的數據。
  • 每個超級塊、目錄均有其對應的一個或多個元數據對,其中記錄了超級塊或目錄相關的信息。如目錄對應的元數據對中可能存儲該目錄下的文件信息等。
  • 元數據對以tag為單元進行信息的存儲,以commit的方式進行信息的更新,這里是借鑒了logging文件系統的做法。如創建一個目錄,就會在對應的元數據對中進行一次commit,記錄CREATE、DIR、DIRSTRUCT等tag,最后計算CRC。
  • 元數據對每次進行commit時會計算CRC,以實現數據的校驗等功能。

(1)tag

如上文所述,tag是元數據中存儲信息的單元,其結構如下:

[----            32             ----]
[1|-- 11 --|-- 10 --|-- 10 --]
^. ^ . ^ ^- length
|. | . '------------ id
|. '-----.------------------ type (type3)
'.-----------.------------------ valid bit
[-3-|-- 8 --]
^ ^- chunk
'------- type (type1)

其中包含了tag的有效位、類型、id、長度等信息。對于不同類型的tag,其儲存的內容也不同。通常在tag后會緊跟其相應數據的內容,如CTZSTRUCT類型的tag后的data中存儲了文件大小和文件跳表頭所在的塊號:

tag                          data
[-- 32 --][-- 32 --|-- 32 --]
[1|- 11 -| 10 | 10 ][-- 32 --|-- 32 --]
^ ^ ^ ^ ^ ^- file size
| | | | '-------------------- file head
| | | '- size (8)
| | '------ id
| '------------ type (0x202)
'----------------- valid bit

3、超級塊

超級塊是littlefs存儲目錄和文件的起點,其元數據對所在的塊號起始為0,1。
超級塊以單個或多個元數據對的方式進行存儲,下圖為單個元數據對存儲超級塊的具體情形:

#littlefs原理分析#[一]存儲結構-開源基礎軟件社區

其中包含了LFS_TYPE_CREATE類型、LFS_TYPE_SUPERBLOCK類型等的tag。其中超級塊的具體數據信息存儲于LFS_TYPE_INLINESTRUCT類型的tag中。

相關數據結構如下:

typedef struct lfs_superblock {
uint32_t version; // littlefs版本
lfs_size_t block_size; // 一個塊的大小
lfs_size_t block_count; // 文件系統中塊的總數
lfs_size_t name_max; // 文件名字節數的最大值
lfs_size_t file_max; // 文件大小字節數的最大值
lfs_size_t attr_max; // 文件屬性字節數的最大值
} lfs_superblock_t;

4、目錄

目錄的存儲結構如上文總覽中所示,以單個或多個元數據對的方式進行存儲。以根目錄為起點,通過末尾對其他元數據對的塊指針,可以構成一個樹形結構。

單個目錄的元數據對具體存儲如下圖:

#littlefs原理分析#[一]存儲結構-開源基礎軟件社區

上圖中,中間的目錄使用了兩個元數據對進行存儲。第一個元數據對中SOFTTAIL類型的tag中存儲了指向父目錄中末尾目錄的塊指針(即在父目錄中最后創建的子目錄,當父目錄中還沒有創建子目錄時,該塊指針為空)。第二個元數據對中存儲了創建的子目錄的信息(包括CREATE、DIR、DIRSTRUCT等類型的tag),并指向了子目錄。

注:上述目錄與其父目錄、子目錄之間的鏈接方式只是可能的一種情況。隨著目錄的創建、刪除、移動等操作,具體的鏈接方式會發生變化,具體見后面的文章。

其中相關tag的表示如下:

  • 元數據對的塊指針相關:
  • HARDTAIL:表示同一目錄的下一個元數據對的塊指針。
  • SOFTTAIL:表示不同目錄的下一個元數據對的塊指針。
  • 目錄創建信息相關:在父目錄中會記錄CREATE、DIR、DIRSTRUCT、SOFTTAIL等類型的tag。
  • DIR:存儲目錄名和id。
  • DIRSTRUCT:存儲創建的子目錄的元數據對的塊指針。
  • SOFTTAIL:記錄了創建的子目錄的元數據對的塊指針。

(1)相關數據結構

目錄信息在內存中的表示如下:

typedef struct lfs_mdir {
lfs_block_t pair[2]; // 元數據對塊指針
uint32_t rev; // revision count

// 當前在元數據塊中的偏移
// 用于commit和fetch相關函數
// 作為起始偏移傳入,結束時保存了寫入后的偏移
lfs_off_t off;

// entry tag,用于記錄當前的ptag
// ptag用于commit過程中計算異或tag、計算CRC等,見commit機制和tag的遍歷
// 當fetch時,fetch到一個commit時,會將計算的ptag存入etag
// 當進行commit時,ptag就可以初始化為etag
uint32_t etag;

uint16_t count; // 目錄中屬性數量(文件、子目錄數)

// 表示下一個commit是否寫入完成
// 用于commit和fetch相關函數,見commit機制和tag的遍歷
// 當fetch時,fetch到末尾還未匹配,會把erased置為true
// 在commit函數中,只有erased為true才進行commit
bool erased;

bool split; // 表示當前目錄塊后面是否還有塊,為false時表示末尾

// 表示當前目錄塊中最后一個TAIL
// 既可能是HARDTAIL,也可能是SOFTTAIL
// 與fetch機制、目錄的遍歷等有關
lfs_block_t tail[2];

// 注:off、etag、erased、tail與commit機制、tag的遍歷等有關,見后面的文章
} lfs_mdir_t;

另外,littlefs中,內存中打開的目錄使用lfs_dir_t類型的數據結構進行記錄。見littlefs中mlist的介紹。

5、文件

文件的tag存儲于其父目錄的元數據對中。文件又分為inline文件和outline文件。當文件剛創建時,默認為inline文件。當文件大小超過1/8 block_size、或超過文件cache大小時,會重新分配為outline文件。

(1)inline文件

#littlefs原理分析#[一]存儲結構-開源基礎軟件社區

具體tag存儲信息如下:

  • REG:存儲文件名和id
  • INLINESTRUCT:存儲inline文件的數據

(2)outline文件

#littlefs原理分析#[一]存儲結構-開源基礎軟件社區

如上圖,littlefs中outline文件的數據是用跳表存儲的。其中CTZSTRUCT類型的tag中存儲了文件大小和跳表頭指針信息,跳表頭指針指向了文件末尾的塊。跳表中每個塊對其他塊的指針儲存在該塊的塊頭處。

跳表中塊指針按固定規律分布:對block ,如果可以被整除,那么該block就含有一個指向block 的塊指針。以block 4為例:

  • 4可以被整除,則block 4含有即block 3的塊指針。
  • 4可以被整除,則block 4含有即block 2的塊指針。
  • 4可以被整除,則block 4含有即block 0的塊指針。

由此規律,又因為塊的大小是固定的,那么只要知道文件的偏移位置,就可以獲取該偏移位置所在block在跳表中的序號、該塊上有幾個塊指針等信息:

  • 獲取跳表中塊序號:根據文件偏移和塊大小計算,相關函數為lfs_ctz_index。
  • 獲取塊頭部塊指針數量:用ctz指令,ctz(塊序號)。

(3)相關數據結構

文件在內存中表示如下:

typedef struct lfs_file {
// 以下4個成員與mlist相關,見后文mlist的介紹
struct lfs_file *next;
uint16_t id;
uint8_t type;
lfs_mdir_t m;

struct lfs_ctz {
lfs_block_t head; // 跳表頭指針,inline文件時為LFS_BLOCK_INLINE
lfs_size_t size; // 文件大小,inline和outline文件均用此記錄
} ctz;

uint32_t flags; // INLINE、OUTLINE、DIRTY、WRITING等標志
lfs_off_t pos; // 文件當前的偏移字節數
lfs_block_t block; // 文件當前的block
lfs_off_t off; // 文件在當前block的偏移
lfs_cache_t cache; // 文件緩存,用于讀寫等操作

const struct lfs_file_config *cfg; // 文件的其他配置信息
} lfs_file_t;

6、文件和目錄在內存中的表示(mlist)

littlefs中,mlist用于記錄打開的文件和目錄,存在于內存中。

mlist主要用于遍歷打開的文件和目錄。

(1)相關數據結構

mlist

typedef struct lfs {
...
struct lfs_mlist {
struct lfs_mlist *next; // 下一個鏈表中的節點
uint16_t id; // 文件或目錄在其父目錄中的id
uint8_t type; // 類型,表明是文件還是目錄
lfs_mdir_t m; // 父目錄元數據對信息
} *mlist;
...
} lfs_t;

打開的文件

typedef struct lfs_file {
struct lfs_file *next; // 下一個鏈表中的節點
uint16_t id; // 文件在父目錄中的id
uint8_t type; // 類型,文件類型應為LFS_REG_TYPE
lfs_mdir_t m; // 父目錄元數據對信息

// 以下成員見上文中存儲結構
...
} lfs_file_t;

打開的目錄

typedef struct lfs_dir {
struct lfs_dir *next; // 下一個鏈表中的節點
uint16_t id; // 目錄在父目錄中的id
uint8_t type; // 類型,目錄應為LFS_DIR_TYPE
lfs_mdir_t m; // 父目錄元數據對信息

lfs_off_t pos; // 當前目錄或文件在父目錄中的位置,.和..分別為0和1
lfs_block_t head[2]; // 第一個元數據對所在塊號
} lfs_dir_t;

(2)記錄打開的文件和目錄

由前面的數據結構,littlefs中mlist是一個單鏈表,其中記錄了打開的文件和目錄。 mlist既可以插入lfs_file_t,也可以插入lfs_dir_t,lfs_mlist、lfs_file_t和lfs_dir_t的前幾個成員的結構體是相同的。

在打開文件過程中

打開文件時,相應lfs_file_t類型的文件數據加入到mlist:

lfs_file_open(lfs_t *lfs, lfs_file_t *file, const char *path, int flags)
|-> lfs_file_rawopen(lfs_t *lfs, lfs_file_t *file,
| const char *path, int flags)
|-> lfs_file_rawopencfg(lfs_t *lfs, lfs_file_t *file,
| const char *path, int flags,
| const struct lfs_file_config *cfg)
|-> ...
|
| // 將file加入到mlist
|-> lfs_mlist_append(lfs, (struct lfs_mlist *)file);
|
|-> ...

在關閉文件過程中

關閉文件時,mlist會刪除對應的文件:

lfs_file_close(lfs_t *lfs, lfs_file_t *file)
|-> lfs_file_rawclose(lfs_t *lfs, lfs_file_t *file)
|-> lfs_mlist_remove(lfs, (struct lfs_mlist*)file);
|
|-> ...

在打開目錄過程中

打開命令時,相應lfs_dir_t類型的目錄數據加入到mlist:

lfs_dir_open(lfs_t *lfs, lfs_dir_t *dir, const char *path)
|-> lfs_dir_rawopen(lfs_t *lfs, lfs_dir_t *dir, const char *path)
|-> ...
|
|-> lfs_mlist_append(lfs, (struct lfs_mlist *)dir);

在關閉目錄過程中

關閉目錄時,mlist中會刪除對應的目錄:

lfs_dir_close(lfs_t *lfs, lfs_dir_t *dir)
|-> lfs_dir_rawclose(lfs_t *lfs, lfs_dir_t *dir)
|-> lfs_mlist_remove(lfs, (struct lfs_mlist *)dir);

總結

本文介紹了littlefs的整體結構,包括超級塊、文件、目錄等在磁盤上的存儲,以及文件、目錄打開后在內存中的表示,希望能讓讀者對littlefs有一個大概的印象。后續的文章會繼續分析littlefs原理。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??。

責任編輯:jianghua 來源: 51CTO開源基礎軟件社區
相關推薦

2022-11-15 09:24:16

littlefs文件讀寫

2022-11-07 15:27:07

LittlefsFetch操作

2022-11-22 15:21:55

littlefs磨損均衡

2022-11-02 15:56:45

littlefscommit機制

2022-11-09 08:52:57

littlefs目錄操作

2018-06-13 08:53:39

HadoopHBase存儲

2014-11-27 09:59:02

dockerlinux技巧

2010-04-21 16:07:04

Oracle邏輯存儲結

2019-04-29 11:14:25

MySQL存儲排序

2010-04-21 16:55:06

Oracle物理存儲結

2021-07-23 13:22:49

InnoDB存儲結構

2019-06-03 15:15:09

MySQL索引數據庫

2012-03-15 16:12:57

JavaHashMap

2010-01-05 14:18:56

高層交換機

2022-06-08 07:34:02

持久化數據存儲原理索引存儲格式

2019-01-08 11:57:10

Redis存儲數據結構

2018-09-30 10:58:20

云存儲原理網盤

2019-07-03 15:14:00

Oracle存儲結構

2019-08-06 09:11:49

數據庫數據結構操作系統

2011-05-31 13:12:15

Android 目錄結構
點贊
收藏

51CTO技術棧公眾號

午夜国产不卡在线观看视频| 伊人久久亚洲| 欧美国产日韩在线观看| 91久久久久久国产精品| 久久综合色综合| 香蕉久久夜色精品国产使用方法| 欧美色视频在线观看| 二级片在线观看| 天天操天天干天天插| 日本sm残虐另类| 欧美激情精品久久久久久免费印度 | 日韩在线一二三区| 欧美老少配视频| 男人天堂av电影| 日韩有码欧美| 欧美日韩亚洲精品一区二区三区| 中文字幕日韩一区二区三区| 色香蕉在线视频| 久久国产精品72免费观看| 97久久精品在线| 精品人妻伦九区久久aaa片| 亚洲日本va午夜在线电影| 在线欧美小视频| 中文字幕中文字幕在线中一区高清 | 肉丝袜脚交视频一区二区| 久久黄色av网站| 国产伦精品一区二区三区妓女| 自拍偷拍亚洲图片| 91福利视频在线| 日本在线xxx| 青春草在线免费视频| 国产亚洲人成网站| 蜜桃av色综合| 高h放荡受浪受bl| 韩国v欧美v日本v亚洲v| 国产精品网红直播| 91在线视频免费播放| 亚洲精选91| 欧美日韩xxxxx| 成人在线观看小视频| 欧美残忍xxxx极端| 亚洲一区999| 五级黄高潮片90分钟视频| 第一区第二区在线| 亚洲精品在线网站| jjzz黄色片| 成人四虎影院| 在线视频欧美精品| 人人爽人人av| 欧美日韩五区| 欧美日韩一区中文字幕| www日韩视频| 欧美专区福利免费| 91福利区一区二区三区| 手机在线免费观看毛片| 嫩草伊人久久精品少妇av杨幂| 91久久精品网| 国产伦精品一区二区三区四区视频_ | 国产ts一区| 亚洲国产日韩精品在线| www.88av| 综合国产视频| 中文字幕亚洲第一| 多男操一女视频| 色135综合网| zzjj国产精品一区二区| 日韩影院一区二区| 欧美~级网站不卡| 欧美黑人xxxx| 天堂在线免费观看视频| 青娱乐精品视频| 91在线观看免费| 刘玥91精选国产在线观看| 99视频精品在线| 久久久久久欧美精品色一二三四| 免费在线视频一级不卡| 国产日产欧美一区二区视频| 亚洲一区精品视频| 女同一区二区免费aⅴ| 五月开心婷婷久久| 午夜免费精品视频| 日韩精品一区二区三区免费视频| 亚洲精品720p| 国产在线免费av| 欧美伊人影院| 欧美一区视频在线| 国产又粗又大又爽| av在线不卡电影| 日韩精品在在线一区二区中文| 免费在线观看av网站| 亚洲一区视频在线| 免费日韩中文字幕| 欧美一区在线观看视频| 日韩久久精品电影| 国产欧美小视频| 99国产精品视频免费观看一公开| 国产国语刺激对白av不卡| 国产露脸无套对白在线播放| 91老司机福利 在线| 亚洲午夜精品福利| 国产亚av手机在线观看| 在线观看免费视频综合| 韩国三级与黑人| 久久99久久人婷婷精品综合| 久久综合免费视频| 99久久久无码国产精品免费蜜柚 | 91精品久久久久久久久久久| 国产综合在线播放| 亚洲欧洲成人av每日更新| 男人添女荫道口图片| 色综合视频一区二区三区44| 精品无人区太爽高潮在线播放 | 1区2区在线观看| 在线免费一区三区| 中文字幕一区二区久久人妻网站| 91精品一区国产高清在线gif| 欧美性视频精品| 国产高清视频免费| 中文字幕中文字幕在线一区| 国产日产欧美视频| 国产一区调教| 欧美黑人极品猛少妇色xxxxx| 国产又大又长又粗| 中文字幕精品综合| 亚洲人成无码www久久久| 国产精品自在| 欧美激情成人在线视频| 国产日韩欧美中文字幕| 欧美国产欧美综合| 熟女少妇精品一区二区| 日韩mv欧美mv国产网站| 久久免费精品视频| 亚洲av无码乱码在线观看性色| 国产精品国产三级国产普通话99 | 免费精品一区二区| 久久精品在线免费观看| 国产91在线免费| 日本天堂一区| 538国产精品一区二区免费视频| 亚洲欧美激情另类| 一区二区三区免费| 18深夜在线观看免费视频| 欧美高清视频手机在在线| 国产精品免费看久久久香蕉 | 农村末发育av片一区二区| 欧美自拍一区| 久久人人爽人人爽人人片av高请 | 久久久精品国产网站| 黄色一级片黄色| 91精品福利观看| 国产一区二区三区毛片| 国产寡妇亲子伦一区二区三区四区| a在线欧美一区| 国产黄页在线观看| 免费看成人吃奶视频在线| 欧美在线视频a| 美女做暖暖视频免费在线观看全部网址91 | 欧美色图亚洲自拍| 久久亚洲精品爱爱| 日韩中文字幕精品| 国产人妻精品一区二区三| 亚洲女人的天堂| 中文字幕18页| 99视频在线精品国自产拍免费观看| 狠狠久久综合婷婷不卡| 在线日韩影院| 日韩中文字幕久久| 日批视频免费在线观看| 国产精品精品国产色婷婷| 91香蕉国产线在线观看| 伊人久久成人| 欧美连裤袜在线视频| 九七电影院97理论片久久tvb| 日日噜噜噜夜夜爽亚洲精品| 精品免费久久久| 欧美日韩中文字幕综合视频 | 高清国产mv在线观看| 天天影视涩香欲综合网| 日本一卡二卡在线播放| 国产一区二区三区av电影 | 日韩一区不卡| 国产一区二区三区国产精品| 韩国日本不卡在线| av在线日韩国产精品| 日韩一二三区不卡| 国产欧美一区二区三区在线看蜜臂| 欧美极品aⅴ影院| 丰满饥渴老女人hd| 日韩av一区二区三区四区| 中文字幕av导航| 老司机成人在线| 成人黄色免费在线观看| 华人av在线| 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | 狠狠人妻久久久久久| 一区在线播放视频| 国产麻豆剧传媒精品国产av| 蜜臀av国产精品久久久久| 久草免费福利在线| 99久久婷婷这里只有精品| 国产伦精品一区二区三区| 国产福利亚洲| 久久精品99久久香蕉国产色戒| 欧美一区二区在线观看视频| 欧美日韩一区二区三区在线看| 精品亚洲永久免费| 国产精品久久久久毛片软件| 亚洲国产果冻传媒av在线观看| 捆绑调教一区二区三区| 免费看的黄色大片| 欧美三级不卡| 一区在线电影| 黑人操亚洲人| 快播日韩欧美| 久久aimee| 99久久精品无码一区二区毛片 | 在线亚洲免费视频| 日本a在线观看| 一区二区在线观看视频在线观看| 国产18无套直看片| 久久综合视频网| 免费欧美一级片| 久久草av在线| 色戒在线免费观看| 免费成人在线视频观看| 久久久免费视频网站| 9国产精品视频| 男的插女的下面视频| 一区二区电影在线观看| 一区二区三区av在线| 欧美艳星介绍134位艳星| 欧美日韩在线观看一区| 亚洲丝袜啪啪| 欧美性大战久久久久| 一道本一区二区三区| 精品欧美一区二区久久久伦 | 日韩av电影在线观看| 婷婷亚洲精品| 蜜桃传媒视频麻豆第一区免费观看| 第四色在线一区二区| 岛国一区二区三区高清视频| 成人在线视频www| 91久热免费在线视频| www.久久99| 亚洲japanese制服美女| 日韩av综合| 91视频在线免费观看| 日韩影片在线观看| 国产91色在线|亚洲| 久久97精品| 久久伊人一区二区| 国产欧美日韩一区二区三区四区| 日本在线视频不卡| 999成人网| 乱子伦一区二区| 国内精品久久久久久久97牛牛| 国产成a人亚洲精v品在线观看| 综合一区在线| 国产av人人夜夜澡人人爽麻豆| 国产欧美大片| 国产成人手机视频| 麻豆精品一区二区三区| 久久精品国产99久久99久久久| 国产资源精品在线观看| 少妇献身老头系列| 99久久综合狠狠综合久久| 人妻熟女aⅴ一区二区三区汇编| 91蝌蚪porny| 欧美色图17p| 亚洲综合清纯丝袜自拍| 韩国av中文字幕| 精品视频在线视频| 精品人妻一区二区三区三区四区 | 国产一区二区高清| 9久久婷婷国产综合精品性色| 激情综合五月婷婷| 国模私拍在线观看| 中文字幕高清一区| 欧美人妻精品一区二区三区 | 国产精品国产三级国产普通话99 | 亚洲成人黄色av| 最好看的中文字幕久久| 黄网在线观看视频| 欧美卡1卡2卡| 天堂av一区二区三区| 最近中文字幕mv在线一区二区三区四区| 成人欧美在线| 欧洲成人免费视频| 亚洲精品无播放器在线播放| 国内一区二区三区在线视频| 日韩精品二区| 老太脱裤让老头玩ⅹxxxx| 久久精品久久综合| 艳妇乳肉亭妇荡乳av| 亚洲人精品一区| 久久夜色精品国产噜噜亚洲av| 91麻豆精品国产自产在线| 手机福利在线| 欧美另类xxx| 国产成人精品一区二区三区在线 | 欧美在线视频全部完| 国产 日韩 欧美 综合| 中国china体内裑精亚洲片| 草美女在线观看| 亚洲一区二区在线| 欧美三级伦理在线| 美女日批免费视频| 国产丶欧美丶日本不卡视频| 欧美性受xxxx黑人| 日韩欧美高清视频| 亚洲高清视频网站| 久久天天躁夜夜躁狠狠躁2022| 欧美国产大片| 九九九九九精品| 欧美体内she精视频在线观看| 做a视频在线观看| 欧美国产日韩精品免费观看| 日韩av电影网址| 日韩女优毛片在线| а√天堂资源地址在线下载| 国产福利精品在线| 最近国产精品视频| 亚洲熟妇av一区二区三区漫画| 国产成人综合在线| 三级影片在线看| 欧美精品电影在线播放| 五月婷婷在线观看| 国产精品视频在线播放| 欧洲杯足球赛直播| 日本xxxxxxx免费视频| 久久嫩草精品久久久久| 精品欧美一区二区三区免费观看 | 在线观看亚洲专区| 女人偷人在线视频| 日韩av大片在线| 在线日本制服中文欧美| 日韩精品视频久久| 91视频免费看| 好看的av在线| 亚洲女在线观看| 免费成人美女女| 婷婷久久五月天| 麻豆精品新av中文字幕| 精品伦精品一区二区三区视频密桃| 在线观看欧美精品| 欧美尤物美女在线| 成人黄色免费网站在线观看| 天天av综合| 中文字幕一二三| 亚洲成国产人片在线观看| 污视频在线免费观看| 45www国产精品网站| 精品国产一区二区三区久久久蜜臀| 欧美日韩在线不卡视频| 国产日韩欧美亚洲| 91精品国产色综合久久不8| 久久夜色撩人精品| 97精品久久| 日韩av一二三四区| 国产欧美精品一区二区色综合 | 真实国产乱子伦对白视频| 成人福利视频网站| 久久精品视频7| 中文字幕一区二区三区电影| 91精品亚洲一区在线观看| 日韩欧美猛交xxxxx无码| 99精品视频在线免费观看| 国产精品suv一区| 色综合伊人色综合网| 一本一道久久a久久| 日日橹狠狠爱欧美超碰| 国产精品免费人成网站| 99久久久无码国产精品免费| 国内免费精品永久在线视频| 亚洲人亚洲人色久| 亚洲高清视频免费| 午夜欧美在线一二页| 麻豆导航在线观看| 91最新在线免费观看| 91久久中文| 国产在线免费av| 亚洲精品一区二区三区蜜桃下载| 日韩成人av电影| 在线观看国产一区| 本田岬高潮一区二区三区| 人妻中文字幕一区二区三区| 欧美高清性猛交| 精品国产乱码久久久久久果冻传媒| 五月天国产视频| 日本高清不卡aⅴ免费网站| 羞羞污视频在线观看| 欧美性天天影院| 成人午夜av电影| 中文字幕av资源| 国模精品视频一区二区| 欧美成人精品一区二区三区在线看| 午夜免费福利影院| 在线播放国产精品二区一二区四区| 国产精品一二三产区| 男人的天堂成人|