Skip to content

Commit 7e797f4

Browse files
shroffniigaw
authored andcommitted
libnvme: annotate libnvme_subsystem::iopolicy with !accessors:none
The default accessor generation creates getters that return cached attribute values. However, for libnvme_subsystem::iopolicy, a real-time (non-cached) value is required. This is particularly useful for tools such as nvme-top, which rely on up-to-date information for displaying a real-time dashboard. Annotate libnvme_subsystem::iopolicy with "!accessors:none" to disable the auto-generated accessor, and provide a custom implementation of libnvme_subsystem_get_iopolicy() that returns the current value. Signed-off-by: Nilay Shroff <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Daniel Wagner <[email protected]>
1 parent 6945656 commit 7e797f4

8 files changed

Lines changed: 25 additions & 36 deletions

File tree

libnvme/libnvme/nvme-swig-accessors.i

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,7 @@
130130
#define libnvme_subsystem_firmware_get libnvme_subsystem_get_firmware
131131
#define libnvme_subsystem_subsystype_get libnvme_subsystem_get_subsystype
132132
#define libnvme_subsystem_application_get libnvme_subsystem_get_application
133-
#define libnvme_subsystem_iopolicy_get libnvme_subsystem_get_iopolicy
134133
#define libnvme_subsystem_application_set libnvme_subsystem_set_application
135-
#define libnvme_subsystem_iopolicy_set libnvme_subsystem_set_iopolicy
136134

137135
/* struct libnvme_host */
138136
#define libnvme_host_hostnqn_get libnvme_host_get_hostnqn

libnvme/src/accessors.ld

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,13 +174,11 @@ LIBNVME_ACCESSORS_3 {
174174
libnvme_path_set_sysfs_dir;
175175
libnvme_subsystem_get_application;
176176
libnvme_subsystem_get_firmware;
177-
libnvme_subsystem_get_iopolicy;
178177
libnvme_subsystem_get_model;
179178
libnvme_subsystem_get_name;
180179
libnvme_subsystem_get_serial;
181180
libnvme_subsystem_get_subsysnqn;
182181
libnvme_subsystem_get_subsystype;
183182
libnvme_subsystem_get_sysfs_dir;
184183
libnvme_subsystem_set_application;
185-
libnvme_subsystem_set_iopolicy;
186184
};

libnvme/src/libnvme.ld

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ LIBNVME_3 {
177177
libnvme_subsystem_first_ctrl;
178178
libnvme_subsystem_first_ns;
179179
libnvme_subsystem_get_host;
180+
libnvme_subsystem_get_iopolicy;
180181
libnvme_subsystem_lookup_namespace;
181182
libnvme_subsystem_next_ctrl;
182183
libnvme_subsystem_next_ns;

libnvme/src/nvme/accessors.c

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -661,20 +661,6 @@ __public const char *libnvme_subsystem_get_application(
661661
return p->application;
662662
}
663663

664-
__public void libnvme_subsystem_set_iopolicy(
665-
struct libnvme_subsystem *p,
666-
const char *iopolicy)
667-
{
668-
free(p->iopolicy);
669-
p->iopolicy = iopolicy ? strdup(iopolicy) : NULL;
670-
}
671-
672-
__public const char *libnvme_subsystem_get_iopolicy(
673-
const struct libnvme_subsystem *p)
674-
{
675-
return p->iopolicy;
676-
}
677-
678664
/****************************************************************************
679665
* Accessors for: struct libnvme_host
680666
****************************************************************************/

libnvme/src/nvme/accessors.h

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -901,23 +901,6 @@ void libnvme_subsystem_set_application(
901901
const char *libnvme_subsystem_get_application(
902902
const struct libnvme_subsystem *p);
903903

904-
/**
905-
* libnvme_subsystem_set_iopolicy() - Set iopolicy.
906-
* @p: The &struct libnvme_subsystem instance to update.
907-
* @iopolicy: New string; a copy is stored. Pass NULL to clear.
908-
*/
909-
void libnvme_subsystem_set_iopolicy(
910-
struct libnvme_subsystem *p,
911-
const char *iopolicy);
912-
913-
/**
914-
* libnvme_subsystem_get_iopolicy() - Get iopolicy.
915-
* @p: The &struct libnvme_subsystem instance to query.
916-
*
917-
* Return: The value of the iopolicy field, or NULL if not set.
918-
*/
919-
const char *libnvme_subsystem_get_iopolicy(const struct libnvme_subsystem *p);
920-
921904
/****************************************************************************
922905
* Accessors for: struct libnvme_host
923906
****************************************************************************/

libnvme/src/nvme/private.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ struct libnvme_subsystem { // !generate-accessors
272272
char *firmware; // !accessors:readonly
273273
char *subsystype; // !accessors:readonly
274274
char *application;
275-
char *iopolicy;
275+
char *iopolicy; // !accessors:none
276276
};
277277

278278
struct libnvme_host { // !generate-accessors

libnvme/src/nvme/tree.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,21 @@ __public libnvme_host_t libnvme_subsystem_get_host(libnvme_subsystem_t s)
464464
return s->h;
465465
}
466466

467+
__public char *libnvme_subsystem_get_iopolicy(libnvme_subsystem_t s)
468+
{
469+
__cleanup_free char *iopolicy = NULL;
470+
471+
iopolicy = libnvme_get_subsys_attr(s, "iopolicy");
472+
if (iopolicy) {
473+
if (!s->iopolicy || strcmp(iopolicy, s->iopolicy)) {
474+
free(s->iopolicy);
475+
s->iopolicy = strdup(iopolicy);
476+
}
477+
}
478+
479+
return s->iopolicy;
480+
}
481+
467482
__public libnvme_ns_t libnvme_subsystem_first_ns(libnvme_subsystem_t s)
468483
{
469484
return list_top(&s->namespaces, struct libnvme_ns, entry);

libnvme/src/nvme/tree.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,14 @@ void libnvme_free_subsystem(struct libnvme_subsystem *s);
214214
*/
215215
libnvme_host_t libnvme_subsystem_get_host(libnvme_subsystem_t s);
216216

217+
/**
218+
* libnvme_subsystem_get_iopolicy() - Get subsystem iopolicy name
219+
* @s: subsystem
220+
*
221+
* Return: The iopolicy configured in subsystem @s
222+
*/
223+
char *libnvme_subsystem_get_iopolicy(libnvme_subsystem_t s);
224+
217225
/**
218226
* libnvme_ctrl_first_ns() - Start namespace iterator
219227
* @c: Controller instance

0 commit comments

Comments
 (0)