Re: [PATCH] loop: fix zero sized loop for block special file

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.
.






[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux