From aa84fbc8165f526dae4bd824a48c186c3ac2f639 Mon Sep 17 00:00:00 2001 From: Alex Zhuravlev Date: Fri, 1 Apr 2016 14:22:53 +0300 Subject: [PATCH 1/1] LU-7906 osd: no blocksize on non-OST objects osd-zfs should not set blocksize on non-OST objects. Change-Id: Idafe2236a49ffcb86bf06971d3687c8fceb516a2 Signed-off-by: Alex Zhuravlev Reviewed-on: http://review.whamcloud.com/19286 Tested-by: Jenkins Reviewed-by: Nathaniel Clark Reviewed-by: Jinshan Xiong Reviewed-by: Andreas Dilger Tested-by: Maloo --- lustre/osd-zfs/osd_object.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lustre/osd-zfs/osd_object.c b/lustre/osd-zfs/osd_object.c index fa9ec894..4079eeb 100644 --- a/lustre/osd-zfs/osd_object.c +++ b/lustre/osd-zfs/osd_object.c @@ -1390,8 +1390,9 @@ static dmu_buf_t *osd_mkreg(const struct lu_env *env, struct osd_object *obj, struct lu_attr *la, uint64_t parent, struct osd_thandle *oh) { - dmu_buf_t *db; - int rc; + const struct lu_fid *fid = lu_object_fid(&obj->oo_dt.do_lu); + dmu_buf_t *db; + int rc; struct osd_device *osd = osd_obj2dev(obj); LASSERT(S_ISREG(la->la_mode)); @@ -1406,7 +1407,7 @@ static dmu_buf_t *osd_mkreg(const struct lu_env *env, struct osd_object *obj, * blocksize is selected based on the file size rather than the * making broad assumptions based on the osd type. */ - if (!lu_device_is_md(osd2lu_dev(osd))) { + if ((fid_is_idif(fid) || fid_is_norm(fid)) && osd->od_is_ost) { rc = -dmu_object_set_blocksize(osd->od_os, db->db_object, osd->od_max_blksz, 0, oh->ot_tx); if (unlikely(rc)) { -- 1.8.3.1