• Dominique Martinet's avatar
    Revert "fs/9p: search open fids first" · 22e424fe
    Dominique Martinet authored
    This reverts commit 478ba09e.
    
    That commit was meant as a fix for setattrs with by fd (e.g. ftruncate)
    to use an open fid instead of the first fid it found on lookup.
    The proper fix for that is to use the fid associated with the open file
    struct, available in iattr->ia_file for such operations, and was
    actually done just before in 66246641 ("9p: retrieve fid from file
    when file instance exist.")
    As such, this commit is no longer required.
    
    Furthermore, changing lookup to return open fids first had unwanted side
    effects, as it turns out the protocol forbids the use of open fids for
    further walks (e.g. clone_fid) and we broke mounts for some servers
    enforcing this rule.
    
    Note this only reverts to the old working behaviour, but it's still
    possible for lookup to return open fids if dentry->d_fsdata is not set,
    so more work is needed to make sure we respect this rule in the future,
    for example by adding a flag to the lookup functions to only match
    certain fid open modes depending on caller requirements.
    
    Link: https://lkml.kernel.org/r/20220130130651.712293-1-asmadeus@codewreck.org
    Fixes: 478ba09e ("fs/9p: search open fids first")
    Cc: stable@vger.kernel.org # v5.11+
    Reported-by: default avatarron minnich <rminnich@gmail.com>
    Reported-by: ng@0x80.stream
    Signed-off-by: default avatarDominique Martinet <asmadeus@codewreck.org>
    22e424fe
fid.c 7.41 KB