Yangwenfang, On 01/29/2015 12:42 AM, yangwenfang wrote: > On 2015/1/27 15:08, Srinivas Eeda wrote: >> Hi Yangwenfang, >> >> thank you very much for initiating this RFC :). This feature is long due for >> OCFS2 and we are also interested in implementing this feature. >> Wengang(cc'ed) has been looking into analysing and giving an attempt to >> implement it. We haven't looked at splitting and merging the range locking >> yet, but looked at having lock fairness and range locking. Wengang has done >> some of the dlm changes to see how it can be done but other changes are >> still work in progress. We will email more details in coming few days. >> >> Since you are also looking into it, it would be great if we can collaborate >> work on this feature. Can you please share more info on the demo code you >> mentioned ? Like what it does and how much work has been done on this ? >> > Hi, > About 6k lines of code was modified including dlmglue and dlm in our demo. > > code modification: > 1.read/write IO: get the range(start, end) and call ocfs2_range_lock. > 2.dlmglue: modify key data struct: each inode has one ocfs2_lock_res > including many range locks which have different range. > determine the existance of conflicts betwen multiple threads > within the node. > manage the cache of range lock to support unlock-delay. > 3.dlm: determine the existance of conflicts betwen multiple nodes. > add splitting and merging the range locking. > 4.lib: interval tree. >> One of the thing we considered was making the rw lock itself support range >> locking, which is a different approach from what you mentioned. Is there any >> reason why rw lock cannot be used and we needa new ip_range_lock_lockres ? >> > RW lock can be used, but it is complicated to add the feature to rw_lock > because RW lock is also applicated in read/write/truncate. > Byte range lock is only beneficial for update write, so I just modify write > IO to finish the demo to get performance results as soon as possible. > I think ocfs2_rw_lock(pr) + ocfs2_range_lock(start, end, ex) are equivalent > to ocfs2_rw_lock(ex);am I rigth?
Okay, let me ask this question in another way: What is the purpose of ocfs2_rw_lock(pr) in *this* scenario, where you are using ocfs2_range_lock in conjunction with ocfs2_rw_lock. What is ocfs2_rw_lock guarding? -- Goldwyn _______________________________________________ Ocfs2-devel mailing list Ocfs2-devel@oss.oracle.com https://oss.oracle.com/mailman/listinfo/ocfs2-devel