Re: Failure to access cifs mount of samba share after resume from sleep with 5.17-rc5

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The patch appears to fix the issue on the problematic bisected
pre-5.16 kernel. (I let the machine sleep for 3 hours and the mount
still worked after resume.)

I'm now booted into a 5.18.1 kernel with this patch, and I'll be able
to tell tomorrow morning if this also resolves the issue with this
newer kernel.

Thanks for the help in getting this issue resolved!

Regards,

Satadru

On Sat, Jun 4, 2022 at 3:36 PM Paulo Alcantara <pc@xxxxxx> wrote:
>
> Hi Satadru,
>
> Thanks for providing all requested files off-list.  With that, I ended
> up with below changes that should fix your issue.  Please let us if it
> works.
>
> diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
> index 12c872800326..325423180fd2 100644
> --- a/fs/cifs/cifsfs.c
> +++ b/fs/cifs/cifsfs.c
> @@ -1086,7 +1086,7 @@ struct file_system_type cifs_fs_type = {
>  };
>  MODULE_ALIAS_FS("cifs");
>
> -static struct file_system_type smb3_fs_type = {
> +struct file_system_type smb3_fs_type = {
>         .owner = THIS_MODULE,
>         .name = "smb3",
>         .init_fs_context = smb3_init_fs_context,
> diff --git a/fs/cifs/cifsfs.h b/fs/cifs/cifsfs.h
> index dd7e070ca243..b17be47a8e59 100644
> --- a/fs/cifs/cifsfs.h
> +++ b/fs/cifs/cifsfs.h
> @@ -38,7 +38,7 @@ static inline unsigned long cifs_get_time(struct dentry *dentry)
>         return (unsigned long) dentry->d_fsdata;
>  }
>
> -extern struct file_system_type cifs_fs_type;
> +extern struct file_system_type cifs_fs_type, smb3_fs_type;
>  extern const struct address_space_operations cifs_addr_ops;
>  extern const struct address_space_operations cifs_addr_ops_smallbuf;
>
> diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c
> index 35962a1a23b9..eeb2a2957a68 100644
> --- a/fs/cifs/misc.c
> +++ b/fs/cifs/misc.c
> @@ -1211,8 +1211,12 @@ static struct super_block *__cifs_get_super(void (*f)(struct super_block *, void
>                 .data = data,
>                 .sb = NULL,
>         };
> +       struct file_system_type **fs_type = (struct file_system_type *[]) {
> +               &cifs_fs_type, &smb3_fs_type, NULL,
> +       };
>
> -       iterate_supers_type(&cifs_fs_type, f, &sd);
> +       for (; *fs_type; fs_type++)
> +               iterate_supers_type(*fs_type, f, &sd);
>
>         if (!sd.sb)
>                 return ERR_PTR(-EINVAL);



[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux