Re: [PATCH] loop: fix zero sized loop for block special file
From: Christoph Hellwig <hch@infradead.org>
Date: 2025-08-25 09:18:12
Also in:
linux-fsdevel, lkml
From: Christoph Hellwig <hch@infradead.org>
Date: 2025-08-25 09:18:12
Also in:
linux-fsdevel, lkml
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.
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;
}
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.