xfs: return a distinct error code value for IGET_INCORE cache misses
authorDarrick J. Wong <darrick.wong@oracle.com>
Wed, 18 Oct 2017 04:37:32 +0000 (21:37 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 20 Dec 2017 09:10:31 +0000 (10:10 +0100)
[ Upstream commit ed438b476b611c67089760037139f93ea8ed41d5 ]

For an XFS_IGET_INCORE iget operation, if the inode isn't in the cache,
return ENODATA so that we don't confuse it with the pre-existing ENOENT
cases (inode is in cache, but freed).

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/xfs/xfs_icache.c

index 34227115a5d6e7c22ee05ce8c90a70bec1701762..43005fbe8b1eefabc84ee762a9427ec784889814 100644 (file)
@@ -610,7 +610,7 @@ again:
        } else {
                rcu_read_unlock();
                if (flags & XFS_IGET_INCORE) {
-                       error = -ENOENT;
+                       error = -ENODATA;
                        goto out_error_or_again;
                }
                XFS_STATS_INC(mp, xs_ig_missed);