On 2015/1/29 8:05, Goldwyn Rodrigues wrote:
> 
> Hi Yangwenfang,
> 
> I appreciate the effort in this regard.
> 
> On 01/26/2015 06:28 AM, yangwenfang wrote:
>> What:
>> Byte range lock is applied to lock a region of a file to accelerate
>> reading/writing concurrently.

>> Each lock resource deploys an interval tree to manage the range, which
>> supports basic operations like add, delete, insert, find, split and merge.
>> The most important issue is to determine the existance of conflicts
>> among the ranges. Conflict-free ranges of the same file can be accessed
>> concurrently. In the contrary, nodes must wait for the release of a
>> conflicted lock before accessing the range of file.
>>
>> Byte range lock supports split and merge rules: for same level, larger
>> scope; different level, write > read(If a node keeps EX lock with
>> range(start,end), then it has PR range lock(start,end)).
>> For example:
>> (1) merge: N1 keeps range lock (0,9)PR and (5,19)PR, the lock is merged into
>> (0,19) PR;
>> (2) merge: N1 keeps range lock (0,9)PR and (5,19)EX, the merged lock should
>> become(0,19) PR, (5,19)EX;
>> (3) split: N1 keeps range lock (0,9)PR, N2 tries to lock(0,5) PR, N1 should
>> split the lock and keep (6,9)PR.
> 
> What is the purpose of doing this kind of merge/split? I assume this will be 
> required in case of multiple processes from the same node read/write to the 
> file. Would it not be simpler to not merge or split and keep separate 
> instances in lock resources? This way you would have to do relatively lesser 
> book keeping with respect to comparisons.
> 
Hi,
Realization of this kind of merge/split is for cache of range lock to support 
unlock-delay.
For example(the granularity is block size)
1.Node 1 writes to 0-9, it will keep the range lock(0,9,EX) if no other node 
write the same range of file.
2.Node 1 writes to 10-19, then the range lock will be merged into (0,19,EX). if 
not, the number of locks will be more and more.
3.Node 1 writes to 5-10, then no need to dlmlock from master.
3.Node 2 writes to 5-10, conflict with Node 1, so Node 1 will drop (5,10), the 
range lock is splitted into (0,4) and (11,19).

> Are these numbers in your pseudocode byte ranges? If yes, how do you propose 
> multiple writes which lie within a block_size/cluster_size range?
> 
No, the granularity of these numbers is block size or PAGE_SIZE. The 
granularity is smaller, the conflict is more. Actually, we use 1M in our test.

thanks,
yangwenfang



_______________________________________________
Ocfs2-devel mailing list
Ocfs2-devel@oss.oracle.com
https://oss.oracle.com/mailman/listinfo/ocfs2-devel

Reply via email to