[Lustre-devel] some thoughts on COS

Peter Braam Peter.Braam at Sun.COM
Sat Jun 7 07:00:40 PDT 2008


Somehow making this work seems very attractive.  I really think that
clarifying the definitions further might reveal a solution.

Peter


On 6/5/08 5:27 AM, "Alex Zhuravlev" <Alex.Zhuravlev at Sun.COM> wrote:

> Hi,
> 
> I think it could be great if we can use LDLM for COS. at the very first view
> it looks possible:
> 1) each server lock is tagged with client unique id (uuid/export addr/etc)
> 2) mds registers own blocking AST function
> 3) locks to be used rep-ack's aren't released upon ACK, only upon commit
> 4) whenever conflict is observed by LDLM at enqueue time, MDS's blocking AST
>     function is called and depending on whetner conflicting locks are taken on
>     behalf same or different clients, the function issues sync causing commit
>     and old lock to be released later
> 
> but one use case isn't that obvious. it's OK when first lock L1 was from
> client
> C1 with PW mode and new lock is also from C1/PW. but then we have a situation
> with same client, but locks are PW then PR:
> 1) we wouldn't want to sync just because client does mkdir a; touch a
> 2) thus we have to grant PR lock (so, first problem - sometimes PW and PR
> doesn't
>     conflict?)
> 3) if we cancel PW to grant PR, then we'd have to make this PR conflicting
> with
>     any PR coming from different client?
> 4) changing PR to PW in order to inherit state? (client side doesn't expect
> such
>     locks_
> 
> all of this doesn't sound like a good solution, IMHO. at least it'd require
> serious
> changes in LDLM while we're talking about 1.6/1.8 ... so we need another way.
> 
> probably we could re-use VBR as each inode change goes with new persistent
> version
> and version is numerically equal to transno, comparing inode's version with
> last
> committed transno we can learn whether the inode is committed?
> 
> next problem is to learn source of change, i.e. client. in the worst case all
> changes
> are from different clients, thus every change means sync. but if we *cache*
> source
> information we probably can avoid majority of syncs. IOW, we don't need to
> track
> source all the time, it should be enough if we have this information most of
> time.
> so, storing it in in-core inode is good enough probably. following this way we
> don't
> need to care about inode's lifetime.
> 
> thanks, Alex
> 
> _______________________________________________
> Lustre-devel mailing list
> Lustre-devel at lists.lustre.org
> http://lists.lustre.org/mailman/listinfo/lustre-devel





More information about the lustre-devel mailing list