fileinfo_t 结构提供有关文件的信息。start、done、wait-start 和 wait-done 探测器中的 args[2] 指向 I/O 所对应的文件。在分发 I/O 请求时,文件信息存在与否将取决于提供此信息的文件系统。某些文件系统(尤其是第三方文件系统)可能不会提供此信息。I/O 请求也可能是从不包含任何文件信息的文件系统发出的。例如,对文件系统元数据的任何 I/O 请求,将不会与任何一个文件关联。最后,一些高度优化的文件系统可能将不相交文件中的 I/O 聚集为单个 I/O 请求。在此情况下,文件系统可能会为表示大多数 I/O 的文件或表示部分 I/O 的文件提供文件信息。或者,在此情况下文件系统可能根本不提供任何文件信息。
fileinfo_t 结构的定义如下所示:
typedef struct fileinfo { string fi_name; /* name (basename of fi_pathname) */ string fi_dirname; /* directory (dirname of fi_pathname) */ string fi_pathname; /* full pathname */ offset_t fi_offset; /* offset within file */ string fi_fs; /* filesystem */ string fi_mount; /* mount point of file system */ } fileinfo_t;
fi_name 字段包含文件的名称,但不包括任何目录部分。如果没有任何文件信息与 I/O 关联,则 fi_name 字段将设置为字符串 <none>。在极少数情况下,与文件关联的路径名可能未知。在此情况下,fi_name 字段将设置为字符串 <unknown>。
fi_dirname 字段仅包含文件名的目录部分。与 fi_name 一样,如果不存在任何文件信息,此字符串可能会设置为 <none>;如果与该文件关联的路径名未知,此字符串可能会设置为 <unknown>。
fi_pathname 字段包含文件的完整路径名。与 fi_name 一样,如果不存在任何文件信息,此字符串可能会设置为 <none>;如果与该文件关联的路径名未知,此字符串可能会设置为 <unknown>。
fi_offset 字段包含文件中的偏移,如果文件信息不存在或者文件系统未指定偏移,则此字段将为 1。