cifs: Properly handle auto disabling of serverino option
[ Upstream commit 29fbeb7a908a60a5ae8c50fbe171cb8fdcef1980 ] Fix mount options comparison when serverino option is turned off later in cifs_autodisable_serverino() and thus avoiding mismatch of new cifs mounts. Cc: stable@vger.kernel.org Signed-off-by: Paulo Alcantara (SUSE) <paulo@paulo.ac> Signed-off-by: Steve French <stfrench@microsoft.com> Reviewed-by: Pavel Shilovsky <pshilove@microsoft.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
d85e830d85
commit
987564c28e
3 changed files with 12 additions and 2 deletions
|
@ -72,5 +72,10 @@ struct cifs_sb_info {
|
|||
struct delayed_work prune_tlinks;
|
||||
struct rcu_head rcu;
|
||||
char *prepath;
|
||||
/*
|
||||
* Indicate whether serverino option was turned off later
|
||||
* (cifs_autodisable_serverino) in order to match new mounts.
|
||||
*/
|
||||
bool mnt_cifs_serverino_autodisabled;
|
||||
};
|
||||
#endif /* _CIFS_FS_SB_H */
|
||||
|
|
|
@ -3247,12 +3247,16 @@ compare_mount_options(struct super_block *sb, struct cifs_mnt_data *mnt_data)
|
|||
{
|
||||
struct cifs_sb_info *old = CIFS_SB(sb);
|
||||
struct cifs_sb_info *new = mnt_data->cifs_sb;
|
||||
unsigned int oldflags = old->mnt_cifs_flags & CIFS_MOUNT_MASK;
|
||||
unsigned int newflags = new->mnt_cifs_flags & CIFS_MOUNT_MASK;
|
||||
|
||||
if ((sb->s_flags & CIFS_MS_MASK) != (mnt_data->flags & CIFS_MS_MASK))
|
||||
return 0;
|
||||
|
||||
if ((old->mnt_cifs_flags & CIFS_MOUNT_MASK) !=
|
||||
(new->mnt_cifs_flags & CIFS_MOUNT_MASK))
|
||||
if (old->mnt_cifs_serverino_autodisabled)
|
||||
newflags &= ~CIFS_MOUNT_SERVER_INUM;
|
||||
|
||||
if (oldflags != newflags)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
|
|
|
@ -523,6 +523,7 @@ cifs_autodisable_serverino(struct cifs_sb_info *cifs_sb)
|
|||
{
|
||||
if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM) {
|
||||
cifs_sb->mnt_cifs_flags &= ~CIFS_MOUNT_SERVER_INUM;
|
||||
cifs_sb->mnt_cifs_serverino_autodisabled = true;
|
||||
cifs_dbg(VFS, "Autodisabling the use of server inode numbers on %s. This server doesn't seem to support them properly. Hardlinks will not be recognized on this mount. Consider mounting with the \"noserverino\" option to silence this message.\n",
|
||||
cifs_sb_master_tcon(cifs_sb)->treeName);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue