Patch fixes mdt_hsm_actions_debugfs seq operations to work with
new seq file logic in newer kernels
Meanwhile it finishes remaining work originating in LU-13985 which
updates ->next functions to always increment *pos as it is expected
by kernel
Test-Parameters: clientdistro=el8.2 serverdistro=el8.2 testlist=sanity-hsm
Signed-off-by: Mikhail Pershin <mpershin@whamcloud.com>
Change-Id: I4f077b633fbf7d420bfda10cce6b0141cef07761
Reviewed-on: https://review.whamcloud.com/40757
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Neil Brown <neilb@suse.de>
LASSERTF(iter->lpi_magic == POOL_IT_MAGIC, "%08X\n", iter->lpi_magic);
LASSERTF(iter->lpi_magic == POOL_IT_MAGIC, "%08X\n", iter->lpi_magic);
/* test if end of file */
/* test if end of file */
- if (*pos >= pool_tgt_count(iter->lpi_pool))
+ if (*pos > pool_tgt_count(iter->lpi_pool))
return NULL;
OBD_FAIL_TIMEOUT(OBD_FAIL_OST_LIST_ASSERT, cfs_fail_val);
return NULL;
OBD_FAIL_TIMEOUT(OBD_FAIL_OST_LIST_ASSERT, cfs_fail_val);
iter->lpi_idx = prev_idx; /* we stay on the last entry */
return NULL;
}
iter->lpi_idx = prev_idx; /* we stay on the last entry */
return NULL;
}
/* return != NULL to continue */
return iter;
}
/* return != NULL to continue */
return iter;
}
struct lu_tgt_descs *ltd = is_mdt ? &lod->lod_mdt_descs :
&lod->lod_ost_descs;
struct lu_tgt_descs *ltd = is_mdt ? &lod->lod_mdt_descs :
&lod->lod_ost_descs;
- if (*pos >= ltd->ltd_tgts_size - 1)
+ (*pos)++;
+ if (*pos > ltd->ltd_tgts_size - 1)
return NULL;
*pos = find_next_bit(ltd->ltd_tgt_bitmap,
return NULL;
*pos = find_next_bit(ltd->ltd_tgt_bitmap,
- ltd->ltd_tgts_size, *pos + 1);
+ ltd->ltd_tgts_size, *pos);
if (*pos < ltd->ltd_tgts_size)
return LTD_TGT(ltd, *pos);
else
if (*pos < ltd->ltd_tgts_size)
return LTD_TGT(ltd, *pos);
else
*/
static void *mdt_hsm_actions_debugfs_start(struct seq_file *s, loff_t *pos)
{
*/
static void *mdt_hsm_actions_debugfs_start(struct seq_file *s, loff_t *pos)
{
- struct agent_action_iterator *aai = s->private;
+ struct agent_action_iterator *aai = s->private;
+
ENTRY;
LASSERTF(aai->aai_magic == AGENT_ACTIONS_IT_MAGIC, "%08X\n",
ENTRY;
LASSERTF(aai->aai_magic == AGENT_ACTIONS_IT_MAGIC, "%08X\n",
aai->aai_cat_index = 0;
aai->aai_index = 0;
aai->aai_eof = false;
aai->aai_cat_index = 0;
aai->aai_index = 0;
aai->aai_eof = false;
static void *mdt_hsm_actions_debugfs_next(struct seq_file *s, void *v,
loff_t *pos)
{
static void *mdt_hsm_actions_debugfs_next(struct seq_file *s, void *v,
loff_t *pos)
{
+ struct agent_action_iterator *aai = s->private;
+
+ (*pos)++;
+ if (aai->aai_eof)
+ RETURN(NULL);
+ RETURN(aai);
struct llog_rec_hdr *hdr,
void *data)
{
struct llog_rec_hdr *hdr,
void *data)
{
- struct llog_agent_req_rec *larr = (struct llog_agent_req_rec *)hdr;
- struct seq_file *s = data;
- struct agent_action_iterator *aai;
- int sz;
- char buf[12];
+ struct llog_agent_req_rec *larr = (struct llog_agent_req_rec *)hdr;
+ struct seq_file *s = data;
+ struct agent_action_iterator *aai = s->private;
+ int sz;
+ char buf[12];
+
LASSERTF(aai->aai_magic == AGENT_ACTIONS_IT_MAGIC, "%08X\n",
aai->aai_magic);
LASSERTF(aai->aai_magic == AGENT_ACTIONS_IT_MAGIC, "%08X\n",
aai->aai_magic);
*/
static int mdt_hsm_actions_debugfs_show(struct seq_file *s, void *v)
{
*/
static int mdt_hsm_actions_debugfs_show(struct seq_file *s, void *v)
{
- struct agent_action_iterator *aai = s->private;
- struct coordinator *cdt = &aai->aai_mdt->mdt_coordinator;
- int rc;
+ struct agent_action_iterator *aai = s->private;
+ struct coordinator *cdt = &aai->aai_mdt->mdt_coordinator;
+ int rc;
+
ENTRY;
LASSERTF(aai->aai_magic == AGENT_ACTIONS_IT_MAGIC, "%08X\n",
ENTRY;
LASSERTF(aai->aai_magic == AGENT_ACTIONS_IT_MAGIC, "%08X\n",
aai->aai_eof = true;
if (rc == LLOG_PROC_BREAK) /* buffer full */
rc = 0;
aai->aai_eof = true;
if (rc == LLOG_PROC_BREAK) /* buffer full */
rc = 0;
static void mdt_hsm_actions_debugfs_stop(struct seq_file *s, void *v)
{
struct agent_action_iterator *aai = s->private;
static void mdt_hsm_actions_debugfs_stop(struct seq_file *s, void *v)
{
struct agent_action_iterator *aai = s->private;
ENTRY;
LASSERTF(aai->aai_magic == AGENT_ACTIONS_IT_MAGIC, "%08X\n",
ENTRY;
LASSERTF(aai->aai_magic == AGENT_ACTIONS_IT_MAGIC, "%08X\n",