bufx 结构
用途
根据性能和 RAS 原因的需要,扩展 布夫 结构以容纳新字段。
描述
布夫克斯 结构可由 64 位内核扩展和 64 位内核扩展使用。 32 位内核扩展和 32 位内核扩展仅具有使用 布夫 结构的选项。
bufx 块 I/O 的结构变量
在 /usr/include/sys/buf.h 文件中定义的 bufx 结构包含以下字段:
| 项 | 描述 |
|---|---|
| b_flags | 标志位。 此字段的值由逻辑 OR 操作构造为具有 0 中的 0 个或更多个:
|
| b_forw | 正向繁忙块指针。 |
| b_back | 向后繁忙的块指针。 |
| av_forw | 驱动程序请求队列的前转指针。 |
| av_back | 用于驱动程序请求队列的反向指针。 |
| b_iodone | 调用 策略 例程的任何人都必须将此字段设置为指向其 I/O 完成例程。 当 I/O 完成时,将在 INTIODONE 中断 级别上调用此例程。 |
| b_dev | 主要和次要设备号。 |
| b_bcount | 数据传输的字节计数。 |
| b_un.b_addr | 这是数据缓冲区的内存地址。 |
| b_blkno | 设备上的块号。 |
| b_resid | 发生错误后未传输的数据量。 |
| b_event | 事件列表的锚点。 |
| b_xmemd | 这是跨内存描述符。 |
| bx_refptrtop | 参考指针的上半部分。 |
| bx_refptrbot | 参考指针的下半部分。 |
| bx_version | 这是 布夫克斯 结构的版本。 |
| bx_eyecatcher | 该字段包含字符串 "bufx" ,允许在转储数据时轻松识别 KDB 中的 布夫克斯 结构,并且除了使用 BUFX_VALIDATE 宏外,还允许进行结构验证。 |
| bx_flags | 布夫克斯 标志具有 64 位字段,该字段可用于特定于 布夫克斯的标志,这些标志尚未定义。 |
| bx_io_priority | 如果底层存储设备不支持 I/O 优先级,那么将忽略此值。 该bx_io_priority必须是以下值之一:IOPRIORITY_UNSET(0) 或 1 到 15 之间的值。 较低的 I/O 优先级值被认为比较大的值更重要。 例如,值为 1 将被视为最高优先级,值为 15 将被视为最低优先级。 以下项的值:IOPRIORITY_UNSET在 sys/extendio.h 文件中定义。 |
| bx_io_cache_hint | 如果底层存储设备不支持 I/O 高速缓存提示,那么将忽略此值。 该bx_io_cache_hint必须是以下值之一:CH_AGE_OUT_FAST或其值CH_PAGE_WRITE(在 sys/extendio.h 文件中定义)。 这些值是互斥的。 如果CH_AGE_OUT_FAST设置好,可以快速从存储设备缓冲区高速缓存中调出 I/O 缓冲区。 这在以下情况下很有用: 应用程序已在对 I/O 缓冲区进行高速缓存,并且可以避免在存储层中进行冗余高速缓存。 如果CH_PAGE_WRITE设置, I/O 缓冲区仅写至存储设备高速缓存,而不写至磁盘。 |