Skip to content

Commit 19b1283

Browse files
committed
Move global logging variables into nvme_root_t
Move the global logging variables into nvme_root_t to make them settable by the application. Signed-off-by: Hannes Reinecke <[email protected]>
1 parent 24ac082 commit 19b1283

8 files changed

Lines changed: 63 additions & 28 deletions

File tree

libnvme/nvme.i

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -339,29 +339,30 @@ struct nvme_ns {
339339

340340
%extend nvme_root {
341341
nvme_root(const char *config_file = NULL) {
342-
nvme_log_level = LOG_ERR;
343342
return nvme_scan(config_file);
344343
}
345344
~nvme_root() {
346345
nvme_free_tree($self);
347346
}
348347
void log_level(const char *level) {
348+
int log_level = DEFAULT_LOGLEVEL;
349349
if (!strcmp(level,"debug"))
350-
nvme_log_level = LOG_DEBUG;
350+
log_level = LOG_DEBUG;
351351
else if (!strcmp(level, "info"))
352-
nvme_log_level = LOG_INFO;
352+
log_level = LOG_INFO;
353353
else if (!strcmp(level, "notice"))
354-
nvme_log_level = LOG_NOTICE;
354+
log_level = LOG_NOTICE;
355355
else if (!strcmp(level, "warning"))
356-
nvme_log_level = LOG_WARNING;
356+
log_level = LOG_WARNING;
357357
else if (!strcmp(level, "err"))
358-
nvme_log_level = LOG_ERR;
358+
log_level = LOG_ERR;
359359
else if (!strcmp(level, "crit"))
360-
nvme_log_level = LOG_CRIT;
360+
log_level = LOG_CRIT;
361361
else if (!strcmp(level, "alert"))
362-
nvme_log_level = LOG_ALERT;
362+
log_level = LOG_ALERT;
363363
else if (!strcmp(level, "emerg"))
364-
nvme_log_level = LOG_EMERG;
364+
log_level = LOG_EMERG;
365+
nvme_init_logging($self, log_level, false, false);
365366
}
366367
struct nvme_host *hosts() {
367368
return nvme_first_host($self);

src/libnvme.map

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,12 +169,12 @@ LIBNVME_1_0 {
169169
nvme_init_ctrl;
170170
nvme_init_ctrl_list;
171171
nvme_init_dsm_range;
172+
nvme_init_logging;
172173
nvme_init_id_ns;
173174
nvme_io;
174175
nvme_io_passthru64;
175176
nvme_io_passthru;
176177
nvme_lockdown;
177-
nvme_log_level;
178178
nvme_lookup_host;
179179
nvme_lookup_subsystem;
180180
nvme_namespace_attach_ctrls;
@@ -227,6 +227,7 @@ LIBNVME_1_0 {
227227
nvme_path_get_sysfs_dir;
228228
nvme_paths_filter;
229229
nvme_read;
230+
nvme_read_config;
230231
nvme_refresh_topology;
231232
nvme_rescan_ctrl;
232233
nvme_reset_topology;

src/nvme/log.c

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,6 @@
3333
#define LOG_CLOCK CLOCK_MONOTONIC
3434
#endif
3535

36-
int nvme_log_level = DEFAULT_LOGLEVEL;
37-
bool nvme_log_timestamp;
38-
bool nvme_log_pid;
39-
4036
void __attribute__((format(printf, 4, 5)))
4137
__nvme_msg(nvme_root_t r, int lvl,
4238
const char *func, const char *format, ...)
@@ -59,7 +55,7 @@ __nvme_msg(nvme_root_t r, int lvl,
5955
char *message __cleanup__(cleanup_charp) = NULL;
6056
int idx;
6157

62-
if (nvme_log_timestamp) {
58+
if (r->log_timestamp) {
6359
struct timespec now;
6460

6561
clock_gettime(LOG_CLOCK, &now);
@@ -68,13 +64,13 @@ __nvme_msg(nvme_root_t r, int lvl,
6864
} else
6965
*timebuf = '\0';
7066

71-
if (nvme_log_pid)
67+
if (r->log_pid)
7268
snprintf(pidbuf, sizeof(pidbuf), "%ld", (long)getpid());
7369
else
7470
*pidbuf = '\0';
7571

76-
idx = ((nvme_log_timestamp ? 1 : 0) << 2) |
77-
((nvme_log_pid ? 1 : 0) << 1) | (func ? 1 : 0);
72+
idx = ((r->log_timestamp ? 1 : 0) << 2) |
73+
((r->log_pid ? 1 : 0) << 1) | (func ? 1 : 0);
7874

7975
if (asprintf(&header, formats[idx], timebuf, pidbuf, func ? func : "")
8076
== -1)
@@ -85,8 +81,15 @@ __nvme_msg(nvme_root_t r, int lvl,
8581
message = NULL;
8682
va_end(ap);
8783

88-
if (lvl <= nvme_log_level)
84+
if (lvl <= r->log_level)
8985
fprintf(fp, "%s%s", header ? header : "<error>",
9086
message ? message : "<error>");
9187

9288
}
89+
90+
void nvme_init_logging(nvme_root_t r, int lvl, bool log_pid, bool log_tstamp)
91+
{
92+
r->log_level = lvl;
93+
r->log_pid = log_pid;
94+
r->log_timestamp = log_tstamp;
95+
}

src/nvme/log.h

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,6 @@
2121
#define __nvme_log_func NULL
2222
#endif
2323

24-
extern int nvme_log_level;
25-
extern bool nvme_log_timestamp;
26-
extern bool nvme_log_pid;
2724
extern char *nvme_log_message;
2825

2926
void __attribute__((format(printf, 4, 5)))
@@ -36,4 +33,15 @@ __nvme_msg(nvme_root_t r, int lvl, const char *func, const char *format, ...);
3633
format, ##__VA_ARGS__); \
3734
} while (0)
3835

36+
/**
37+
* nvme_init_logging() - initialize logging
38+
* @r: nvme_root_t context
39+
* @lvl: logging level to set
40+
* @log_pid: boolean to enable logging of the PID
41+
* @log_tstamp: boolean to enable logging of the timestamp
42+
*
43+
* Sets the default logging variables for the library.
44+
*/
45+
void nvme_init_logging(nvme_root_t r, int lvl, bool log_pid, bool log_tstamp);
46+
3947
#endif /* _LOG_H */

src/nvme/private.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,9 @@ struct nvme_root {
121121
char *config_file;
122122
struct list_head hosts;
123123
FILE *fp;
124+
int log_level;
125+
bool log_pid;
126+
bool log_timestamp;
124127
bool modified;
125128
};
126129

src/nvme/tree.c

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,14 +118,15 @@ static int nvme_scan_topology(struct nvme_root *r, nvme_scan_filter_t f)
118118
return 0;
119119
}
120120

121-
nvme_root_t nvme_scan_filter(nvme_scan_filter_t f, FILE *fp)
121+
nvme_root_t nvme_scan_filter(nvme_scan_filter_t f, FILE *fp, int log_level)
122122
{
123123
struct nvme_root *r = calloc(1, sizeof(*r));
124124

125125
if (!r) {
126126
errno = ENOMEM;
127127
return NULL;
128128
}
129+
r->log_level = log_level;
129130
r->fp = stderr;
130131
if (fp)
131132
r->fp = fp;
@@ -134,16 +135,22 @@ nvme_root_t nvme_scan_filter(nvme_scan_filter_t f, FILE *fp)
134135
return r;
135136
}
136137

137-
nvme_root_t nvme_scan(const char *config_file)
138+
void nvme_read_config(nvme_root_t r, const char *config_file)
138139
{
139-
nvme_root_t r = nvme_scan_filter(NULL, NULL);
140-
141140
#ifdef CONFIG_JSONC
142141
if (r && config_file) {
143142
json_read_config(r, config_file);
144143
r->config_file = strdup(config_file);
145144
}
146145
#endif
146+
}
147+
148+
nvme_root_t nvme_scan(const char *config_file)
149+
{
150+
nvme_root_t r = nvme_scan_filter(NULL, NULL, DEFAULT_LOGLEVEL);
151+
152+
nvme_read_config(r, config_file);
153+
147154
return r;
148155
}
149156

src/nvme/tree.h

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -970,13 +970,14 @@ const char *nvme_subsystem_get_type(nvme_subsystem_t s);
970970
* nvme_scan_filter() - Scan NVMe topology and apply filter
971971
* @f: filter to apply
972972
* @fp: filepointer for error messages
973+
* @log_level: logging level for this structure
973974
*
974975
* Scans the NVMe topology and filters out the resulting elements
975976
* by applying @f.
976977
*
977978
* Return: nvme_root_t structure holding the resulting elements.
978979
*/
979-
nvme_root_t nvme_scan_filter(nvme_scan_filter_t f, FILE *fp);
980+
nvme_root_t nvme_scan_filter(nvme_scan_filter_t f, FILE *fp, int log_level);
980981

981982
/**
982983
* nvme_host_get_hostnqn() -
@@ -1016,6 +1017,16 @@ void nvme_free_host(nvme_host_t h);
10161017
*/
10171018
nvme_root_t nvme_scan(const char *config_file);
10181019

1020+
/**
1021+
* nvme_read_config() - Read NVMe json configuration file
1022+
* @r: nvme_root_t object
1023+
* @config_file: json configuration file
1024+
*
1025+
* Read in the contents of @config_file and merge them with
1026+
* the elements in @r.
1027+
*/
1028+
void nvme_read_config(nvme_root_t r, const char *config_file);
1029+
10191030
/**
10201031
* nvme_refresh_topology() -
10211032
* @r:

test/test.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,8 @@ int main(int argc, char **argv)
318318

319319
printf("Test filter for common loop back target\n");
320320
nqn_match = "testnqn";
321-
r = nvme_scan_filter(nvme_match_subsysnqn_filter, NULL);
321+
r = nvme_scan_filter(nvme_match_subsysnqn_filter, NULL,
322+
DEFAULT_LOGLEVEL);
322323
nvme_for_each_host(r, h) {
323324
nvme_for_each_subsystem(h, s) {
324325
printf("%s - NQN=%s\n", nvme_subsystem_get_name(s),

0 commit comments

Comments
 (0)