<div dir="ltr">Thank you Phil.  Yes, I replied earlier this morning to this thread confirming that it is indeed zfs using the wrong flag (FMODE_EXCL) in newer kernels (post 2.6.32) when opening the drbd resource (or any block device for that matter).  We didn&#39;t know this until late Friday evening, so I wasn&#39;t aware it was a zfs issue before starting this thread.  We are going to pull in the fix from zfs 0.8.x to make this work with auto-promote.  Thanks for your time and replies.<div><br></div><div>Thanks,</div><div>-Doug</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Nov 18, 2019 at 4:27 PM Philipp Reisner &lt;<a href="mailto:philipp.reisner@linbit.com">philipp.reisner@linbit.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi,<br>
<br>
from top of my head ZFS is special in that sense that it opens the backing<br>
device only for a short amount of time. <br>
<br>
I mean it does the eqivalent of an open(2) call on the backend block device<br>
and than very soon after that does the equivalent of a close(2).<br>
<br>
All other linux file systems open(2) it during mount and keep it<br>
open until unmount. Which seems pretty logical.<br>
<br>
DRBD&#39;s auto-promote relies on open/close calls. In other words, if you<br>
put ZFS on top of DRBD, do not use auto-promote. Use manual promote.<br>
<br>
It is nothing we can fix on DRBD&#39;s side. This should be fixed in ZFS.<br>
<br>
best regards,<br>
 Phil<br>
<br>
<br>
Am Mittwoch, 13. November 2019, 14:08:37 CST schrieb Doug Cahill:<br>
&gt; I&#39;m configuring a two node setup with drbd 9.0.20-1 on CentOS 7<br>
&gt; (3.10.0-957.1.3.el7.x86_64) with a single resource backed by an SSDs.  I&#39;ve<br>
&gt; explicitly enabled auto-promote in my resource configuration to use this<br>
&gt; feature.<br>
&gt; <br>
&gt; The drbd device is being used in a single-primary configuration as a zpool<br>
&gt; SLOG device.  The zpool is only ever imported on one node at a time and the<br>
&gt; import is successful during cluster failover events between nodes.  I<br>
&gt; confirmed through zdb that the zpool includes the configured drbd device<br>
&gt; path.<br>
&gt; <br>
&gt; My concern is that the drbdadm status output shows the Role of the drbd<br>
&gt; resource as &quot;Secondary&quot; on both sides.  The documentations reads that the<br>
&gt; drbd resource will be auto promoted to primary when it is opened for<br>
&gt; writing.<br>
&gt; <br>
&gt; drbdadm status<br>
&gt; r0 role:Secondary<br>
&gt;   disk:UpToDate<br>
&gt;   dccdx0 role:Secondary<br>
&gt;     peer-disk:UpToDate<br>
&gt; <br>
&gt; My device should be opened for writing when the zpool is imported.  I&#39;ve<br>
&gt; even tested writing to the pool with &quot;dd oflag=sync&quot; to force sync writes<br>
&gt; to the SLOG which is the drbd resource.  The drbd device never changes the<br>
&gt; reported state but it appears to be writable.<br>
&gt; <br>
&gt; Have I misconfigured my drbd resource for an auto-promote configuration<br>
&gt; and/or is my use case to obscure for auto-promote to detect the device is<br>
&gt; being written to when used in a zpool?<br>
&gt; <br>
&gt; =========== /etc/drbd.d/r0.res<br>
&gt; resource r0 {<br>
&gt;     disk &quot;/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:2:0-part1&quot;;<br>
&gt;     meta-disk internal;<br>
&gt;     device minor 0;<br>
&gt; <br>
&gt;     on dccdx0 {<br>
&gt;         address <a href="http://192.0.2.10:7000" rel="noreferrer" target="_blank">192.0.2.10:7000</a>;<br>
&gt;     }<br>
&gt; <br>
&gt;     on dccdx1 {<br>
&gt;         address <a href="http://192.0.2.20:7000" rel="noreferrer" target="_blank">192.0.2.20:7000</a>;<br>
&gt;     }<br>
&gt; <br>
&gt;     disk {<br>
&gt;         read-balancing when-congested-remote;<br>
&gt;         no-disk-flushes;<br>
&gt;         no-md-flushes;<br>
&gt;         # al-updates no; # turn off al-tracking; requires full sync on crash<br>
&gt; c-fill-target 4M;<br>
&gt;         resync-rate 500M;<br>
&gt;         c-max-rate 1000M;<br>
&gt;         c-min-rate 700M;<br>
&gt;     }<br>
&gt; <br>
&gt;     net {<br>
&gt;         sndbuf-size 10M;<br>
&gt;         rcvbuf-size 10M;<br>
&gt;         max-buffers 20000;<br>
&gt;         fencing resource-and-stonith;<br>
&gt;     }<br>
&gt; }<br>
&gt; <br>
&gt; -Doug<br>
<br>
<br>
<br>
<br>
</blockquote></div>