NBD_SET_SIZE 设置的大小是多少?块设备的通道或大小?

What does NBD_SET_SIZE set the size of? The channel or the size of the block device?

我正在使用网络块设备 (NBD),但找不到任何关于 NBD_SET_SIZE 所指内容的文档。我怀疑它是块设备的大小,然后 NBD_SET_BLKSIZE 是底层设备块大小的提示。那么 NBD_SET_SIZE_BLOCKS 是什么?

有没有什么地方可以让我获得 nbd.h 中定义的所有 ioctl 标志的定义?执行 google 搜索没有任何结果,并且 nbd.h 不包含关于这些标志的评论。

您可以阅读代码here

基本上,设置大小有两种方式:一种是以字节为单位,另一种是以块为单位。

前者为NBD_SET_SIZE。后者要求您执行两个 ioctl,一个设置块大小 (NBD_SET_BLKSIZE),另一个设置块大小 (NBD_SET_SIZE_BLOCKS)。

一旦你理解了名字的来源就真的不难了:-)

我不确定 NBD_SET_SIZE 的支持情况如何,据我所知大多数 nbd 实现都使用 NBD_SET_BLKSIZE。