- if (strncmp(name, XATTR_TRUSTED_PREFIX, 8) == 0 &&
- strcmp(name + 8, "lov") == 0) {
- struct lov_user_md *lump;
- struct lov_mds_md *lmm = NULL;
- struct ptlrpc_request *request = NULL;
- int rc = 0, lmmsize;
-
- if (S_ISREG(inode->i_mode)) {
- rc = ll_lov_getstripe_ea_info(dentry->d_parent->d_inode,
- dentry->d_name.name, &lmm,
- &lmmsize, &request);
- } else if (S_ISDIR(inode->i_mode)) {
- rc = ll_dir_getstripe(inode, &lmm, &lmmsize, &request);
- }
-
- if (rc < 0)
- GOTO(out, rc);
- if (size == 0)
- GOTO(out, rc = lmmsize);
-
- if (size < lmmsize) {
- CERROR("server bug: replied size %u > %u\n",
- lmmsize, (int)size);
- GOTO(out, rc = -ERANGE);
- }
-
- lump = (struct lov_user_md *)buffer;
- memcpy(lump, lmm, lmmsize);
-
- rc = lmmsize;
+ if ((strncmp(name, XATTR_TRUSTED_PREFIX,
+ sizeof(XATTR_TRUSTED_PREFIX) - 1) == 0 &&
+ strcmp(name + sizeof(XATTR_TRUSTED_PREFIX) - 1, "lov") == 0) ||
+ (strncmp(name, XATTR_LUSTRE_PREFIX,
+ sizeof(XATTR_LUSTRE_PREFIX) - 1) == 0 &&
+ strcmp(name + sizeof(XATTR_LUSTRE_PREFIX) - 1, "lov") == 0)) {
+ struct lov_user_md *lump;
+ struct lov_mds_md *lmm = NULL;
+ struct ptlrpc_request *request = NULL;
+ int rc = 0, lmmsize = 0;
+
+ if (S_ISREG(inode->i_mode)) {
+ rc = ll_lov_getstripe_ea_info(dentry->d_parent->d_inode,
+ dentry->d_name.name, &lmm,
+ &lmmsize, &request);
+ } else if (S_ISDIR(inode->i_mode)) {
+ rc = ll_dir_getstripe(inode, &lmm, &lmmsize, &request);
+ } else {
+ rc = -ENODATA;
+ }
+
+ if (rc < 0)
+ GOTO(out, rc);
+ if (size == 0)
+ GOTO(out, rc = lmmsize);
+
+ if (size < lmmsize) {
+ CERROR("server bug: replied size %d > %d for %s (%s)\n",
+ lmmsize, (int)size, dentry->d_name.name, name);
+ GOTO(out, rc = -ERANGE);
+ }
+
+ lump = (struct lov_user_md *)buffer;
+ memcpy(lump, lmm, lmmsize);
+
+ rc = lmmsize;