From 6e03ec4fa26110dcdf817401a375399f3432ae21 Mon Sep 17 00:00:00 2001 From: dbavatar Date: Mon, 24 Apr 2017 12:38:31 -0400 Subject: [PATCH] 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 --- module/zfs/zfs_vnops.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/module/zfs/zfs_vnops.c b/module/zfs/zfs_vnops.c index 72a3104c71a..c065c0c59b1 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, -- 2.45.0