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

Linux pstore 實現自動“抓捕”內核崩潰日志

系統 Linux
pstore文件系統(是的,這是個文件系統)是Persistent Storage的縮寫,最早在2010年由 Tony Luck 設計并合入Linux主分支,設計的初衷是在內核Panic/Oops時能自動轉存內核日志(log_buf),在Panic重啟后,把轉存的日志以文件形式呈現到用戶空間以分析內核崩潰問題。

 我設計的內核模塊pstore/blk及其衍生的pstore/zone,mtdpstore終于在v5.8-rc1版本合入了torvalds/linux.git(見參考鏈接[1]),而且發現國內外對pstore的介紹都好少好少,干脆來一波科普。

[[329610]]

簡介

pstore文件系統(是的,這是個文件系統)是Persistent Storage的縮寫,最早在2010年由 Tony Luck 設計并合入Linux主分支,設計的初衷是在內核Panic/Oops時能自動轉存內核日志(log_buf),在Panic重啟后,把轉存的日志以文件形式呈現到用戶空間以分析內核崩潰問題。

這對分析那種小概率且沒辦法抓到現場的問題非常實用,尤其是現在智能互聯網的設備逐漸普及的時候,遠端的設備可以自己捕抓崩潰日志再通過網絡傳輸到服務器,維護人員就可以根據收集來的日志定位和解決問題,然后通過OTA讓設備升級迭代。

根據網上搜尋的資料,在pstore文件系統之前其實有不少類似的實現。

  • apanic

Android最早的panic信息記錄的方案。在linux 2.6的安卓的內核中找到,卻沒有提交到社區,后來被放棄維護了。網上找不到放棄的原因,我自己猜測是因為其只適用于mtd nand,然而現在的Android基本用的都是emmc。apanic應該是Android Panic的縮寫吧,可以實現在內核崩潰時,把日志轉存到mtd nand。

  • ramoops

這里指的是最早的ramoops實現,在最新代碼已經整合入pstore中,以pstore/ram的后端形式存在。ramoops可以把日志轉存到重啟不掉電的ram中。這里對ram有一點要求,即使重啟ram的數據也不能丟失。

  • crashlog

這是openwrt提供的內核patch,并沒有提交到內核社區。它也是基于ram,只能轉存Panic/Oops的日志。

  • mtdoops

MTD子系統支持的功能,與pstore非常相似,只支持轉存Panic/Oops日志,不能以文件呈現,需要用戶自行解析整個MTD分區。(因為功能的相似,我實現了mtdpstore用于替代mtdoops)

  • kdump

如果說pstore是個輕量級的內核崩潰日志轉存的方案,kdump則是一個重量級的問題分析工具。在崩潰時,由kdump產生一個用于捕抓當前信息的內核,該內核會收集內存所有信息到dump core文件中。在重啟后,捕抓到的信息保存在特定的文件中。類似的還有netdump和diskdump。kdump的方案適用于服務器這種有大量資源的設備,功能也非常強大,但對嵌入式設備非常不友好。

pstore經過長期迭代,除了轉存Panic/Oops的日志之外(dmesg前端),還支持pmsg、console和ftrace的前端,除了pstore/ram的后端之外,還有我設計的pstore/blk后端,除了支持轉存到ram之外,還有block device和mtd device。

pstore的前端,是指轉存的日志類型,pstore的后端,是指轉存到什么類型的設備。

目前支持以下幾個前端:

  • dmesg:主要是轉存Panic/Oops時log_buf里面的內核日志
  • pmsg:提供給用戶空間存儲日志的入口,在Android里有看到被用于存儲系統的日志。
  • console:終端日志
  • ftrace:function trace的信息

目前支持以下幾種后端:

  • pstore/ram:Persistent Ram,重啟不會丟數據的內存
  • pstore/blk:(v5.8以后的版本)所有可寫的塊設備,例如磁盤、U盤、emmc、NFTL nand等
  • mtd device:(v5.8以后的版本)mtd設備,例如 mtd nand。(mtd設備的支持依賴于 pstore/blk 后端,準確來說不是一種獨立后端)

怎么用

就像把大象裝入冰箱只需要打開冰箱,把大象放進去,關上冰箱門的3個步驟,使用pstore也只需要3個步驟:

  • 使能 pstore
  • 掛載 pstore文件系統
  • 讀取 轉存的日志文件

詳細的說明可以看源碼上的文檔,本文只做基本功能的介紹。

Documentation/admin-guide/ramoops.rst

Documentation/admin-guide/pstore-blk.rst

使能

在menuconfig中選擇內核pstore模塊

  1. $ make menuconfig 
  2.   |-> File systems 
  3.     |-> Miscellaneous filesystems 
  4.       |-> Persistent store support 
  5.         |-> Log kernel console messages    # console 前端 
  6.         |-> Log user space messages      # pmsg 前端 
  7.         |-> Persistent function tracer      # ftrace 前端 
  8.         |-> Log panic/oops to a RAM buffer     # pstore/ram 后端 
  9.         |-> Log panic/oops to a block device   # pstore/blk 后端 

上述兩個后端2選1即可,前端就根據自己的需求選擇,至于dmesg前端,默認使能沒得選。如果希望用在mtd設備上,還需要選擇mtdpstore模塊:

  1. $ make menuconfig 
  2.   |-> Device Drivers 
  3.     |-> Memory Technology Device (MTD) support 
  4.       |-> Log panic/oops to an MTD buffer based on pstore 

選上就可以用了?雖然我非常想說“是的”,但事實卻有點“骨感”。即使所有前端都使用默認配置,pstore/ram至少也需要知道可用的內存范圍吧?pstore/blk至少也需要知道使用哪個塊設備吧?

pstore/ram支持 模塊參數(cmdline)、設備樹、和Platform Data的3種配置方式,從代碼來看,優先級關系是:模塊參數 > Platform Data > 設備樹。

pstore/blk支持 Kconfig和 模塊參數(cmdline)的兩種配置方式,且模塊參數比Kconfig有更高的優先級。

pstore/ram我接觸也不多,直接介紹pstore/blk的使用方法。對新同學來說,請忽略一大堆亂七八糟的屬性配置(使用默認值),只需要告訴pstore/blk后端使用哪個塊設備即可。

在Kconfig中配置:

  1. $ make menuconfig 
  2.   |-> File systems 
  3.     |-> Miscellaneous filesystems 
  4.       |-> Persistent store support 
  5.         |-> Log panic/oops to a block device   # pstore/blk 后端 
  6.           |-> () block device identifier      # 使用哪個塊設備? 

如果使用cmdline,可以這么寫:

  1. pstore_blk.blkdev=XXXX 

或者以模塊加載:

  1. $ sudo insmod pstore_blk.ko blkdev=XXX 

這里的塊設備可以是代表整個磁盤的sda,也可以是代表某個分區的mmcblk0p4。雖然支持7種變體,但常用的還是兩種:

  • /dev/<disk_name>: 例如,使用U盤的第2個分區,則是/dev/sdb2
  • <major>:<minor>:例如,mmc設備第6個分區,則是179:6

形式大概是這樣:

  1. $ sudo insmod pstore_blk.ko blkdev=/dev/sdb2 

或者

  1. $ cat /proc/cmdline 
  2. .... pstore_blk.blkdev=179:6 ... 

如果是mtd設備,可以直接指定mtd分區名或者編號,例如:

  1. pstore_blk.blkdev=pstore  # 假設存在名為pstore的MTD分區 

OK,對新同學來說,到這里配置就夠了。可以從我的github(見參考鏈接[2])上看到我之前是怎么測試的。如果需要知道每個配置項的作用,還是看內核文檔吧(ramoops.rst 或 pstore_blk.rst),或者在Kconfig中按h顯示相關配置項的說明。

掛載

在使能且正確配置設備后,啟動的時候應該會有這樣的日志:

  1. pstore_zone: registered pstore_blk as backend for kmsg(Oops,panic_write) 
  2. pstore: Registered pstore_blk as persistent store backend 

這代表pstore找到了設備且正常注冊。接下來,我們還需要通過掛載的形式觸發pstore從設備讀取數據。常見的掛載是這樣的:

  1. mount -t pstore pstore /sys/fs/pstore 

掛載后,通過mount能看到類似這樣的信息:

  1. # mount 
  2. ... 
  3. pstore on /sys/fs/pstore type pstore (rw,relatime) 
  4. ... 

如果曾經觸發過崩潰日志,在掛載點應該有類似這樣的文件:

  1. # ll /sys/fs/pstore 
  2. ... 
  3. -r--r--r--    1 root     root         15521 Jan  1 00:06 dmesg-pstore_blk-0 
  4. ... 

如果需要驗證,咱們可以這樣主動觸發內核崩潰:

  1. # echo c > /proc/sysrq-trigger 

我是在U盤、SD卡、mmc、nand上驗證的,maintainer Kees Cook 提供了另外一種基于loop的驗證方法,實現用文件模擬塊設備。當然這方法不適用于轉存Panic日志,只能用于Oops或者其他前端:

  1. # insmod pstore.ko compress=off 
  2. # insmod pstore_zone.ko 
  3. truncate pstore-blk.raw --size 100M 
  4. # losetup -f --show pstore-blk.raw 
  5. /dev/loop0 
  6. # insmod pstore_blk.ko blkdev=/dev/loop0 kmsg_size=16 console_size=64 best_effort=on 

讀取

經過上述的掛載后,可以在掛載點看到轉存的日志文件。既然是文件,肯定支持文件的一系列操作,例如讀取、刪除。

  1. root@TinaLinux:/sys/fs/pstore# head -n 10 dmesg-pstore_blk-1 
  2. Oops: Total 2 times 
  3. Oops#1 Part1 
  4. <6>[    2.743794] Bluetooth: RFCOMM socket layer initialized 
  5. <6>[    2.743813] Bluetooth: RFCOMM ver 1.11 
  6. <6>[    2.743822] 8021q: 802.1Q VLAN Support v1.8 
  7. <3>[    2.751766] reg-virt-consumer reg-virt-consumer.1: Failed to obtain supply 'drivevbus': -517 
  8. <3>[    2.752330] reg-virt-consumer reg-virt-consumer.1: Failed to obtain supply 'drivevbus': -517 
  9. <5>[    2.752742] ubi0: attaching mtd4 
  10. <5>[    2.890302] random: crng init done 
  11. <5>[    2.965927] ubi0: scanning is finished 
  12.  
  13. root@TinaLinux:/sys/fs/pstore# ll 
  14. drwxr-x---    2 root     root             0 Jan  1 00:11 . 
  15. drwxr-xr-x    5 root     root             0 Jan  1 00:11 .. 
  16. -r--r--r--    1 root     root         15521 Jan  1 00:06 dmesg-pstore_blk-0 
  17. -r--r--r--    1 root     root         15128 Jan  1 00:11 dmesg-pstore_blk-1 
  18.  
  19. root@TinaLinux:/sys/fs/pstore# rm dmesg-pstore_blk-1 
  20.  
  21. root@TinaLinux:/sys/fs/pstore# ll 
  22. drwxr-x---    2 root     root             0 Jan  1 00:13 . 
  23. drwxr-xr-x    5 root     root             0 Jan  1 00:11 .. 
  24. -r--r--r--    1 root     root         15521 Jan  1 00:06 dmesg-pstore_blk-0 

對dmesg前端的Panic/Oops日志,pstore會自動添加兩行統計信息。例如:

  1. Oops: Total 2 times      # 表示觸發了Oops,且是自系統安裝后第一次啟動以來第2次觸發Oops。 
  2. Oops#1 Part1        # 表示這是上一次運行期間第1次觸發Oops的日志。 

可以發現,第一行是累計總的觸發次數,第二行是上一次啟動觸發的次數。

每個文件名的格式都是<前端名>-<后端名>-,例如dmesg-pstore_blk-1表示dmesg前端,pstore_blk后端以及是dmesg前端的第1個zone的日志。

當然,除了dmesg前端外,其他前端的名字大概是這樣的:

  1. # ll 
  2. -r--r--r-- 1 root root    31 1月  15 11:53 console-pstore-blk-0 
  3. -r--r--r-- 1 root root  3666 1月  15 11:53 demsg-pstore-blk-0 
  4. -r--r--r-- 1 root root 65524 1月  15 11:53 ftrace-pstore-blk-0 
  5. -r--r--r-- 1 root root     9 1月  15 11:53 pmsg-pstore-blk-0 

除此之外,每個文件的時間戳表示 崩潰觸發的時間。上例中,由于系統并沒有實現同步更新系統時間,所以時間戳不合理。

展望未來

正如我前文說的,pstore在物聯網設備逐漸普及的現在,能發揮很大的作用,例如智能音箱和掃地機已經用起來了。

全功能支持

到目前為止,不管是塊設備還是mtd設備,社區的代碼都沒能做到pstore的全部前端的支持。

設備 dmesg(Oops) dmesg(Panic) pmsg console ftrace
塊設備 Y N Y Y Y
MTD設備 Y Y N N N
ram設備 Y Y Y Y Y

塊設備如果需要記錄Panic日志,需要提供一個在Panic時寫塊設備的接口。我在全志的mmc和nand驅動中實現了這樣的接口,卻因為種種原因不適合提交到社區。社區塊驅動的適配寄希望于更多同學的努力了。

MTD設備很早前就有了panic_write()的定義,因此可以支持Panic日志轉存。不支持其他前端,則是因為其擦寫的物理特性。對pmsg,console,ftrace等這些不能頁對齊寫入的前端,還需要更多的適配工作。

遷移pstore/ram

在當前pstore的目錄結構是這樣的:

  1. $ tree fs/pstore 
  2. fs/pstore/ 
  3. ├── blk.c      # pstore/blk 后端的實現 
  4. ├── ftrace.c    # ftrace 前端的實現 
  5. ├── inode.c    # pstore 文件系統的注冊與操作 
  6. ├── internal.h 
  7. ├── Kconfig 
  8. ├── Makefile 
  9. ├── platform.c    # pstore 前后端功能的核心 
  10. ├── pmsg.c    # pmsg 前端的實現 
  11. ├── ram.c      # pstore/ram 后端的實現 
  12. ├── ram_core.c    # pstore/ram 后端的實現 
  13. └── zone.c      # pstore/zone 實現存儲空間的分配和管理 

在我的補丁之前,只支持轉存日志到ram,因此如果研讀代碼,我們會發現ram.c和ram_core.c實現了兩部分功能:

  1. dram空間分配與管理
  2. dram的讀寫操作

我實現的blk.c支持了轉存到塊設備。但是后來發現不管pstore/ram還是pstore/blk,他們對于存儲空間的分配和管理極度相似,我就提煉出了pstore/zone。于是乎,期望的代碼層次應該是這樣的:

 

 

 

 

pstore/ram要整合入pstore/zone已經與maintainer達成共識,但還需要更多同學一同努力做更多兼容,例如ecc的支持。

參考

https://git.kernel.org/torvalds/c/829f3b9401fe7cc3c1f3642bb2520751a42a87dfhttps://github.com/gmpy/articles/blob/master/pstore/Test-Pstore-Block.md

本文轉載自微信公眾號「 Linux閱碼場」,可以通過以下二維碼關注。轉載本文請聯系 Linux閱碼場公眾號。

 

責任編輯:武曉燕 來源: Linux閱碼場
相關推薦

2017-08-02 14:37:31

LinuxKdump內核崩潰

2023-12-26 15:06:00

Linux內核轉儲

2021-03-05 07:14:08

Linuxcrashvmcore

2021-09-29 09:50:41

Linux內核日志

2021-09-08 05:46:51

Linux內核日志

2025-06-11 01:00:00

2021-11-14 07:29:55

Linux 內核靜態追蹤Linux 系統

2021-11-15 04:00:07

Linux 內核動態

2013-04-15 15:07:43

清理日志Linux系統

2022-05-11 10:58:11

MetricKitiOS13系統崩潰診斷

2015-08-03 16:23:27

2021-02-20 06:08:07

LinuxWindows內核

2023-03-01 23:56:11

2025-04-02 00:33:00

2025-04-01 02:00:22

2016-11-16 09:52:39

Linux讀書筆記內核

2023-03-10 14:56:37

Linuxconnect系統

2023-03-01 23:53:30

Linuxshutdown進程

2010-03-02 09:17:32

Linux local

2021-09-30 09:43:11

Linux內核Zstd補丁
點贊
收藏

51CTO技術棧公眾號

av在线播放国产| 一卡二卡三卡在线| 国产成人短视频在线观看| 狠狠做深爱婷婷久久综合一区 | 日本黄网站色大片免费观看| 亚洲第一精品网站| 久久一区激情| 欧美成年人在线观看| 黄色录像a级片| 久久人人视频| 午夜精品国产更新| 亚洲午夜久久久影院伊人| 女人18毛片一区二区三区| 日韩福利电影在线| 韩剧1988免费观看全集| 可以免费看av的网址| 精品伊人久久久| 欧美精品一卡二卡| 欧美爱爱视频免费看| 成人免费观看视频大全| 久久久青草青青国产亚洲免观| 亚洲qvod图片区电影| 成人午夜精品视频| 亚洲啪啪91| 久久香蕉国产线看观看av| 国产网站无遮挡| 日韩精品三级| 欧美日韩成人高清| 日本一极黄色片| 99久久精品免费看国产小宝寻花| 中文av字幕一区| 免费成人av网站| 亚洲国产一二三区| 国产在线国偷精品免费看| 国产成人福利视频| 免费日韩一级片| 国产精品红桃| 久久综合88中文色鬼| 亚洲色图 激情小说| 色爱av综合网| 欧美精品一区在线观看| 亚洲丝袜在线观看| 欧美成人一二区| 在线亚洲免费视频| 又粗又黑又大的吊av| 啦啦啦中文在线观看日本| 亚洲精品国产第一综合99久久| 亚洲高清乱码| yw视频在线观看| 久久久久久久久免费| 精品国产91亚洲一区二区三区www 精品国产_亚洲人成在线 | 97超级碰在线看视频免费在线看 | 欧美日韩国产一区精品一区| 久久精品中文字幕| 欧美肥妇bbwbbw| 日韩免费视频| 色婷婷av一区二区三区久久| 中文天堂资源在线| 日韩精品久久久久久久电影99爱| 亚洲毛片在线观看.| 播金莲一级淫片aaaaaaa| 日韩欧美黄色| 亚洲欧美精品在线| 欧美熟妇激情一区二区三区| 久久99国产精一区二区三区| 亚洲日本欧美日韩高观看| 久操视频免费看| 国产精品一区二区av交换| 亚洲天堂网站在线观看视频| 久久久久久九九九九九| 成人亚洲一区二区| 另类少妇人与禽zozz0性伦| 唐朝av高清盛宴| 亚洲国产美女| 欧美最近摘花xxxx摘花| 日韩不卡高清视频| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲综合日韩在线| 人妻少妇一区二区三区| 久久综合九色综合97婷婷女人| 欧美在线视频一区二区三区| 午夜激情在线观看| 一区二区三区四区中文字幕| 成人性生活视频免费看| 欧美一区国产| 欧美日韩国产精品成人| 制服丝袜av在线| 亚洲精品蜜桃乱晃| 久久精品国产亚洲7777| 精品无码久久久久久久久| 亚洲一区免费| 国产日韩精品入口| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 久久精品亚洲精品国产欧美kt∨| 在线视频91| av福利导福航大全在线| 欧美亚洲免费在线一区| 中文字幕无码毛片免费看| 日韩av三区| 久久深夜福利免费观看| 亚洲日本韩国在线| 久久99精品国产麻豆婷婷| 国产日韩精品推荐| 欧美日韩欧美| 黑人巨大精品欧美一区二区三区 | 国产精品99久久久久久久vr| 精品一区久久久| 免费不卡视频| 欧美日韩中文在线| 国产黑丝在线视频| 国产剧情在线观看一区| 久久999免费视频| 久久久久久亚洲av无码专区| 国产成人精品亚洲777人妖| 日本一区视频在线观看| 欧美xxxx少妇| 欧美日韩一区中文字幕| 亚洲男人在线天堂| 你懂的国产精品永久在线| 国产精品高潮呻吟久久av黑人| 高清一区二区三区四区| 国产精品国产三级国产专播品爱网| 日本在线xxx| 欧美视频三区| www.久久撸.com| 中文字幕一区在线播放| 国v精品久久久网| 日本免费在线视频观看| 香蕉久久免费电影| 日韩精品极品毛片系列视频| 久久久久久久久久一区二区三区| 久久精品国产**网站演员| 久久精品国产一区二区三区日韩| 日本小视频在线免费观看| 欧美日韩大陆在线| 在线免费观看视频| 母乳一区在线观看| 精品久久久三级| 成人福利影视| 欧美成人一区二区三区片免费 | 国产精品91久久久| 深夜福利在线观看直播| 亚洲高清一区二区三区| 国产精品99精品无码视亚| 亚洲国产精品91| 国产日韩欧美在线看| jizz日韩| 欧美日韩亚洲综合在线 | 青草青草久热精品视频在线网站| 欧美一级淫片免费视频魅影视频| 亚洲精品ww久久久久久p站| 成年人网站av| 国模一区二区三区| 国产视频一区二区不卡| 成av人片在线观看www| 亚洲成人性视频| 日韩aaaaaa| 99久久婷婷国产综合精品电影| 国产精品一色哟哟| 欧洲亚洲一区二区三区| 奇米一区二区三区四区久久| 清纯唯美亚洲色图| 91激情在线视频| 快灬快灬一下爽蜜桃在线观看| 美女一区二区三区| 热这里只有精品| 果冻天美麻豆一区二区国产| 97精品在线视频| 免费在线观看一级毛片| 欧美在线三级电影| 黄色香蕉视频在线观看| 国产精品一区二区果冻传媒| 欧美一级欧美一级| 亚洲电影男人天堂| 国产欧美日韩最新| 久色国产在线| 亚洲石原莉奈一区二区在线观看| 日韩久久久久久久久久| 亚洲日本乱码在线观看| 男人网站在线观看| 水蜜桃久久夜色精品一区的特点| 亚洲人成网站在线播放2019| jizz性欧美23| 日韩免费黄色av| 麻豆网在线观看| 欧美精品一区二区三区蜜臀| 精人妻无码一区二区三区| 亚洲另类色综合网站| 99国产精品免费视频| 亚洲一区二区三区免费在线观看| 亚洲一二区在线| 国产精品色呦| 国产精品视频99| 久久亚洲导航| 中文字幕欧美日韩在线| 欧美特级特黄aaaaaa在线看| 欧美视频你懂的| 九九九国产视频| 欧美国产日韩精品免费观看| 亚洲成人激情小说| 丝袜诱惑亚洲看片| 黄色激情在线视频| 亚洲91中文字幕无线码三区| 久久国产精品久久精品国产| 日日夜夜一区| 2019中文字幕免费视频| 91国内在线| 伊人久久久久久久久久久久久| 成人久久精品人妻一区二区三区| 在线视频国产一区| 日本三级视频在线| 《视频一区视频二区| 中日韩精品一区二区三区| 国产乱一区二区| 亚洲欧洲日本精品| 男人的天堂亚洲在线| 国产精品videossex国产高清| 成人在线免费视频观看| 免费在线观看一区二区| 在线精品视频一区| 91色精品视频在线| 日韩av电影资源网| 欧美在线精品免播放器视频| 久久99亚洲网美利坚合众国| 久久久av一区| 欧美成人hd| 国产一区二区美女视频| 色在线免费视频| 亚洲电影在线看| 亚洲第一大网站| 日韩一区二区在线看| 伊人网中文字幕| 色噜噜狠狠色综合欧洲selulu| 国产大片中文字幕| 亚洲一区二区三区精品在线| 中文字幕另类日韩欧美亚洲嫩草| 中文字幕在线一区免费| 国产精品无码无卡无需播放器| 久久免费偷拍视频| 久久久久亚洲av无码专区桃色| 91一区在线观看| 国产又黄又粗又猛又爽的视频 | 欧美日本在线播放| 欧美成人一区二区视频| 欧美综合在线视频| 国产成人麻豆免费观看| 欧美探花视频资源| 亚洲一区二区视频在线播放| 欧美日韩视频在线第一区| 最近中文字幕av| 欧美唯美清纯偷拍| 一级黄色大毛片| 欧美二区三区的天堂| 在线免费观看一级片| 欧美肥妇毛茸茸| www.国产.com| 亚洲国产天堂网精品网站| 亚洲三级中文字幕| 亚洲一区二区久久久| av片在线免费观看| 麻豆国产精品va在线观看不卡| av电影免费在线观看| 国内伊人久久久久久网站视频 | 中文字幕第六页| 国产成人av一区二区三区在线| 亚洲少妇一区二区三区| 99re这里都是精品| 波多野结衣一二三四区| 国产精品护士白丝一区av| 成年人午夜剧场| 亚洲国产另类av| 一级黄色在线观看| 91精品在线免费| 三级在线观看网站| 国产亚洲欧美另类中文| 九色porny在线| 久久久久久这里只有精品| 深夜成人福利| 国产在线视频91| 久久91在线| 亚洲图片都市激情| 欧美日韩mv| 欧美伦理片在线看| 国产成人在线视频播放| wwwwxxxx国产| 亚洲欧美激情插 | 欧美日韩一区国产| 精品人妻一区二区三区四区不卡 | 欧美做受喷浆在线观看| 亚洲国产成人私人影院tom| a级黄色片免费看| 色呦呦国产精品| 亚洲欧美激情另类| 在线播放精品一区二区三区| a'aaa级片在线观看| 国产精品中文在线| 欧美a一欧美| 中国一级黄色录像| 久久国产精品久久久久久电车| 做a视频在线观看| 91啪亚洲精品| 美女福利视频在线观看| 在线观看日韩高清av| 欧美一区二区黄片| 久久精品国产2020观看福利| 伊人久久视频| 999国产在线| 日本成人小视频| 一本大道熟女人妻中文字幕在线| 国产一区二区按摩在线观看| 免费在线观看污| 亚洲福利电影网| 国产精品爽爽久久| 中文字幕久久亚洲| 最新中文字幕在线播放| 国产精品乱子乱xxxx| 91精品久久久久久久蜜月| 亚洲色精品三区二区一区| 99久久精品久久久久久清纯| 欧美精品久久久久性色| 欧美疯狂做受xxxx富婆| 岛国视频免费在线观看| 91av视频在线观看| 99亚洲乱人伦aⅴ精品| 欧美精品一区二区性色a+v| 青草国产精品久久久久久| 手机免费看av| 欧美性高潮在线| 天天色棕合合合合合合合| 欧美黑人极品猛少妇色xxxxx| 亚瑟国产精品| 亚洲一卡二卡| 美女视频黄 久久| 亚洲天堂岛国片| 欧美中文字幕一二三区视频| 极品白浆推特女神在线观看| 69视频在线免费观看| 久久精品福利| 久久手机在线视频| 高清在线观看日韩| 久久久久久天堂| 精品乱码亚洲一区二区不卡| 色女人在线视频| 97影院在线午夜| 红桃视频欧美| www男人天堂| 狠狠爱在线视频一区| 天天干视频在线| 欧美在线一区二区视频| 天堂俺去俺来也www久久婷婷| 亚洲自偷自拍熟女另类| 91一区一区三区| 国产免费一区二区三区四区五区| 亚洲欧洲一区二区三区在线观看| 韩国三级一区| 中文字幕一区二区三区有限公司| 激情欧美一区二区| 极品久久久久久| 精品粉嫩超白一线天av| 国产v日韩v欧美v| 欧美精品一区在线发布| 玖玖国产精品视频| 国产精品18在线| 91麻豆精品国产无毒不卡在线观看| а√天堂资源地址在线下载| 操人视频欧美| 一区二区毛片| 黄色片在线观看免费| 欧美精品1区2区3区| 欧美14一18处毛片| 欧美精品一区三区在线观看| 麻豆国产精品官网| av激情在线观看| 日韩精品一区二区三区第95| 成人看片网站| 91麻豆天美传媒在线| 99精品在线观看视频| 波多野结衣大片| 欧美成人午夜激情在线| 国产精品极品国产中出| 少妇性l交大片| 亚洲一区二区三区四区在线免费观看| 性xxxxbbbb| 国产精品免费一区豆花| 欧美日韩亚洲一区三区| 人妻少妇一区二区| 91精品国产一区二区三区香蕉| av人人综合网| 一本色道久久99精品综合| 高清免费成人av| 亚洲精品国产精品国自产网站按摩| 久久久成人精品视频| 天海翼亚洲一区二区三区| 波多野结衣国产精品| 午夜av电影一区| 国产精品实拍| 日本欧洲国产一区二区| 成人免费高清视频在线观看| 国产精品露脸视频| 97视频在线观看免费高清完整版在线观看|