[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <36f30d8d-02fb-4579-b527-16da24cdc856@kernel.dk>
Date: Mon, 25 Aug 2025 07:56:02 -0600
From: Jens Axboe <axboe@...nel.dk>
To: Yu Kuai <yukuai1@...weicloud.com>, ming.lei@...hat.com,
hch@...radead.org, yukuai3@...wei.com, rajeevm@....com
Cc: linux-block@...r.kernel.org, linux-kernel@...r.kernel.org,
yi.zhang@...wei.com, yangerkun@...wei.com, johnny.chenyi@...wei.com
Subject: Re: [PATCH v2] loop: fix zero sized loop for block special file
On 8/25/25 3:32 AM, Yu Kuai wrote:
> static loff_t lo_calculate_size(struct loop_device *lo, struct file *file)
> {
> - struct kstat stat;
> loff_t loopsize;
> int ret;
>
> - /*
> - * Get the accurate file size. This provides better results than
> - * cached inode data, particularly for network filesystems where
> - * metadata may be stale.
> - */
> - ret = vfs_getattr_nosec(&file->f_path, &stat, STATX_SIZE, 0);
> - if (ret)
> - return 0;
> + if (S_ISBLK(file_inode(file)->i_mode)) {
> + loopsize = i_size_read(file->f_mapping->host);
> + } else {
> + struct kstat stat;
> +
> + /*
> + * Get the accurate file size. This provides better results than
> + * cached inode data, particularly for network filesystems where
> + * metadata may be stale.
> + */
> + ret = vfs_getattr_nosec(&file->f_path, &stat, STATX_SIZE, 0);
> + if (ret)
> + return 0;
> +
> + loopsize = stat.size;
> + }
Gah, that was pretty silly...
--
Jens Axboe
Powered by blists - more mailing lists