David Howells <dhowells@xxxxxxxxxx> wrote: > The problem might be summed up by the following snippet: > > openat(AT_FDCWD, "/dev/loop0", O_RDONLY) = 3 > newfstatat(3, "", {st_mode=S_IFBLK|0660, st_rdev=makedev(0x7, 0), ...}, AT_EMPTY_PATH) = 0 > splice(3, NULL, 1, NULL, 1048576, 0) = 0 Ah. In filemap_splice_read(): do { cond_resched(); if (*ppos >= i_size_read(file_inode(in))) break; but i_size_read(file_inode(in)) for a blockdev returns 0, it would seem. What should I use instead? David