[Lustre-discuss] Question on path name resolution in Lustre

Oleg Drokin green at whamcloud.com
Thu May 5 08:56:11 PDT 2011


Hello!

On May 5, 2011, at 2:37 AM, vilobh meshram wrote:
> I have noticed that for file or directory kind of operation in Lustre, the Lock Manager grabs an EX (Exclusive lock) on the parent directory and then creates a directory or file inside it.Is there a specific reason behind this logic or implementation.
> 
> e.g. : If we want to create foo.txt in /d1/d2/d3/d4/d5/foo.txt
> 
> We grab the lock on /d1
> then we grab the lock on /d1/d2
> then we grab the lock on /d1/d2/d3
> then we grab the lock on /d1/d2/d3/d4
> then we grab the lock on /d1/d2/d3/d4/d5
> then we create the file.
> This is what I have seen in logs.

In fact the EX lock is taken only on d5 in this scenario, and then only on "UPDATE" bit.

> Is this the correct method followed during first time file access or file creation ? 
> 
> If yes then how is the performance when the directory depth is very high ?

If client is unaware of the tree (ie. it is not yet cached on the client),
then there is no way but to traverse the tree first.
Of course it is slower if we do it one component per RPC instead of
just whole path in one RPC, but it has other advantages like checking local
for mountpoints first and not breaking Linux VFS assumptions too badly.

Bye,
    Oleg


More information about the lustre-discuss mailing list