[CIFS] use sensible file nlink values if unprovided
Certain servers may not set the NumberOfLinks field in query file/path info responses. In such a case, cifs_inode_needs_reval() assumes that all regular files are hardlinks and triggers revalidation, leading to excessive and unnecessary network traffic. This change hardcodes cf_nlink (and subsequently i_nlink) when not returned by the server, similar to what already occurs in cifs_mkdir(). Cc: <stable@vger.kernel.org> Signed-off-by: David Disseldorp <ddiss@suse.de> Signed-off-by: Steve French <smfrench@gmail.com>
This commit is contained in:
Родитель
95dc8dd14e
Коммит
6658b9f70e
|
@ -558,6 +558,11 @@ cifs_all_info_to_fattr(struct cifs_fattr *fattr, FILE_ALL_INFO *info,
|
|||
fattr->cf_mode &= ~(S_IWUGO);
|
||||
|
||||
fattr->cf_nlink = le32_to_cpu(info->NumberOfLinks);
|
||||
if (fattr->cf_nlink < 1) {
|
||||
cifs_dbg(1, "replacing bogus file nlink value %u\n",
|
||||
fattr->cf_nlink);
|
||||
fattr->cf_nlink = 1;
|
||||
}
|
||||
}
|
||||
|
||||
fattr->cf_uid = cifs_sb->mnt_uid;
|
||||
|
|
Загрузка…
Ссылка в новой задаче