param->ddp_brw_size = osd->od_max_blksz;
else
param->ddp_brw_size = ONE_MB_BRW_SIZE;
+
+#ifdef HAVE_DMU_OFFSET_NEXT
+ param->ddp_has_lseek_data_hole = true;
+#else
+ param->ddp_has_lseek_data_hole = false;
+#endif
}
/*
RETURN(0);
}
+static void osd_wait_quota_pending(struct dt_device *d)
+{
+ struct osd_device *o = osd_dt_dev(d);
+
+ if (o->od_quota_slave_md != NULL ||
+ o->od_quota_slave_dt != NULL)
+ txg_wait_callbacks(spa_get_dsl(dmu_objset_spa(o->od_os)));
+}
+
static struct dt_device_operations osd_dt_ops = {
.dt_root_get = osd_root_get,
.dt_statfs = osd_statfs,
.dt_sync = osd_sync,
.dt_commit_async = osd_commit_async,
.dt_ro = osd_ro,
+ .dt_wait_quota_pending = osd_wait_quota_pending,
};
/*
int rc;
ENTRY;
-
+ osd_index_backup(env, o, false);
if (o->od_os) {
osd_objset_unregister_callbacks(o);
if (!o->od_dt_dev.dd_rdonly) {