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]

 



I can confirm that the patch fixes the issue on 5.18.1 as well.

Thanks again!

Satadru

On Sat, Jun 4, 2022 at 10:31 PM Satadru Pramanik <satadru@xxxxxxxxx> wrote:
>
> 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