*
*/
/*
- * lustre/mdt/mdt_agent_actions.c
+ * lustre/mdt/mdt_hsm_cdt_actions.c
*
* Lustre HSM
*
hai->hai_cookie = cdt->cdt_last_cookie;
}
larr->arr_hai.hai_cookie = hai->hai_cookie;
- rc = llog_cat_add(env, lctxt->loc_handle, &larr->arr_hdr, NULL, NULL);
+ rc = llog_cat_add(env, lctxt->loc_handle, &larr->arr_hdr, NULL);
if (rc > 0)
rc = 0;
larr->arr_hdr.lrh_id = 0;
larr->arr_hdr.lrh_index = 0;
rc = llog_cat_add(env, llh->u.phd.phd_cat_handle, &larr->arr_hdr,
- NULL, NULL);
+ NULL);
larr->arr_hdr = saved_hdr;
RETURN(rc);
}
int aai_magic; /**< magic number */
bool aai_eof; /**< all done */
struct lu_env aai_env; /**< lustre env for llog */
- struct obd_device *aai_obd; /**< metadata device */
+ struct mdt_device *aai_mdt; /**< metadata device */
struct llog_ctxt *aai_ctxt; /**< llog context */
int aai_cat_index; /**< cata idx already shown */
int aai_index; /**< idx in cata shown */
* seq_file method called to start access to /proc file
* get llog context + llog handle
*/
-static void *mdt_agent_actions_proc_start(struct seq_file *s, loff_t *pos)
+static void *mdt_hsm_actions_proc_start(struct seq_file *s, loff_t *pos)
{
struct agent_action_iterator *aai = s->private;
ENTRY;
LASSERTF(aai->aai_magic == AGENT_ACTIONS_IT_MAGIC, "%08X",
aai->aai_magic);
- aai->aai_ctxt = llog_get_context(aai->aai_obd, LLOG_AGENT_ORIG_CTXT);
+ aai->aai_ctxt = llog_get_context(mdt2obd_dev(aai->aai_mdt),
+ LLOG_AGENT_ORIG_CTXT);
if (aai->aai_ctxt == NULL || aai->aai_ctxt->loc_handle == NULL) {
CERROR("llog_get_context() failed\n");
RETURN(ERR_PTR(-ENOENT));
/* first call = rewind */
if (*pos == 0) {
aai->aai_cat_index = 0;
- aai->aai_index = 0;
+ aai->aai_index = -1;
aai->aai_eof = false;
*pos = 1;
}
RETURN(aai);
}
-static void *mdt_agent_actions_proc_next(struct seq_file *s, void *v,
+static void *mdt_hsm_actions_proc_next(struct seq_file *s, void *v,
loff_t *pos)
{
RETURN(NULL);
/**
* llog_cat_process() callback, used to fill a seq_file buffer
*/
-static int agent_actions_show_cb(const struct lu_env *env,
+static int hsm_actions_show_cb(const struct lu_env *env,
struct llog_handle *llh,
struct llog_rec_hdr *hdr,
void *data)
}
/**
- * mdt_agent_actions_proc_show() is called at for each seq record
+ * mdt_hsm_actions_proc_show() is called at for each seq record
* process the llog, with a cb which fill the file_seq buffer
* to be faster, one show will fill multiple records
*/
-static int mdt_agent_actions_proc_show(struct seq_file *s, void *v)
+static int mdt_hsm_actions_proc_show(struct seq_file *s, void *v)
{
struct agent_action_iterator *aai = s->private;
+ struct coordinator *cdt = &aai->aai_mdt->mdt_coordinator;
int rc;
ENTRY;
if (aai->aai_eof)
RETURN(0);
+ mutex_lock(&cdt->cdt_llog_lock);
rc = llog_cat_process(&aai->aai_env, aai->aai_ctxt->loc_handle,
- agent_actions_show_cb, s,
+ hsm_actions_show_cb, s,
aai->aai_cat_index, aai->aai_index + 1);
+ mutex_unlock(&cdt->cdt_llog_lock);
if (rc == 0) /* all llog parsed */
aai->aai_eof = true;
if (rc == LLOG_PROC_BREAK) /* buffer full */
* seq_file method called to stop access to /proc file
* clean + put llog context
*/
-static void mdt_agent_actions_proc_stop(struct seq_file *s, void *v)
+static void mdt_hsm_actions_proc_stop(struct seq_file *s, void *v)
{
struct agent_action_iterator *aai = s->private;
ENTRY;
return;
}
-static const struct seq_operations mdt_agent_actions_proc_ops = {
- .start = mdt_agent_actions_proc_start,
- .next = mdt_agent_actions_proc_next,
- .show = mdt_agent_actions_proc_show,
- .stop = mdt_agent_actions_proc_stop,
+static const struct seq_operations mdt_hsm_actions_proc_ops = {
+ .start = mdt_hsm_actions_proc_start,
+ .next = mdt_hsm_actions_proc_next,
+ .show = mdt_hsm_actions_proc_show,
+ .stop = mdt_hsm_actions_proc_stop,
};
-static int lprocfs_open_agent_actions(struct inode *inode, struct file *file)
+static int lprocfs_open_hsm_actions(struct inode *inode, struct file *file)
{
struct agent_action_iterator *aai;
struct seq_file *s;
struct mdt_device *mdt;
ENTRY;
- if (LPROCFS_ENTRY_CHECK(PDE(inode)))
- RETURN(-ENOENT);
-
- rc = seq_open(file, &mdt_agent_actions_proc_ops);
+ rc = seq_open(file, &mdt_hsm_actions_proc_ops);
if (rc)
RETURN(rc);
/* mdt is saved in proc_dir_entry->data by
* mdt_coordinator_procfs_init() calling lprocfs_register()
*/
- mdt = (struct mdt_device *)PDE(inode)->data;
- aai->aai_obd = mdt2obd_dev(mdt);
+ mdt = (struct mdt_device *)PDE_DATA(inode);
+ aai->aai_mdt = mdt;
s = file->private_data;
s->private = aai;
}
/**
- * lprocfs_release_agent_actions() is called at end of /proc access
- * free alloacted ressources and call cleanup lprocfs methods
+ * lprocfs_release_hsm_actions() is called at end of /proc access.
+ * It frees allocated ressources and calls cleanup lprocfs methods.
*/
-static int lprocfs_release_agent_actions(struct inode *inode, struct file *file)
+static int lprocfs_release_hsm_actions(struct inode *inode, struct file *file)
{
struct seq_file *seq = file->private_data;
struct agent_action_iterator *aai = seq->private;
return lprocfs_seq_release(inode, file);
}
-/* methods to access agent actions llog through /proc */
-const struct file_operations mdt_agent_actions_fops = {
+/* Methods to access HSM action list LLOG through /proc */
+const struct file_operations mdt_hsm_actions_fops = {
.owner = THIS_MODULE,
- .open = lprocfs_open_agent_actions,
+ .open = lprocfs_open_hsm_actions,
.read = seq_read,
.llseek = seq_lseek,
- .release = lprocfs_release_agent_actions,
+ .release = lprocfs_release_hsm_actions,
};