static inline int mgs_init_export(struct obd_export *exp) { struct mgs_export_data *data = &exp->u.eu_mgs_data; /* init mgs_export_data for fsc */ cfs_spin_lock_init(&data->med_lock); CFS_INIT_LIST_HEAD(&data->med_clients); cfs_spin_lock(&exp->exp_lock); exp->exp_connecting = 1; cfs_spin_unlock(&exp->exp_lock); /* self-export doesn't need client data and ldlm initialization */ if (unlikely(obd_uuid_equals(&exp->exp_obd->obd_uuid, &exp->exp_client_uuid))) return 0; return ldlm_init_export(exp); }
/** * Implementation of obd_ops::o_init_export. * * This function is called from class_new_export() and initializes * the OFD-specific data for new export. * * \param[in] exp OBD export * * \retval 0 if successful * \retval negative value on error */ static int ofd_init_export(struct obd_export *exp) { int rc; spin_lock_init(&exp->exp_filter_data.fed_lock); INIT_LIST_HEAD(&exp->exp_filter_data.fed_mod_list); atomic_set(&exp->exp_filter_data.fed_soft_sync_count, 0); spin_lock(&exp->exp_lock); exp->exp_connecting = 1; spin_unlock(&exp->exp_lock); /* self-export doesn't need client data and ldlm initialization */ if (unlikely(obd_uuid_equals(&exp->exp_obd->obd_uuid, &exp->exp_client_uuid))) return 0; rc = tgt_client_alloc(exp); if (rc == 0) ldlm_init_export(exp); if (rc) CERROR("%s: Can't initialize export: rc %d\n", exp->exp_obd->obd_name, rc); return rc; }