testing the return value of chattr is useless: 1. sometimes returns success when the barrier couldn't even be stat'ed 2. returns success when the barrier couldn't be chattr'ed (permission denied) the only meaningful test (besides testing chattr's stderr) is to verify the barrier's xattrs didn't change after running chattr. this is also easiest to implement as it is already done elsewhere in the code (cut & paste). so, eeval chattr instead of eexec'ing it, and add two tests verifying the xattrs (using both showattr & lsattr). number the tests 105a & 105b, though only "105" is printed for both tests. only one test is probably needed (preference to showattr as it dumps all xattrs), but just replicating what was done in tests 102 & 103 (showattr & lsattr, respectively). --- testfs.sh-0.20b 2009-08-20 19:45:48.000000000 -0500 +++ testfs.sh-0.20c 2009-08-20 20:36:02.000000000 -0500 @@ -494,7 +494,9 @@ function do_test () { eexec 102 0 "setattr --barrier $dpath" eexec 103 0 "do_xattr_verify $MNT showattr $dpath $attr_B" eexec 104 0 "do_xattr_verify $MNT lsattr $dpath $lsattr_B" - eexec 105 1 "go_xid 2 chattr =i $dpath" + eeval "go_xid 2 chattr =i $dpath" + eexec 105a 0 "do_xattr_verify $MNT showattr $dpath $attr_B" + eexec 105b 0 "do_xattr_verify $MNT lsattr $dpath $lsattr_B" eexec 106 0 "do_xattr_barrier $MNT $dpath ..^" eexec 108 0 "setattr --~barrier $dpath" eexec 109 0 "do_xattr_verify $MNT showattr $dpath $attr_b"