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 <ryao@gentoo.org>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Tested-by: bunder2015 <omfgbunder@gmail.com>
Signed-off-by: Debabrata Banerjee <dbanerje@akamai.com>
Closes #6050 
Closes #6053
This commit is contained in:
dbavatar 2017-04-24 12:38:31 -04:00 committed by Brian Behlendorf
parent b717b11cb0
commit 6e03ec4fa2
1 changed files with 7 additions and 3 deletions

View File

@ -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,