In lu_dirent packing, a '0' is appended after name, but it's not
counted in size calcuation, which may cause crash.
Add sanity test_230l.
Signed-off-by: Lai Siyao <lai.siyao@whamcloud.com>
Change-Id: Iab4947dea8e26ea798d5f64e218268200a5fabe8
Reviewed-on: https://review.whamcloud.com/33865
Reviewed-by: Stephan Thiell <sthiell@stanford.edu>
Tested-by: Jenkins
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
if (attr & LUDA_TYPE) {
const size_t align = sizeof(struct luda_type) - 1;
- size = (sizeof(struct lu_dirent) + namelen + align) & ~align;
- size += sizeof(struct luda_type);
- } else
- size = sizeof(struct lu_dirent) + namelen;
- return (size + 7) & ~7;
+ size = (sizeof(struct lu_dirent) + namelen + 1 + align) &
+ ~align;
+ size += sizeof(struct luda_type);
+ } else {
+ size = sizeof(struct lu_dirent) + namelen + 1;
+ }
+
+ return (size + 7) & ~7;
}
#define MDS_DIR_END_OFF 0xfffffffffffffffeULL
}
run_test 230k "file data not changed after dir migration"
+test_230l() {
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
+ [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.56) ] &&
+ skip "Need MDS version at least 2.11.56"
+
+ $LFS mkdir -i 0 -c 1 $DIR/$tdir || error "mkdir failed"
+ createmany -o $DIR/$tdir/f___________________________________ 1000 ||
+ error "create files under remote dir failed $i"
+ $LFS migrate -m 1 $DIR/$tdir || error "migrate failed"
+}
+run_test 230l "readdir between MDTs won't crash"
+
test_231a()
{
# For simplicity this test assumes that max_pages_per_rpc