<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Aug 3, 2017 at 12:56 PM, Kaushal M <span dir="ltr">&lt;<a href="mailto:kshlmster@gmail.com" target="_blank">kshlmster@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Thu, Aug 3, 2017 at 2:14 AM, Niels de Vos &lt;<a href="mailto:ndevos@redhat.com">ndevos@redhat.com</a>&gt; wrote:<br>
</span><span class="">&gt; On Wed, Aug 02, 2017 at 05:03:35PM +0530, Prashanth Pai wrote:<br>
&gt;&gt; Hi all,<br>
&gt;&gt;<br>
&gt;&gt; The ongoing work on glusterd2 necessitates following non-breaking and<br>
&gt;&gt; non-exhaustive list of changes to glusterfs source code:<br>
&gt;&gt;<br>
&gt;&gt; Port management<br>
&gt;&gt; - Remove hard-coding of glusterd&#39;s port as 24007 in clients and elsewhere.<br>
&gt;&gt;   Glusterd2 can be configured to listen to clients on any port (still<br>
&gt;&gt; defaults to<br>
&gt;&gt;   24007 though)<br>
&gt;&gt; - Let the bricks and daemons choose any available port and if needed report<br>
&gt;&gt;   the port used to glusterd during the &quot;sign in&quot; process. Prasanna has a<br>
&gt;&gt; patch<br>
&gt;&gt;   to do this.<br>
&gt;&gt; - Glusterd &lt;--&gt; brick (or any other local daemon) communication should<br>
&gt;&gt;   always happen over Unix Domain Socket. Currently glusterd and brick<br>
&gt;&gt;   process communicates over UDS and also port 24007. This will allow us<br>
&gt;&gt;   to set better authentication and rules for port 24007 as it shall only be<br>
&gt;&gt; used<br>
&gt;&gt;   by clients.<br>
&gt;<br>
&gt; I prefer this last point to be configurable. At least for debugging we<br>
&gt; should be able to capture network traces and display the communication<br>
&gt; in Wireshark. Defaulting to UNIX Domain Sockets is fine though.<br>
<br>
</span>This is the communication between GD2 and bricks, of which there is<br>
not a lot happening, and not much to capture.<br>
But I agree, it will be nice to have this configurable.<br>
<span class=""><br></span></blockquote><div><br></div><div>Could glusterd start attempting port binding at 24007 and progress on to higher port numbers until successful and register the bound port number with rpcbind ? This way the setup will be auto-configurable and admins need not scratch their heads to decide upon one port number. Gluster clients could always talk to rpcbind on the nodes to get glusterd service port whenever a reconnect is required.<br> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
&gt;<br>
&gt;<br>
&gt;&gt; Changes to xlator options<br>
&gt;&gt; - Xlator authors do not have to modify glusterd2 code to expose new xlator<br>
&gt;&gt;   options. IOW, glusterd2 will not contain the &quot;glusterd_volopt_map&quot; table.<br>
&gt;&gt;   Most of its fields will be moved to the xlator itself. Glusterd2 can load<br>
&gt;&gt;   xlator&#39;s shared object and read it&#39;s volume_options table. This also means<br>
&gt;&gt;   xlators have to adhere to some naming conventions for options.<br>
&gt;&gt; - Add following additional fields (names are indicative) to volume_option_t:<br>
&gt;&gt;     - Tag: This is to enable users to list only options having a certain<br>
&gt;&gt; tag.<br>
&gt;&gt;              IOW, it allows us to filter &quot;volume set help&quot; like output.<br>
&gt;&gt;              Example of tags: debug, perf, network etc.<br>
&gt;&gt;     - Opversion: The minimum (or a range) op-version required by the xlator.<br>
&gt;&gt;     - Configurable: A bool to indicate whether this option is<br>
&gt;&gt; user-configurable.<br>
&gt;&gt;                           This may also be clubbed with DOC/NO_DOC<br>
&gt;&gt; functionality.<br>
&gt;<br>
&gt; This is something I have been thinking about to do as well. libgfapi<br>
&gt; users would like to list all the valid options before mounting (and<br>
&gt; receiving the .vol file) is done. Similar to how many mount options are<br>
&gt; set over FUSE, the options should be available through libgfapi.<br>
&gt; Hardcoding the options is just wrong, inspecting the available xlators<br>
&gt; (.so files) seems to make more sense. Each option would have to describe<br>
&gt; if it can be client-side so that we can apply some resonable filters by<br>
&gt; default.<br>
&gt;<br>
<br>
</span>Looks like we&#39;d missed this. All the fields available in the vol opt<br>
map will move to xlator option tables, including the client flag.<br>
<span class=""><br>
&gt; A GitHub Issue with this feature request is at<br>
&gt; <a href="https://github.com/gluster/glusterfs/issues/263" rel="noreferrer" target="_blank">https://github.com/gluster/<wbr>glusterfs/issues/263</a>. I appreciate additional<br>
&gt; comments and ideas about it :-)<br>
&gt;<br>
<br>
</span>We need to open an issue for our requested changes are well, which<br>
will be a superset of this request. We&#39;ll make sure to mention this<br>
feature request in it.<br>
Or we could use a single issue as a tracker for all the xlator option<br>
changes, in which case I&#39;d prefer we update the existing issue.<br>
<span class=""><br>
&gt;<br>
&gt;&gt; - Xlators like AFR, changelog require non-static information such as brick<br>
&gt;&gt; path<br>
&gt;&gt;   to be present in it&#39;s options in the volfile. Currently, xlator authors<br>
&gt;&gt; have<br>
&gt;&gt;   to modify glusterd code to get it.<br>
&gt;&gt;   This can rather be indicated by the xlator itself using<br>
&gt;&gt; templates/placehoders.<br>
&gt;&gt;   For example, &quot;changelog-dir&quot; can be set in xlator&#39;s option as as<br>
&gt;&gt;   &lt;&lt;brick-path&gt;&gt;/.glusterfs/<wbr>changelogs and then glusterd2 will ensure to<br>
&gt;&gt; replace<br>
&gt;&gt;   &lt;&lt;brick-path&gt;&gt; with actual path during volfile generation.<br>
&gt;<br>
&gt; I suggest to stick with whatever is a common syntax for other<br>
&gt; configuration files that uses placeholders. Maybe just {variable} or<br>
&gt; $VARIABLE, the &lt;&lt;variable&gt;&gt; looks a bit awkward.<br>
<br>
</span>The exact syntax for these variables hasn&#39;t been decided yet. But I&#39;m<br>
leaning towards &#39;{{ variable }}&#39; used in the Go template package,<br>
which is what we&#39;ll mostly end up using to implement this<br>
functionality.<br>
<div class="HOEnZb"><div class="h5"><br>
&gt;<br>
&gt;<br>
&gt;&gt; We&#39;d like to hear your thoughts, suggestions and comments to these proposed<br>
&gt;&gt; changes.<br>
&gt;<br>
&gt; Thanks for sharing!<br>
&gt; Niels<br>
&gt; ______________________________<wbr>_________________<br>
&gt; Gluster-devel mailing list<br>
&gt; <a href="mailto:Gluster-devel@gluster.org">Gluster-devel@gluster.org</a><br>
&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>
______________________________<wbr>_________________<br>
Gluster-devel mailing list<br>
<a href="mailto:Gluster-devel@gluster.org">Gluster-devel@gluster.org</a><br>
<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>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr">Milind<br><br></div></div></div></div>
</div></div>