From ca778d5d9b095f1e89170ced4d007ededfcfb4e7 Mon Sep 17 00:00:00 2001 From: Dmitry Zogin Date: Tue, 16 Mar 2010 10:59:39 -0400 Subject: [PATCH] b=22301 lustre.lov error when backing up symlinks with extended attributes Improved logic in ll_listxattr() i=tom.wang i=dmitry.zogin --- lustre/llite/xattr.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lustre/llite/xattr.c b/lustre/llite/xattr.c index 586e120..1f261bf 100644 --- a/lustre/llite/xattr.c +++ b/lustre/llite/xattr.c @@ -400,6 +400,8 @@ ssize_t ll_listxattr(struct dentry *dentry, char *buffer, size_t size) ll_stats_ops_tally(ll_i2sbi(inode), LPROC_LL_LISTXATTR, 1); rc = ll_getxattr_common(inode, NULL, buffer, size, OBD_MD_FLXATTRLS); + if (rc < 0) + GOTO(out, rc); if (S_ISREG(inode->i_mode)) { struct ll_inode_info *lli = ll_i2info(inode); @@ -413,7 +415,7 @@ ssize_t ll_listxattr(struct dentry *dentry, char *buffer, size_t size) if (rc2 < 0) { GOTO(out, rc2 = 0); - } else { + } else if (S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode)) { const int prefix_len = sizeof(XATTR_LUSTRE_PREFIX) - 1; const size_t name_len = sizeof("lov") - 1; const size_t total_len = prefix_len + name_len + 1; -- 1.8.3.1