From: dbavatar Date: Mon, 24 Apr 2017 16:38:31 +0000 (-0400) Subject: Fix lseek result when dnode is dirty X-Git-Tag: zfs-0.7.0-rc4~33 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6e03ec4fa26110dcdf817401a375399f3432ae21;p=zfs Fix lseek result when dnode is dirty Fixup commit 66aca24. We should have equivalent return values as generic_file_llseek() and advance to end of file. Reviewed-by: Richard Yao Reviewed-by: Brian Behlendorf Tested-by: bunder2015 Signed-off-by: Debabrata Banerjee Closes #6050 Closes #6053 --- diff --git a/module/zfs/zfs_vnops.c b/module/zfs/zfs_vnops.c index 72a3104c7..c065c0c59 100644 --- a/module/zfs/zfs_vnops.c +++ b/module/zfs/zfs_vnops.c @@ -278,9 +278,13 @@ zfs_holey_common(struct inode *ip, int cmd, loff_t *off) if (error == ESRCH) return (SET_ERROR(ENXIO)); - /* file was dirty, so fall back to using file_sz logic */ - if (error == EBUSY) - error = 0; + /* file was dirty, so fall back to using generic logic */ + if (error == EBUSY) { + if (hole) + *off = file_sz; + + return (0); + } /* * We could find a hole that begins after the logical end-of-file,