Would this slow things down much at boot time when you do have e.g. 3 mounts ... would end up serializing a bit more? On Mon, Jan 17, 2022 at 8:17 PM Ronnie Sahlberg <lsahlber@xxxxxxxxxx> wrote: > > RHBZ: 2008434 > > Some servers, such as Windows2016 have a very low number of concurrent mounts that > they allow from each client. > This can be a problem if you have a more than a handful (==3 in this case) > of cifs entries in your fstab and cause a number of the mounts there to randomly fail. > > Add a global mutex and use it to serialize all mount attempts. > > Signed-off-by: Ronnie Sahlberg <lsahlber@xxxxxxxxxx> > --- > fs/cifs/fs_context.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/fs/cifs/fs_context.c b/fs/cifs/fs_context.c > index e3ed25dc6f3f..7ec35f3f0a5f 100644 > --- a/fs/cifs/fs_context.c > +++ b/fs/cifs/fs_context.c > @@ -37,6 +37,8 @@ > #include "rfc1002pdu.h" > #include "fs_context.h" > > +static DEFINE_MUTEX(cifs_mount_mutex); > + > static const match_table_t cifs_smb_version_tokens = { > { Smb_1, SMB1_VERSION_STRING }, > { Smb_20, SMB20_VERSION_STRING}, > @@ -707,10 +709,14 @@ static int smb3_get_tree_common(struct fs_context *fc) > static int smb3_get_tree(struct fs_context *fc) > { > int err = smb3_fs_context_validate(fc); > + int ret; > > if (err) > return err; > - return smb3_get_tree_common(fc); > + mutex_lock(&cifs_mount_mutex); > + ret = smb3_get_tree_common(fc); > + mutex_unlock(&cifs_mount_mutex); > + return ret; > } > > static void smb3_fs_context_free(struct fs_context *fc) > -- > 2.30.2 > -- Thanks, Steve