[illumos-Developer] RFE 604: Proposal to allow CIFS server to traverse mount points

Garrett D'Amore garrett at nexenta.com
Fri Jan 21 10:20:49 PST 2011


For the record, I think your comments are good Eric, and I totally agree
that we need to extend the timer.. in fact at this point I'd like to
recommend that we just remove the timer -- the timer was intended to
ensure we weren't hamstrung by a lack of feedback.  That's not the case
here, and I think we should keep going until we either achieve
consensus, or reach a point where no further feedback and interactions
are occurring.

Once we reach consensus, I think we can restart a *short* timer to give
anyone else who hasn't participated up to that point a chance to comment
on the final spec, but I think that if there are any such individuals
they should speak up now.

	- Garrett

On Fri, 2011-01-21 at 10:03 -0800, Eric Schrock wrote:
> 
> 
> On Thu, Jan 20, 2011 at 3:17 PM, Aram Hăvărneanu <aram.h at mgk.ro>
> wrote:
>         
>         
>         Case-insensitivity matching is required to avoid application
>         confusion
>         on the client side.  Applications expect either a
>         case-sensitive
>         namespace or a case-insensitive one (most Windows Application
>         expect a
>         case-insensitive namespace).  Applications are confused when
>         case
>         sensitivity is an arbitrary matter.
>         
>         ACLs are required for the same reason as case-sensitivity and
>         also for
>         administrative purposes. With CIFS it is common and expected
>         that ACLs
>         are set from the client side. Either they are set by the
>         applications
>         themselves, or administrators set them with Windows tools.  We
>         make a
>         promise that ACLs either exist or do now, and to keep this
>         promise we
>         need to have consistent behavior in all backing file systems.
> 
> 
> So the answer is that it does not break programmatic correctness (i.e.
> operations don't fail at the protocol level), but users and
> applications will be confused.  This should be explicitly stated in
> the spec.
> 
> 
> So why is it OK that a parent filesystem supports system attributes
> but a child filesystem does not?  From the assertions above
> (correctness, confusion, expectations), it would seem that having one
> file that could have the archive bit set but a subdirectory with one
> that couldn't would be a bad thing.
> 
> 
> It still seems to me that this should be configurable.  There are many
> users who would prefer to access to their data in a degraded form than
> no access at all.
> 
> 
>         At traversal time.
>  
> Please update the spec to indicate this.
>  
>         > The proposal seems to overly simplify the SMB model (the
>         relationship is not
>         > actually 1:1),
>         
>         
>         I don't think the proposal simplifies the SMB model, this memo
>         proposes changing what happens at traversal time.  There are
>         other
>         ways of creating SMB shares besides the sharesmb property
>         (sharemgr(1M), MMC, etc) and those would continue to work as
>         they do
>         now. 
> 
> 
> Right.  The spec made the incorrect statement that filesystems and
> shares have a 1:1 relationship, which was the source of much of my
> confusion.  It would be good to explain this in more detail before
> diving into sharesmb semantics.
> 
> 
>         > and I'm not sure I understand the fixation on 'sharesmb' as
>         > the primary mechanism for communicating these semantics.
>         
>         
>         sharesmb creates a share, it was never a mechanism for
>         controlling
>         access (although many people interpreted sharesmb=off that
>         way).
>         While sharesmb=on behavior was explicitly documented,
>         sharesmb=off
>         behavior was never explained.  This proposal doesn't try to
>         make
>         sharesmb the primary mechanism for communicating CIFS
>         semantics, on
>         the contrary, it tries to document what sharesmb=off does and
>         doesn't
>         do.  The proposal is that sharesmb=off doesn't do anything and
>         that
>         it's possible to have (parts of) a filesystem exported via
>         CIFS by
>         other means.
> 
> 
> OK, that makes sense to me.  Perhaps it was some of the follow-on
> thread that confused the issue for me.  Based on that discussion and
> my own comments, it seems there is an opportunity to have a
> sharemgr(1M) option (which may or may not be exported over sharesmb)
> of something like traverse=<on|off|restricted>, with "restricted"
> being the default.
> 
> 
> I definitely wouldn't change the ZFS-level inheritance semantics of
> sharesmb, as that could break existing deployments, and makes the
> assumption that child filesystems are necessarily mounted beneath the
> parent filesystem (an especially broken concept when the parent serves
> as a container and is not explicitly mounted).  One possibility would
> be to have something like "sharesmb=root", which has the semantics
> that a share is only instantiated if the property is set locally.
>  
>         Correct, this memo is concerned only with the issue of
>         traversing
>         mounts, and while doing this touches the issue of what
>         sharesmb
>         actually means.  It's not concerned with alternative sharing
>         methods.
>         Those work as before.
> 
> 
> Please make this more explicit in the spec.
>  
>         > What happens if I connect
>         > over MMC and create a share beneath a sub-filesystem?  Will
>         the SMB server
>         > be smart enough to traverse all sub-mounts and load any
>         sub-directory shares
>         > such that they can be exported properly to administrative
>         clients?
>         
>         
>         I am not sure what you mean by properly in this context, but
>         yes, they
>         are exported.
> 
> 
> What I mean is this:
> 
> 
> 1. Create an SMB share "PARENT" at /export/parent
> 2. Create a child filesystem at /export/parent/child
> 3. Create an SMB share "CHILD" at /export/parent/child/subdir
> 
> 
> Now, when I connect to "PARENT" over MMC, am I able to create and
> manage shares within the child filesystem (i.e. the "CHILD" share)?
>  I'm not an MMC expert so I don't know how this is presented to the
> user, but if we're maintaining the view that this is a single
> filesystem, it seems like we necessarily have to be able to create and
> manage shares within sub-filesystems.  Can you elaborate on how this
> works today and what the user experience will be in the above scenario
> after your change?
>  
> Given the number of comments, I'd like to see an updated spec
> incorporating feedback thus far and extend the timer another week.
> 
> 
>         
> Thanks,
> 
> 
> - Eric
> 
> 
> -- 
> Eric Schrock, Delphix
> 
> _______________________________________________
> Developer mailing list
> Developer at lists.illumos.org
> http://lists.illumos.org/m/listinfo/developer





More information about the Developer mailing list