“常通风、勤洗手、戴口罩、少聚集。”
作者简介:
刘岚峰Intel实习生
专注于开源存储SPDK
存储软件性能优化的工作
推荐阅读:
SPDK block device 及其编程的简单介绍(一)
本文的分析基于SPDK v20.01 LTS
https://github.com/spdk/spdk/tree/v20.01
在前文中(参考上面的推荐阅读),我们提到为了便于用户使用用户态的block device, SPDK中开发了用户态、无锁、轮询的block device (bdev) layer。
Block device layer 主要由SPDK中spdk/lib/bdev目录中的代码实现,而为了实现一些必要的块设备及其相应的功能,spdk/module/bdev/中已经实现的一些常见的bdev module。
$ ll lib/bdev
bdev.c bdev_internal.h bdev_rpc.c bdev_zone.c
Makefile part.c scsi_nvme.c vtune.c
$ ll module/bdev/
aio/ compress/ crypto/ delay/ error/ ftl/ gpt/
iscsi/ lvol/ Makefile malloc/ null/ nvme/ ocf/
passthru/ pmem/ raid/ rbd/ rpc/ split/ uring/
virtio/ zone_block/
SPDK的block device layer为用户提供了很多实用的功能,同时也抽象出了一套适合所有块设备的设计:
在内存已经用完或者(设备的I/O)队列已满的情况下