if (ha != NULL)
OBD_FREE_PTR(ha);
out:
+ /* wake the coordinator to potentially schedule requests */
+ if (rc == -EEXIST || rc == 0)
+ mdt_hsm_cdt_event(cdt);
+
return rc;
}
int mdt_hsm_send_action_to_each_archive(struct mdt_thread_info *mti,
struct hsm_action_item *hai)
{
- __u64 compound_id;
struct hsm_agent *ha;
__u32 archive_mask = 0;
struct coordinator *cdt = &mti->mti_mdt->mdt_coordinator;
continue;
archive_mask |= (1 << ha->ha_archive_id[i]);
- /* XXX: instead of creating one request record per
- * new action, it could make sense to gather
- * all for the same archive_id as one compound
- * request/id, like in mdt_hsm_add_actions() ?? */
- compound_id = atomic_inc_return(&cdt->cdt_compound_id);
+ /* XXX: it could make sense to gather all
+ * actions for the same archive_id like in
+ * mdt_hsm_add_actions() ?? */
rc = mdt_agent_record_add(mti->mti_env, mti->mti_mdt,
- compound_id,
ha->ha_archive_id[i], 0,
hai);
if (rc) {
}
/**
- * send a compound request to the agent
+ * send a HAL to the agent
* \param mti [IN] context
* \param hal [IN] request (can be a kuc payload)
* \param purge [IN] purge mode (no record)
/* incompatible request, we abort the request */
/* next time coordinator will wake up, it will
- * make the same compound with valid only
+ * make the same HAL with valid only
* records */
fail_request = true;
rc = mdt_agent_record_update(mti->mti_env, mdt,
}
}
- /* we found incompatible requests, so the compound cannot be send
+ /* we found incompatible requests, so the HAL cannot be sent
* as is. Bad records have been invalidated in llog.
* Valid one will be reschedule next time coordinator will wake up
- * So no need the rebuild a full valid compound request now
+ * So no need the rebuild a full valid HAL now
*/
if (fail_request)
GOTO(out_buf, rc = 0);
* the ldlm_callback_handler. Note this sends a request RPC
* from a server (MDT) to a client (MDC), backwards of normal comms.
*/
- exp = cfs_hash_lookup(mdt2obd_dev(mdt)->obd_uuid_hash, &uuid);
+ exp = obd_uuid_lookup(mdt2obd_dev(mdt), &uuid);
if (exp == NULL || exp->exp_disconnected) {
if (exp != NULL)
class_export_put(exp);
}
/**
- * seq_file method called to start access to /proc file
+ * seq_file method called to start access to debugfs file
*/
-static void *mdt_hsm_agent_proc_start(struct seq_file *s, loff_t *off)
+static void *mdt_hsm_agent_debugfs_start(struct seq_file *s, loff_t *off)
{
struct mdt_device *mdt = s->private;
struct coordinator *cdt = &mdt->mdt_coordinator;
* seq_file method called to get next item
* just returns NULL at eof
*/
-static void *mdt_hsm_agent_proc_next(struct seq_file *s, void *v, loff_t *p)
+static void *mdt_hsm_agent_debugfs_next(struct seq_file *s, void *v, loff_t *p)
{
struct mdt_device *mdt = s->private;
struct coordinator *cdt = &mdt->mdt_coordinator;
/**
*/
-static int mdt_hsm_agent_proc_show(struct seq_file *s, void *v)
+static int mdt_hsm_agent_debugfs_show(struct seq_file *s, void *v)
{
struct list_head *pos = v;
struct hsm_agent *ha;
}
/**
- * seq_file method called to stop access to /proc file
+ * seq_file method called to stop access to debugfs file
*/
-static void mdt_hsm_agent_proc_stop(struct seq_file *s, void *v)
+static void mdt_hsm_agent_debugfs_stop(struct seq_file *s, void *v)
{
struct mdt_device *mdt = s->private;
struct coordinator *cdt = &mdt->mdt_coordinator;
up_read(&cdt->cdt_agent_lock);
}
-/* hsm agent list proc functions */
-static const struct seq_operations mdt_hsm_agent_proc_ops = {
- .start = mdt_hsm_agent_proc_start,
- .next = mdt_hsm_agent_proc_next,
- .show = mdt_hsm_agent_proc_show,
- .stop = mdt_hsm_agent_proc_stop,
+/* hsm agent list debugfs functions */
+static const struct seq_operations mdt_hsm_agent_debugfs_ops = {
+ .start = mdt_hsm_agent_debugfs_start,
+ .next = mdt_hsm_agent_debugfs_next,
+ .show = mdt_hsm_agent_debugfs_show,
+ .stop = mdt_hsm_agent_debugfs_stop,
};
/**
- * public function called at open of /proc file to get
+ * public function called at open of debugfs file to get
* list of agents
*/
-static int lprocfs_open_hsm_agent(struct inode *inode, struct file *file)
+static int ldebugfs_open_hsm_agent(struct inode *inode, struct file *file)
{
struct seq_file *s;
int rc;
ENTRY;
- rc = seq_open(file, &mdt_hsm_agent_proc_ops);
+ rc = seq_open(file, &mdt_hsm_agent_debugfs_ops);
if (rc)
RETURN(rc);
s = file->private_data;
- s->private = PDE_DATA(inode);
+ s->private = inode->i_private;
RETURN(rc);
}
/* methods to access hsm agent list */
const struct file_operations mdt_hsm_agent_fops = {
.owner = THIS_MODULE,
- .open = lprocfs_open_hsm_agent,
+ .open = ldebugfs_open_hsm_agent,
.read = seq_read,
.llseek = seq_lseek,
- .release = lprocfs_seq_release,
+ .release = seq_release,
};