Re: Deprecating smbfs(5) and removing it before FreeBSD 14
Date: Sat, 22 Jan 2022 19:23:43 UTC
On Wed, Jan 19, 2022 at 7:04 PM Rick Macklem <rmacklem@uoguelph.ca> wrote: > Yuri <yuri@aetern.org> wrote: > > Rick Macklem wrote: > > > I have downloaded the final version of the opensolaris > > > smbfs and it looks much more reasonable to port to > > > FreeBSD. > > > > What do you mean by "final version of the opensolaris smbfs", the one > > from 2010? Please note that illumos (actively maintained fork of > > opensolaris) has a much more up to date one. > I'm not surprised that illumos will have updates. > I don't think it will affect the exercise at this time, since the current > work > is to figure out what pieces of the opensolaris code needs to be pulled > into the current smbfs to make the newer version work. > Solaris uses a very different VFS/VOP locking model, so a direct port > of the opensolaris code would be more work than I will be attempting. > > rick > > > I will be starting to work on this (and maybe Mark Saad will be > > able to help). > > > > I have no idea when I'll have code that can be tested by others. > > > > rick > > > > ________________________________________ > > From: Miroslav Lachman <000.fbsd@quip.cz> > > Sent: Monday, January 10, 2022 10:27 AM > > To: Rick Macklem; freebsd-current@freebsd.org; freebsd-stable > > Cc: Yuri > > Subject: Re: Deprecating smbfs(5) and removing it before FreeBSD 14 > > > > CAUTION: This email originated from outside of the University of Guelph. > Do not click links or open attachments unless you recognize the sender and > know the content is safe. If in doubt, forward suspicious emails to > IThelp@uoguelph.ca > > > > > > Hello Rick, > > thank you for the update and your time on smbfs. I hope OpenSolaris > > version will be portable. (or mayby some older version from Apple?) > > FreeBSD without possibility to mount smbfs is not an option for some > > projects. > > > > Kind regards > > Miroslav Lachman > > > > > > On 09/01/2022 15:46, Rick Macklem wrote: > >> Well, I took a look at the Apple code and I'm afraid I > >> think porting it into FreeBSD is too big a job for me. > >> > >> I was hoping the code would have a layer that could > >> be used as a "block box" for the VOP calls, but that > >> does not seem to be the case. > >> There is also a *lot* of code in it. > >> > >> I am going to look at the OpenSolaris code, to see if > >> I think it will be an easier port. > >> > >> rick > >> > >> ________________________________________ > >> From: Miroslav Lachman <000.fbsd@quip.cz> > >> Sent: Monday, November 1, 2021 5:47 PM > >> To: Rick Macklem; freebsd-current@freebsd.org; freebsd-stable > >> Cc: Yuri > >> Subject: Re: Deprecating smbfs(5) and removing it before FreeBSD 14 > >> > >> CAUTION: This email originated from outside of the University of > Guelph. Do not click links or open attachments unless you recognize the > sender and know the content is safe. If in doubt, forward suspicious emails > to IThelp@uoguelph.ca > >> > >> > >> On 01/11/2021 16:55, Rick Macklem wrote: > >>> Miroslav Lachman wrote: > >>> [good stuff snipped] > >>>> Apple sources can be found there > >>>> https://opensource.apple.com/source/smb/ with all the history from > SMBv1 > >>>> to SMBv3. The files have original copyright header from 2001 Boris > Popov > >>>> (same as FreeBSD) but otherwise it is very different code due to > >>>> different kernel interfaces and so on. > >>>> With Apple and Illumos sources it is possible to have smbfs in FreeBSD > >>>> upgraded to v2 or v3 but very skilled programmer is needed for this > >>>> work. And for the past years there is none interested in this work. > >>> > >>> Although I agree that it would be a non-trivial exercise, a lot of the > Apple > >>> differences are in the "smoke and mirrors" category. > >>> Around OSX 10.4, they changed their VFS/VOP to typedefs and accessor > >>> functions. For example: > >>> "struct vnode *vp" became "vnode_t vp" > >>> and "vp->v_type" became "vnode_type(vp)" > >>> > >>> Ten years ago, the actual semantics were very close to what FreeBSD > used. > >>> If you look at sys/fs/nfs/nfskpiport.h in older sources (around > FreeBSD 10), > >>> you'll see a bunch of macros I used to allow the Apple port to also > build/run > >>> on FreeBSD (a couple, such as vnode_t are still left because I've > never gotten > >>> around to doing the edit to replace them). > >> > >> If I see it right even the 10 years old Apple version of smbfs has > >> support for SMBv2 so if this old version is closer to FreeBSD kernel / > >> smbfs it can be a good starting point to merge changes to our smbfs to > >> have SMBv2 support on FreeBSD. > >> > >>> The hard part will be dealing with the actual VFS/VOP semantics > changes that > >>> have occurred in the last 10 years. > >>> > >>> Did they stick APSLs on the files? (If so, I think it could still be > ok, since the APSL > >>> is a lot like the CDDL. However, I'm not sure if the APSL has ever > been blessed > >>> by FreeBSD as of yet?) > >> > >> The old versions of smbfs has original copyright header and no other > >> license. Newer version has some added files with different header with > >> APSL license. For example > >> > https://opensource.apple.com/source/smb/smb-759.40.1/kernel/smbfs/smbfs_subr_2.h.auto.html > >> > >> If license is a problem then I think it can live with APSL in the ports > >> tree as a loadable kernel module. Maybe this will be the easier for > >> development too? > >> > >>> Don't assume anything will happen, but I *might* take a look in the > winter, > >>> since outstanding NFS changes should be done by the end of 2021. > >> > >> I really appreciate your endless work on NFS on FreeBSD. Without your > >> work the NFS will be lacking behind industry standards similar to what > >> we see with smbfs. > >> And if you will have some spare time to take a look on smbfs and maybe > >> solve the SMBv2 / SMBv3 problem you will be my hero. I am waiting for it > >> for many years and I know I am not alone who needs working SMB / CIFS on > >> FreeBSD. > >> > >>> It does sound like there is some interest in this and that fuse > doesn't solve > >>> the problem (at least for everyone). > >> > >> Yes, there is an interest. It was discussed few times in the past in the > >> mailing lists and web forums.freebsd.org but without anybody willing to > >> touch the code. > >> FUSE alternatives have so many problems with performance, stability and > >> configuration. > >> https://forums.freebsd.org/threads/getting-smbnetfs-to-work.78413/ > >> > >> Kind regards > >> Miroslav Lachman > >> > > > > > So I am looking at the Apple and Solaris code, provided by rick. I am not sure if the illumos code provides SMB2 support. They based the solaris code on Apple SMB-217.x which is from OSX 10.4 . Which I am sure predates smb2 . https://github.com/apple-oss-distributions/smb/tree/smb-217.19 If I am following this correctly we need to look at Apple's smb client from OSX 10.9 which is where I start to see bits about smb2 https://github.com/apple-oss-distributions/smb/tree/smb-697.95.1/kernel/netsmb This is also where this stuff starts to look less and less like FreeBSD . Let me ask some of the illumos people I know to see if there is anything they can point to. -- mark saad | nonesuch@longcount.org