• Trond Myklebust's avatar
    NFS: Do not set NFS_INO_INVALID_LABEL unless server supports labeled NFS · fd1defc2
    Trond Myklebust authored
    Commit aa9c2669 (NFS: Client implementation of Labeled-NFS) introduces
    a performance regression. When nfs_zap_caches_locked is called, it sets
    the NFS_INO_INVALID_LABEL flag irrespectively of whether or not the
    NFS server supports security labels. Since that flag is never cleared,
    it means that all calls to nfs_revalidate_inode() will now trigger
    an on-the-wire GETATTR call.
    
    This patch ensures that we never set the NFS_INO_INVALID_LABEL unless the
    server advertises support for labeled NFS.
    It also causes nfs_setsecurity() to clear NFS_INO_INVALID_LABEL when it
    has successfully set the security label for the inode.
    Finally it gets rid of the NFS_INO_INVALID_LABEL cruft from nfs_update_inode,
    which has nothing to do with labeled NFS.
    Reported-by: default avatarNeil Brown <neilb@suse.de>
    Cc: stable@vger.kernel.org # 3.11+
    Tested-by: default avatarNeil Brown <neilb@suse.de>
    Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
    fd1defc2
inode.c 52.4 KB