• Jeff Layton's avatar
    vfs: pass struct file to do_truncate on O_TRUNC opens (try #2) · e1181ee6
    Jeff Layton authored
    When a file is opened with O_TRUNC, the truncate processing is handled
    by handle_truncate(). This function however doesn't receive any info
    about the newly instantiated filp, and therefore can't pass that info
    along so that the setattr can use it.
    
    This makes NFSv4 misbehave. The client does an open and gets a valid
    stateid, and then doesn't use that stateid on the subsequent truncate.
    It uses the zero-stateid instead. Most servers ignore this fact and
    just do the truncate anyway, but some don't like it (notably, RHEL4).
    
    It seems more correct that since we have a fully instantiated file at
    the time that handle_truncate is called, that we pass that along so
    that the truncate operation can properly use it.
    Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    e1181ee6
namei.c 82.9 KB