[Gluster-devel] Adding ALUA support for Gluster-Block

Soumya Koduri skoduri at redhat.com
Mon Oct 29 17:36:56 UTC 2018



On 10/29/18 4:15 PM, Susant Palai wrote:
> 
>     I would be interested to know if you can use leases/delegations to solve
>     the issue. If you can not, can leases/delegations be extended instead of
>     proposing an new API?
> 
> 
>  From what I understand Block-D keeps all the file open bfore beginning 
> of the session (exporting file as block devices). Which I guess won't 
> work with lease, since
> lease I guess(please correct me if wrong) breaks the existing lease on  
> an open request. Certainly, with selfheal daemon the lease will be 
> released. Hence, mandatory lock fits here IMO.

Right. Leases are mostly useful when there is data caching needed for a 
single write or multiple-readers case. Here IIUC, the issue being solved 
is to avoid data corruption post failover/failback of the switch.
> 
> @Kalever, Prasanna <mailto:pkalever at redhat.com> Please give your 
> feedback here.
> 
>      From theory, the high-available NFS-Ganesha and Samba services should
>     have solved similar problems already.
> 
> 
> From what I understand the multipath layer does not have any control 
> over restarting tcmu-runner on Gluster side (If that is how NFS_Ganesha 
> and Samba provides blacklist for it's clients).
> The targetcli does certain tasks only on failover switch which would be 
> like taking mandatory lock, open a session as mentioned in the design 
> doc. Hence, no control over data cached at Gluster-client layer to be 
> replayed in the event of a disconnection.

NFS servers solve this by putting servers into grace and allowing 
clients to reclaim their lost state post failover and failback. 
Internally since NFS-ganesha stacks on top of gfapi, it as well would 
need reclaim lock support in gfapi to acquire lost state from another 
NFS server (but certainly not the way current implementation is being 
done [1]). I had left the comments in the patch. The current approach 
shall make all gfapi applications vulnerable and as Amar mentioned, it 
could lead to potential CVE.

To solve it, gluster-block could agree upon some common lk-owner (unique 
to that initiator) and that way gfapi need not fetch it and can prevent 
other non-trusted clients from acquiring that lock by force.

Coming to other problem quoted in the design doc - replaying fops by 
gfapi clientA (nodeA) after nodeB relinquishes lock, I have couple of 
questions regarding the same on who shall be responsible for replaying 
those fops. - commented on the doc

tcmu-runner->gfapi_xlator->...->protocol/client

Once gfapi_client/nodeA disconnects and reconnects, and if tcmu-runner 
replays the fop, wouldn't it need to reopen the fd as there was network 
disconnect and old fd had gone stale. If it reopens fd, it will get new 
generation no./epoch time and will allow it replay old pending fops right?


Thanks,
Soumya


[1] https://review.gluster.org/#/c/glusterfs/+/21457/


More information about the Gluster-devel mailing list