stats = exp->exp_nid_stats;
LASSERT(stats != NULL);
- num_stats = NUM_OBD_STATS + LPROC_OFD_LAST;
+ num_stats = NUM_OBD_STATS + LPROC_OFD_STATS_LAST;
+
stats->nid_stats = lprocfs_alloc_stats(num_stats,
LPROCFS_STATS_FLAG_NOPERCPU);
if (stats->nid_stats == NULL)
return -ENOMEM;
- lprocfs_init_ops_stats(LPROC_OFD_LAST, stats->nid_stats);
- lprocfs_counter_init(stats->nid_stats, LPROC_OFD_READ_BYTES,
- LPROCFS_CNTR_AVGMINMAX, "read_bytes", "bytes");
- lprocfs_counter_init(stats->nid_stats, LPROC_OFD_WRITE_BYTES,
- LPROCFS_CNTR_AVGMINMAX, "write_bytes", "bytes");
-
+ lprocfs_init_ops_stats(LPROC_OFD_STATS_LAST, stats->nid_stats);
+ ofd_stats_counter_init(stats->nid_stats);
rc = lprocfs_register_stats(stats->nid_proc, "stats",
stats->nid_stats);
if (rc)
ofd = ofd_dev(obd->obd_lu_dev);
- rc = lu_env_refill((struct lu_env *)env);
- if (rc != 0) {
- CERROR("Failure to refill session: '%d'\n", rc);
- RETURN(rc);
- }
-
- ofd_info_init(env, exp);
rc = ofd_parse_connect_data(env, exp, data, false);
if (rc == 0)
ofd_export_stats_init(ofd, exp, localdata);
exp = class_conn2export(&conn);
LASSERT(exp != NULL);
- rc = lu_env_refill((struct lu_env *)env);
- if (rc != 0) {
- CERROR("Failure to refill session: '%d'\n", rc);
- GOTO(out, rc);
- }
-
- ofd_info_init(env, exp);
-
rc = ofd_parse_connect_data(env, exp, data, true);
if (rc)
GOTO(out, rc);
ofd_grant_discard(exp);
- rc = lu_env_init(&env, LCT_DT_THREAD);
- if (rc)
- RETURN(rc);
-
/* Do not erase record for recoverable client. */
if (exp->exp_obd->obd_replayable &&
- (!exp->exp_obd->obd_fail || exp->exp_failed))
- tgt_client_del(&env, exp);
- lu_env_fini(&env);
+ (!exp->exp_obd->obd_fail || exp->exp_failed)) {
+ rc = lu_env_init(&env, LCT_DT_THREAD);
+ if (rc)
+ GOTO(out, rc);
+ tgt_client_del(&env, exp);
+ lu_env_fini(&env);
+ }
+out:
class_export_put(exp);
RETURN(rc);
}
spin_lock_init(&exp->exp_filter_data.fed_lock);
CFS_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);
ofd_read_unlock(env, fo);
ofd_object_put(env, fo);
}
- } else if (KEY_IS(KEY_SYNC_LOCK_CANCEL)) {
- *((__u32 *) val) = ofd->ofd_sync_lock_cancel;
- *vallen = sizeof(__u32);
} else if (KEY_IS(KEY_LAST_FID)) {
struct ofd_device *ofd = ofd_exp(exp);
struct ofd_seq *oseq;
return 0;
}
-static int ofd_statfs(const struct lu_env *env, struct obd_export *exp,
- struct obd_statfs *osfs, __u64 max_age, __u32 flags)
+int ofd_statfs(const struct lu_env *env, struct obd_export *exp,
+ struct obd_statfs *osfs, __u64 max_age, __u32 flags)
{
struct obd_device *obd = class_exp2obd(exp);
struct ofd_device *ofd = ofd_dev(exp->exp_obd->obd_lu_dev);
return rc;
}
-static int ofd_destroy_by_fid(const struct lu_env *env,
- struct ofd_device *ofd,
- const struct lu_fid *fid, int orphan)
+int ofd_destroy_by_fid(const struct lu_env *env, struct ofd_device *ofd,
+ const struct lu_fid *fid, int orphan)
{
struct ofd_thread_info *info = ofd_info(env);
struct lustre_handle lockh;
else
count = 1; /* default case - single destroy */
- /**
- * There can be sequence of objects to destroy. Therefore this request
- * may have multiple transaction involved in. It is OK, we need only
- * the highest used transno to be reported back in reply but not for
- * replays, they must report their transno
- */
- if (info->fti_transno == 0) /* not replay */
- info->fti_mult_trans = 1;
-
- CDEBUG(D_HA, "%s: Destroy object "DOSTID" count %d\n", ofd_name(ofd),
+ CDEBUG(D_INODE, "%s: Destroy object "DOSTID" count %d\n", ofd_name(ofd),
POSTID(&oa->o_oi), count);
while (count > 0) {
int lrc;
ostid_inc_id(&oa->o_oi);
}
- /* if we have transaction then there were some deletions, we don't
- * need to return ENOENT in that case because it will not wait
- * for commit of these deletions. The ENOENT must be returned only
- * if there were no transations.
- */
- if (rc == -ENOENT) {
- if (info->fti_transno != 0)
- rc = 0;
- } else if (rc != 0) {
- /*
- * If we have at least one transaction then llog record
- * on server will be removed upon commit, so for rc != 0
- * we return no transno and llog record will be reprocessed.
- */
- info->fti_transno = 0;
- }
ofd_info2oti(info, oti);
out:
RETURN(rc);
}
-static int ofd_orphans_destroy(const struct lu_env *env,
- struct obd_export *exp, struct ofd_device *ofd,
- struct obdo *oa)
+int ofd_orphans_destroy(const struct lu_env *env, struct obd_export *exp,
+ struct ofd_device *ofd, struct obdo *oa)
{
struct ofd_thread_info *info = ofd_info(env);
obd_id last;