[LU-2869] extended attribute cache for Lustre Created: 26/Feb/13  Updated: 28/Oct/23  Resolved: 29/Jul/13

Status: Resolved
Project: Lustre
Component/s: None
Affects Version/s: None
Fix Version/s: Lustre 2.5.0

Type: Improvement Priority: Minor
Reporter: Andrew Perepechko Assignee: James Nunez (Inactive)
Resolution: Fixed Votes: 0
Labels: patch, xattr

Attachments: PDF File XATTRcacheperformance.pdf    
Issue Links:
Related
is related to LU-3795 replay-single test_58b test_58c: trus... Resolved
is related to LU-3670 some trusted xattrs are not coherent ... Resolved
is related to LU-3669 (mdt_xattr.c:178:mdt_getxattr()) ASSE... Closed
is related to LU-549 Add xattr list/value cache on client Closed
is related to LU-3583 LDLM support for atomic match_or_enqu... Open
is related to LU-10276 Revise what MDS_INODELOCK_XATTR protects Open
is related to LU-17238 negative xattr cache on client Open
Rank (Obsolete): 6935

 Description   

The patch implements an extended attribute cache for
a Lustre client. It is organized as a write-through
cache: reads are performed from cache, updates are sent
synchronously to the MDS. An additional inode bit
is added to protect the cache.

The patch itself will be uploaded shortly.



 Comments   
Comment by Andrew Perepechko [ 26/Feb/13 ]

http://review.whamcloud.com/#change,5537

Comment by Andrew Perepechko [ 26/Feb/13 ]

xattr cache performance for the simplest Lustre configuration (2 nodes), read case is faster for the cached version as compared with the uncached by 4.5 times

Comment by Nathan Rutman [ 27/Feb/13 ]

Xyratex MRP-57

Comment by jacques-charles lafoucriere [ 28/Feb/13 ]

Nathan the xyratex url is broken (server not found error), can you put a valid/public one ?

Comment by Nathan Rutman [ 28/Feb/13 ]

Sorry JC, the Xyratex tickets are really only useful for Xyratex engineers. We have posted the patch in the first comment above.

Comment by Andrew Perepechko [ 21/May/13 ]

Will this patch be inspected? It's almost three months from the patch upload. I had to rebase to a recent version.

Comment by James Nunez (Inactive) [ 21/May/13 ]

The master branch should open for new features soon.

Comment by Andrew Perepechko [ 21/May/13 ]

Thanks, James!

Comment by James Nunez (Inactive) [ 29/Jul/13 ]

Landed for 2.5

Comment by Alex Zhuravlev [ 05/Aug/13 ]

can you explain why mot_xattr_sem is needed, please?

Comment by Andrew Perepechko [ 05/Aug/13 ]

The semaphore was added to protect the case when the client does not take the XATTR lock and requests FLXATTRALL.
FLXATTRALL is implemented as getting the list and then getting the values, so setting/removing an xattr in the middle
can lead to failure. Currently, there is no FLXATTRLS user that does not take the XATTR lock, so there is no use
case for the semaphore being contended.

Comment by Alex Zhuravlev [ 05/Aug/13 ]

well, if this failure is -ENOENT, then it should be easy to check and skip? on the otherhand we carry this structure for every object in MDT cache. a bit expensive for such a case?

Comment by Andrew Perepechko [ 05/Aug/13 ]

Besides -ENOENT, due to races an FLXATTRLS user can get an inconsistent list of attribute names and values, which the object never had from another client viewpoint. But since there is no use case for that, the locking can be simply dropped.

Comment by Alex Zhuravlev [ 05/Aug/13 ]

not sure what kind of inconsistency FLXATTRLS can observe? any plans to make a patch to drop it?

Comment by Andrew Perepechko [ 05/Aug/13 ]

not sure what kind of inconsistency FLXATTRLS can observe?

Like, setxattr "a=x", setxattr "b=y". An unlocked FLXATTRLS can pack "b=y" update without packing "a=x" because of update races.

any plans to make a patch to drop it?

I'll update http://review.whamcloud.com/#/c/7208/ with this fix in a while.

Comment by Alex Zhuravlev [ 05/Aug/13 ]

great. thanks!

Generated at Sat Feb 10 01:28:55 UTC 2024 using Jira 9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c.