As evidenced by how other filesystems handle it, a return value of 0 from fs_devread() means failure; nonzero means success. The opposite assumption was being made in zfs.c for the use of zfs_devread() so fix the confusion by making zfs_devread() return 0 on success.
It probably doesn't make sense to change the handling of zfs_devread() in zfs.c instead, because as it is it matches the semantics of the other functions there. Signed-off-by: Phaedrus Leeds <mwle...@mailtundra.com> Tested-by: Phaedrus Leeds <mwle...@mailtundra.com> --- fs/zfs/dev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/zfs/dev.c b/fs/zfs/dev.c index 251e7d1f74..fcd9893b3a 100644 --- a/fs/zfs/dev.c +++ b/fs/zfs/dev.c @@ -19,12 +19,12 @@ static struct disk_partition *part_info; void zfs_set_blk_dev(struct blk_desc *rbdd, struct disk_partition *info) { zfs_blk_desc = rbdd; part_info = info; } /* err */ int zfs_devread(int sector, int byte_offset, int byte_len, char *buf) { return fs_devread(zfs_blk_desc, part_info, sector, byte_offset, - byte_len, buf); + byte_len, buf) ? 0 : 1; } -- 2.44.0