Whamcloud - gitweb
LU-3669 xattr: separate ACL and XATTR caches 08/7208/15
authorNathaniel Clark <nathaniel.l.clark@intel.com>
Wed, 4 Sep 2013 18:10:48 +0000 (14:10 -0400)
committerOleg Drokin <oleg.drokin@intel.com>
Tue, 10 Sep 2013 21:51:23 +0000 (21:51 +0000)
commitbb2e3278e93dba10626d87f27e0e4b415b44f015
treee0e6c50da5b1a8006fcbb19c316ef2a767a479d0
parentd4335dcd8caaf43cd442e0e91a46d8dae2fdf2e0
LU-3669 xattr: separate ACL and XATTR caches

This patch separates ACL and XATTR caches, so that
when updating an ACL only LOOKUP lock is needed and
when updating another XATTR only XATTR lock is needed.

This patch also reverts XATTR cache support for setxattr
because client performing REINT under even PR lock
can deadlock if an active server operation (like unlink)
attempts to cancel all locks, and setxattr has to wait
for it (MDC max-in-flight is 1).

This patch also drops mot_xattr_sem because there is
no use case for FLXATTRLS with locking.

This patch also takes into account that osd_xattr_list
may be changing lu_buf, so it does not assume that
the buf is unchanged after the call.

This patch disables the r/o cache if the data is
unreasonably large (larger than maximum single EA
size).

Signed-off-by: Andrew Perepechko <andrew_perepechko@xyratex.com>
Change-Id: I53f63597d9ecc85bcca0d2b35cda48762b2187bb
Signed-off-by: Nathaniel Clark <nathaniel.l.clark@intel.com>
Reviewed-on: http://review.whamcloud.com/7208
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
15 files changed:
lustre/include/lustre/lustre_idl.h
lustre/ldlm/ldlm_lock.c
lustre/llite/llite_internal.h
lustre/llite/xattr.c
lustre/llite/xattr_cache.c
lustre/mdc/mdc_internal.h
lustre/mdc/mdc_locks.c
lustre/mdc/mdc_reint.c
lustre/mdc/mdc_request.c
lustre/mdt/mdt_handler.c
lustre/mdt/mdt_internal.h
lustre/mdt/mdt_lib.c
lustre/mdt/mdt_xattr.c
lustre/ptlrpc/layout.c
lustre/tests/sanity.sh