gpt4 book ai didi

linux - 在没有原始文件系统权限的情况下获取磁盘扇区大小

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:20 24 4
gpt4 key购买 nike

我正在尝试获取扇区大小,特别是这样我就可以正确调整缓冲区大小以使用 O_DIRECT 进行读/写。

当我的应用以 root 身份运行时,以下代码有效:

int fd = open("/dev/xvda1", O_RDONLY|O_NONBLOCK);
size_t blockSize;
int rc = ioctl(fd, BLKSSZGET, &blockSize);

如何在不以 root 身份运行的情况下获取扇区大小?

最佳答案

根据 open() 的 Linux 联机帮助页:

In Linux alignment restrictions vary by file system and kernel version and might be absent entirely. However there is currently no file system-independent interface for an application to discover these restrictions for a given file or file system. Some file systems provide their own interfaces for doing so, for example the XFS_IOC_DIOINFO operation in xfsctl(3).

所以看起来您可以使用 xfsctl()... 获取此信息,如果您使用的是 xfs。

由于您的底层 block 设备是一个 Xen 虚拟 block 设备,并且在它下面可能有任意数量的层(LVM、dm-crypt、另一个文件系统等...)我不确定所有这些的意义有多大真的很适合你。

关于linux - 在没有原始文件系统权限的情况下获取磁盘扇区大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12939703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com