[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH v7 12/35] util: let qemu_fd_getlength support bl
Re: [Qemu-block] [PATCH v7 12/35] util: let qemu_fd_getlength support block device
Mon, 9 Nov 2015 16:43:22 -0200
On Mon, Nov 09, 2015 at 01:58:27PM +0800, Xiao Guangrong wrote:
> On 11/06/2015 11:54 PM, Eduardo Habkost wrote:
> >On Mon, Nov 02, 2015 at 05:13:14PM +0800, Xiao Guangrong wrote:
> >>lseek can not work for all block devices as the man page says:
> >>| Some devices are incapable of seeking and POSIX does not specify
> >>| which devices must support lseek().
> >>This patch tries to add the support on Linux by using BLKGETSIZE64
> >>Signed-off-by: Xiao Guangrong <address@hidden>
> >On which cases is this patch necessary? Do you know any examples of
> >Linux block devices that won't work with lseek(SEEK_END)?
> To be honest, i have not checked all block device, this patch was made
> based on the man page. However, i do not mind drop this patch (and maybe
> other patches) to make this pachset smaller. BLKGETSIZE64 can be added
> in the future if we meet such device.
By looking at the Linux source code implementing BLKGETSIZE64, it looks
like it should work for all block devices where SEEK_END works:
* BLKGETSIZE64 returns i_size_read(bdev->bd_inode)
* llseek(SEEK_END) uses i_size_read(bd_inode) as the offset
That's probably why raw_getlength() never needed a Linux-specific