with ZFS-0.8+ default blocksize is 512 bytes. as many llog
operations use 8K chunks it turns into 16 dbuf lookups
which is quite expensive.
for example, sanity/60a takes 104s with blocksize=512 and
90s with blocksize=8K
Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com>
Change-Id: I86e6e598899e5d09a550dff7dcb9edd5ee56abd5
Reviewed-on: https://review.whamcloud.com/37192
Reviewed-by: Olaf Faaland-LLNL <faaland1@llnl.gov>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
osd->od_svname, rc);
return ERR_PTR(rc);
}
osd->od_svname, rc);
return ERR_PTR(rc);
}
+ } else if ((fid_is_llog(fid))) {
+ rc = -dmu_object_set_blocksize(osd->od_os, dn->dn_object,
+ LLOG_MIN_CHUNK_SIZE, 0, oh->ot_tx);
+ if (unlikely(rc)) {
+ CERROR("%s: can't change blocksize: %d\n",
+ osd->od_svname, rc);
+ return ERR_PTR(rc);
+ }