RETURN(rc);
}
+int ofd_precreate_batch(struct ofd_device *ofd, int batch)
+{
+ int count;
+
+ spin_lock(&ofd->ofd_objid_lock);
+ count = min(ofd->ofd_precreate_batch, batch);
+ spin_unlock(&ofd->ofd_objid_lock);
+
+ return count;
+}
+
obd_id ofd_last_id(struct ofd_device *ofd, obd_seq group)
{
obd_id id;
LASSERT(group <= ofd->ofd_max_group);
- cfs_spin_lock(&ofd->ofd_objid_lock);
+ spin_lock(&ofd->ofd_objid_lock);
id = ofd->ofd_last_objids[group];
- cfs_spin_unlock(&ofd->ofd_objid_lock);
+ spin_unlock(&ofd->ofd_objid_lock);
return id;
}
void ofd_last_id_set(struct ofd_device *ofd, obd_id id, obd_seq group)
{
LASSERT(group <= ofd->ofd_max_group);
- cfs_spin_lock(&ofd->ofd_objid_lock);
+ spin_lock(&ofd->ofd_objid_lock);
if (ofd->ofd_last_objids[group] < id)
ofd->ofd_last_objids[group] = id;
- cfs_spin_unlock(&ofd->ofd_objid_lock);
+ spin_unlock(&ofd->ofd_objid_lock);
}
int ofd_last_id_write(const struct lu_env *env, struct ofd_device *ofd,
RETURN(PTR_ERR(dob));
ofd->ofd_lastid_obj[group] = dob;
- cfs_mutex_init(&ofd->ofd_create_locks[group]);
+ mutex_init(&ofd->ofd_create_locks[group]);
rc = dt_attr_get(env, dob, &info->fti_attr, BYPASS_CAPA);
if (rc)
ENTRY;
- cfs_spin_lock_init(&ofd->ofd_objid_lock);
+ spin_lock_init(&ofd->ofd_objid_lock);
rc = dt_attr_get(env, ofd->ofd_last_group_file,
&info->fti_attr, BYPASS_CAPA);
}
}
- CWARN("%s: %u groups initialized\n",
+ CDEBUG(D_OTHER, "%s: %u groups initialized\n",
ofd_obd(ofd)->obd_name, ofd->ofd_max_group + 1);
cleanup:
RETURN(rc);
* fsfilt_read_record(), in case sizeof(*lcd)
* isn't the same as fsd->lsd_client_size. */
off = lsd->lsd_client_start + cl_idx * lsd->lsd_client_size;
- rc = lut_client_data_read(env, &ofd->ofd_lut, lcd, &off, cl_idx);
+ rc = tgt_client_data_read(env, &ofd->ofd_lut, lcd, &off, cl_idx);
if (rc) {
CERROR("error reading FILT %s idx %d off %llu: rc %d\n",
LAST_RCVD, cl_idx, off, rc);
fed = &exp->exp_filter_data;
*fed->fed_ted.ted_lcd = *lcd;
- ofd_export_stats_init(ofd, exp, NULL);
- rc = lut_client_add(env, exp, cl_idx);
+ rc = tgt_client_add(env, exp, cl_idx);
LASSERTF(rc == 0, "rc = %d\n", rc); /* can't fail existing */
/* VBR: set export last committed version */
exp->exp_last_committed = last_rcvd;
- cfs_spin_lock(&exp->exp_lock);
+ spin_lock(&exp->exp_lock);
exp->exp_connecting = 0;
exp->exp_in_recovery = 0;
- cfs_spin_unlock(&exp->exp_lock);
+ spin_unlock(&exp->exp_lock);
obd->obd_max_recoverable_clients++;
class_export_put(exp);
CDEBUG(D_OTHER, "client at idx %d has last_rcvd = "LPU64"\n",
cl_idx, last_rcvd);
- cfs_spin_lock(&ofd->ofd_lut.lut_translock);
+ spin_lock(&ofd->ofd_lut.lut_translock);
if (last_rcvd > lsd->lsd_last_transno)
lsd->lsd_last_transno = last_rcvd;
- cfs_spin_unlock(&ofd->ofd_lut.lut_translock);
+ spin_unlock(&ofd->ofd_lut.lut_translock);
}
err_out:
lsd->lsd_subdir_count = FILTER_SUBDIR_COUNT;
lsd->lsd_feature_incompat = OBD_INCOMPAT_OST;
} else {
- rc = lut_server_data_read(env, &ofd->ofd_lut);
+ rc = tgt_server_data_read(env, &ofd->ofd_lut);
if (rc) {
CDEBUG(D_INODE,"OBD ofd: error reading %s: rc %d\n",
LAST_RCVD, rc);
rc = ofd_clients_data_init(env, ofd, last_rcvd_size);
- cfs_spin_lock(&ofd->ofd_lut.lut_translock);
+ spin_lock(&ofd->ofd_lut.lut_translock);
obd->obd_last_committed = lsd->lsd_last_transno;
- cfs_spin_unlock(&ofd->ofd_lut.lut_translock);
+ ofd->ofd_lut.lut_last_transno = lsd->lsd_last_transno;
+ spin_unlock(&ofd->ofd_lut.lut_translock);
/* save it, so mount count and last_transno is current */
- rc = lut_server_data_update(env, &ofd->ofd_lut, 0);
+ rc = tgt_server_data_update(env, &ofd->ofd_lut, 0);
if (rc)
GOTO(err_fsd, rc);
if (OBD_FAIL_CHECK(OBD_FAIL_MDS_FS_SETUP))
RETURN (-ENOENT);
+ /* prepare transactions callbacks */
+ ofd->ofd_txn_cb.dtc_txn_start = NULL;
+ ofd->ofd_txn_cb.dtc_txn_stop = ofd_txn_stop_cb;
+ ofd->ofd_txn_cb.dtc_txn_commit = NULL;
+ ofd->ofd_txn_cb.dtc_cookie = ofd;
+ ofd->ofd_txn_cb.dtc_tag = LCT_DT_THREAD;
+ CFS_INIT_LIST_HEAD(&ofd->ofd_txn_cb.dtc_linkage);
+
+ dt_txn_callback_add(ofd->ofd_osd, &ofd->ofd_txn_cb);
+
rc = ofd_server_data_init(env, ofd);
if (rc)
GOTO(out, rc);
out_hc:
lu_object_put(env, &ofd->ofd_health_check_file->do_lu);
out:
+ dt_txn_callback_del(ofd->ofd_osd, &ofd->ofd_txn_cb);
return rc;
}
if (i)
CERROR("can't sync: %d\n", i);
+ /* Remove transaction callback */
+ dt_txn_callback_del(ofd->ofd_osd, &ofd->ofd_txn_cb);
+
if (ofd->ofd_last_group_file) {
lu_object_put(env, &ofd->ofd_last_group_file->do_lu);
ofd->ofd_last_group_file = NULL;