Hi,
在 2025/08/25 17:18, Christoph Hellwig 写道:
On Mon, Aug 25, 2025 at 04:56:55PM +0800, Ming Lei wrote:
`stat $BDEV_PATH` never works for getting bdev size, so it looks wrong
to call vfs_getattr_nosec() with bdev path for retrieving bdev's size.
Exactly.
Ok.
So just wondering why not take the following more readable way?
/* vfs_getattr() never works for retrieving bdev size */
if (S_ISBLK(stat.mode)) {
loopsize = i_size_read(file->f_mapping->host);
} else {
ret = vfs_getattr_nosec(&file->f_path, &stat, STATX_SIZE, 0);
if (ret)
return 0;
loopsize = stat.size;
}
Just we can't use stat.mode here, I'll replace it with:
S_ISBLK(file_inode(file)->i_mode)
Thanks,
Kuai
Also the above looks like how application reads file size in case of bdev
involved.
That's not just more readable, but simply the way to go. Maybe split
it into a helper for readability, though.
.