<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jul 20, 2017 at 9:21 PM, Niels de Vos <span dir="ltr">&lt;<a href="mailto:ndevos@redhat.com" target="_blank">ndevos@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail-HOEnZb"><div class="gmail-h5">On Thu, Jul 20, 2017 at 08:25:23PM +0530, Amar Tumballi wrote:<br>
&gt; On Thu, Jul 20, 2017 at 7:36 PM, Niels de Vos &lt;<a href="mailto:ndevos@redhat.com">ndevos@redhat.com</a>&gt; wrote:<br>
&gt;<br>
&gt; &gt; On Thu, Jul 20, 2017 at 07:11:29PM +0530, Amar Tumballi wrote:<br>
&gt; &gt; &gt; Hi,<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; I was working on subdir mount for fuse clients [1], and was able to<br>
&gt; &gt; handle<br>
&gt; &gt; &gt; pieces just fine in filesystem part of gluster. [2]<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; What is pending is, how will we handle the authentication options for<br>
&gt; &gt; this<br>
&gt; &gt; &gt; at each subdir level?<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; I propose to keep the current option and extending it to handle new<br>
&gt; &gt; feature<br>
&gt; &gt; &gt; with proper backward compatibility.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Currently, the option auth.allow (and auth.reject) are of the type<br>
&gt; &gt; &gt; GF_OPTION_TYPE_INTERNET_<wbr>ADDRESS_LIST. Which expects valid internet<br>
&gt; &gt; &gt; addresses with comma separation.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; For example the current option looks likes this:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;  &#39;option auth.addr.brick-name.allow *&#39; OR &#39;option<br>
&gt; &gt; &gt; auth.addr.brick-name.allow &quot;192.168.*.* ,10.10.*.*&quot;&#39;.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; In future, it may look like:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; `option auth.addr.brick-name.allow &quot;10.0.1.13;192.168.1.*<br>
&gt; &gt; &gt; =/subdir1;192.168.10.* ,192.168.11.104 =/subdir2&quot;`<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; so each entries will be separated by &#39;;&#39;. And in each entry, first part<br>
&gt; &gt; (&quot;<br>
&gt; &gt; &gt; =&quot;) is address list and second part is directory. If directory is empty,<br>
&gt; &gt; &gt; its assumed as &#39;/&#39;. (Handles the backward compatibility). And if there is<br>
&gt; &gt; &gt; no entry for a $subdir here, that $subdir won&#39;t be mountable.<br>
&gt; &gt;<br>
&gt; &gt; IIRC Gluster/NFS allows you to set permissions for subdir mounting with<br>
&gt; &gt; a format like this:<br>
&gt; &gt;<br>
&gt; &gt;   /subdir/next/dir(IP,IP-range,.<wbr>..) /subdir2(IP)<br>
&gt; &gt;<br>
&gt; &gt; This is good, but would currently break the compatibility with existing<br>
&gt; auth.allow of gluster.<br>
&gt;<br>
&gt; Backward compatibility was the main reason for me to consider the above<br>
&gt; approach.<br>
&gt;<br>
&gt; It would be best to use the existing format if we can to prevent<br>
&gt; &gt; confusion among our users.<br>
&gt; &gt;<br>
&gt; &gt; Currently existing gluster&#39;s option is not same as NFS in my opinion. How<br>
&gt; do you want to handle it?<br>
<br>
</div></div>I&#39;m wondering if the current format that us used for NFS is not<br>
sufficient? Some defaults and quircks that would apply:<br>
<br></blockquote><div><br></div><div>Should be sufficient. Earlier I was not sure of which option you were talking.<br><br></div><div>For everyone&#39;s clarity, I assume Niels is talking about &#39;nfs3.*.export-dir&#39; option in xlators/nfs/server/src/nfs.c.<br><br></div><div>It is of the form:  /foo(<a href="http://192.168.1.0/24|host1|10.1.1.8">192.168.1.0/24|host1|10.1.1.8</a>),/host2.<br><br>&lt;dir&gt;[(hostspec[|hostspec|...])][,...]<br><br></div><div>But point to note here, it is of form GF_OPTION_STR, which means there won&#39;t be any validation for this key, unline current gluster&#39;s server-protocol auth.allow, which check for valid_hostname during gluster volume set itself.<br><br></div><div>I am fine to support this format for auth-allow too, by handling current format as special case for backward compatibility. I will give others time till Monday before confirming this and going ahead with implementation. Suggest other valid options and reason if this is not enough.<br><br></div><div>Regards,<br></div><div>Amar<br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
 - if an entry does not start with &quot;/&quot;, assume it is an IP/host/... and<br>
   apply the restriction to the whole volume<br>
 - separator between entries can be either &quot; &quot; or &quot;,&quot; or a combination<br>
<br>
It would be good not to break any of the current accepted formats, and<br>
make them equal if we can.<br>
<br>
Do you see a problem with this that I might have missed?<br>
<span class="gmail-HOEnZb"><font color="#888888">Niels<br>
</font></span><div class="gmail-HOEnZb"><div class="gmail-h5"><br>
<br>
&gt;<br>
&gt; -Amar<br>
&gt;<br>
&gt;<br>
&gt; &gt; Thanks,<br>
&gt; &gt; Niels<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; (The above format is handled properly already at [2] in addr.c, the<br>
&gt; &gt; pending<br>
&gt; &gt; &gt; thing is to handle the option properly in options.c&#39;s validate).<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; [1] - <a href="https://github.com/gluster/glusterfs/issues/175" rel="noreferrer" target="_blank">https://github.com/gluster/<wbr>glusterfs/issues/175</a><br>
&gt; &gt; &gt; [2] - <a href="https://review.gluster.org/17141" rel="noreferrer" target="_blank">https://review.gluster.org/<wbr>17141</a><br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; If everyone agrees to this, I guess we can pull it off before absolute<br>
&gt; &gt; &gt; feature freeze date for 3.12 branch.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Let me know the feedback. (I am updating the same content in github, so<br>
&gt; &gt; &gt; feel free to comment there too).<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; NOTE: I thought of using &#39;:&#39; (colon) as field separator between addr_list<br>
&gt; &gt; &gt; and subdir entry, but with IPv6 &#39;:&#39; is valid character in string. Hence<br>
&gt; &gt; &gt; using &#39; =&#39;.<br>
&gt; &gt; &gt; --<br>
&gt; &gt; &gt; Amar Tumballi (amarts)<br>
&gt; &gt;<br>
&gt; &gt; &gt; ______________________________<wbr>_________________<br>
&gt; &gt; &gt; Gluster-devel mailing list<br>
&gt; &gt; &gt; <a href="mailto:Gluster-devel@gluster.org">Gluster-devel@gluster.org</a><br>
&gt; &gt; &gt; <a href="http://lists.gluster.org/mailman/listinfo/gluster-devel" rel="noreferrer" target="_blank">http://lists.gluster.org/<wbr>mailman/listinfo/gluster-devel</a><br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Amar Tumballi (amarts)<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>Amar Tumballi (amarts)<br></div></div></div></div></div>
</div></div>