[LU-3713] Failure on test suite sanity test_17k: get_xattr_names: llistxattr failed Created: 06/Aug/13  Updated: 03/Sep/13  Resolved: 03/Sep/13

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

Type: Bug Priority: Blocker
Reporter: Maloo Assignee: Hongchao Zhang
Resolution: Duplicate Votes: 0
Labels: HB, patch, revzfs, zfs
Environment:

server and client: lustre-master build #1592


Issue Links:
Duplicate
is duplicated by LU-3730 sanity-hsm test_3 Error: 'could not c... Resolved
is duplicated by LU-3792 Failure conf-sanity, test_61, error: ... Closed
Related
is related to LU-3669 (mdt_xattr.c:178:mdt_getxattr()) ASSE... Closed
is related to LU-3795 replay-single test_58b test_58c: trus... Resolved
Severity: 3
Rank (Obsolete): 9563

 Description   

This issue was created by maloo for sarah <sarah@whamcloud.com>

This issue relates to the following test suite run: http://maloo.whamcloud.com/test_sets/06ab5688-fb67-11e2-8c6e-52540035b04c.

The sub-test test_17k failed with the following error:

rsync failed with xattrs enabled

test log:

== sanity test 17k: symlinks: rsync with xattrs enabled =========================== 15:23:56 (1375309436)
sending incremental file list
rsync: get_xattr_names: llistxattr(".",1024) failed: No data available (61)

sent 18 bytes  received 12 bytes  60.00 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]
 sanity test_17k: @@@@@@ FAIL: rsync failed with xattrs enabled 


 Comments   
Comment by Andrew Perepechko [ 08/Aug/13 ]

That looks like a bug somewhere in osd:

00000004:00000001:0.0:1375316763.193530:0:11801:0:(mdt_xattr.c:175:mdt_getxattr()) Process entered
00000004:00000002:0.0:1375316763.193532:0:11801:0:(mdt_xattr.c:180:mdt_getxattr()) getxattr [0x200000bd1:0x183:0x0]
00000004:00000001:0.0:1375316763.193535:0:11801:0:(mdt_lib.c:419:old_init_ucred()) Process entered
...
00000004:00000001:0.0:1375316763.193683:0:11801:0:(mdd_object.c:326:mdd_xattr_list()) Process entered
00080000:00000001:0.0:1375316763.193687:0:11801:0:(osd_xattr.c:765:osd_xattr_list()) Process entered
00080000:00000001:0.0:1375316763.193690:0:11801:0:(osd_xattr.c:781:osd_xattr_list()) Process leaving via out (rc=53 : 53 : 0x35)
00080000:00000001:0.0:1375316763.193692:0:11801:0:(osd_xattr.c:814:osd_xattr_list()) Process leaving (rc=53 : 53 : 35)
00000004:00000001:0.0:1375316763.193693:0:11801:0:(mdd_object.c:332:mdd_xattr_list()) Process leaving (rc=53 : 53 : 35)
00000004:00000001:0.0:1375316763.193711:0:11801:0:(mdt_xattr.c:128:mdt_getxattr_one()) Process entered
00000004:00000002:0.0:1375316763.193712:0:11801:0:(mdt_xattr.c:130:mdt_getxattr_one()) getxattr 
00000004:00000001:0.0:1375316763.193713:0:11801:0:(mdd_object.c:268:mdd_xattr_get()) Process entered
00000004:00000001:0.0:1375316763.193715:0:11801:0:(lod_object.c:370:lod_xattr_get()) Process entered
00080000:00000001:0.0:1375316763.193716:0:11801:0:(osd_xattr.c:242:osd_xattr_get()) Process entered
00080000:00000001:0.0:1375316763.193718:0:11801:0:(osd_xattr.c:256:osd_xattr_get()) Process leaving (rc=18446744073709551555 : -61 : ffffffffffffffc3)
00000004:00000001:0.0:1375316763.193720:0:11801:0:(lod_object.c:374:lod_xattr_get()) Process leaving (rc=18446744073709551555 : -61 : ffffffffffffffc3)
00000004:00000001:0.0:1375316763.193721:0:11801:0:(mdd_object.c:287:mdd_xattr_get()) Process leaving (rc=18446744073709551555 : -61 : ffffffffffffffc3)
00000004:00020000:0.0:1375316763.193723:0:11801:0:(mdt_xattr.c:134:mdt_getxattr_one()) getxattr failed: -61
00000004:00000001:0.0:1375316763.194795:0:11801:0:(mdt_xattr.c:135:mdt_getxattr_one()) Process leaving via out (rc=18446744073709551555 : -61 : 0xffffffffffffffc3)
00000004:00000001:0.0:1375316763.194798:0:11801:0:(mdt_xattr.c:264:mdt_getxattr()) Process leaving via out (rc=18446744073709551555 : -61 : 0xffffffffffffffc3)

osd tells that it filled out a buffer of 53 bytes of EA names, but osd_xattr_get() for the first item returns -ENODATA.

Comment by Andrew Perepechko [ 08/Aug/13 ]

Hm, osd-zfs/osd_xattr.c:osd_xattr_list() changes lb->lb_buf ignoring that it's not its internal variable and may have a side-effect.

int osd_xattr_list(const struct lu_env *env, struct dt_object *dt,
                struct lu_buf *lb, struct lustre_capa *capa)
{
...
                        lb->lb_buf += rc;
...
                        lb->lb_buf++;
...
}

The MDT code expects that lb_buf points to the beginning of the buffer with EA names, which is likely to be the same as the input, but may be different.

Comment by Andrew Perepechko [ 08/Aug/13 ]

I will update http://review.whamcloud.com/#/c/7208/ with a fix for listxattr/getxattr in MDT, since there would be some overlap between the patches anyway.

Comment by Andrew Perepechko [ 08/Aug/13 ]

Updated http://review.whamcloud.com/#/c/7208/

Comment by Peter Jones [ 08/Aug/13 ]

Thanks Panda! Hongchao, could you please take care of this patch?

Comment by Nathaniel Clark [ 21/Aug/13 ]

This bug is currently causing failures on ZFS on the following:
conf-sanity/61
replay-single/58c
sanityn/14[acd]
sanityn/25a
sanityn/72-73
sanity/17k (obv)
sanity/102[abcfhj]
sanity/102ha
sanity/103
sanity/125
sanity/154a
sanity/162
sanity/226a

Comment by Peter Jones [ 03/Sep/13 ]

This fix is being tracked under LU-3669

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