Skip to content
Snippets Groups Projects
Commit 0e064a3d authored by Eric Mei's avatar Eric Mei
Browse files

branch: HEAD

add debugging level for user space lgss_keyring.
parent 44ae1470
No related branches found
No related tags found
No related merge requests found
......@@ -298,7 +298,7 @@ int gss_do_ctx_init_rpc(__user char *buffer, unsigned long count)
down_read(&obd->u.cli.cl_sem);
if (obd->u.cli.cl_import == NULL) {
CERROR("import has gone\n");
CERROR("obd %s: import has gone\n", obd->obd_name);
RETURN(-EINVAL);
}
imp = class_import_get(obd->u.cli.cl_import);
......
......@@ -64,6 +64,7 @@
#include "gss_api.h"
static struct proc_dir_entry *gss_proc_root = NULL;
static struct proc_dir_entry *gss_proc_lk = NULL;
/*
* statistic of "out-of-sequence-window"
......@@ -146,45 +147,81 @@ static int gss_proc_write_secinit(struct file *file, const char *buffer,
static struct lprocfs_vars gss_lprocfs_vars[] = {
{ "replays", gss_proc_read_oos, NULL },
{ "init_channel", NULL, gss_proc_write_secinit, NULL },
{ "init_channel", NULL, gss_proc_write_secinit, NULL, NULL, 0222 },
{ NULL }
};
/*
* for userspace helper lgss_keyring.
*
* debug_level: [0, 4], defined in utils/gss/lgss_utils.h
*/
static int gss_lk_debug_level = 1;
static int gss_lk_proc_read_dl(char *page, char **start, off_t off,
int count, int *eof, void *data)
{
return snprintf(page, count, "%u\n", gss_lk_debug_level);
}
static int gss_lk_proc_write_dl(struct file *file, const char *buffer,
unsigned long count, void *data)
{
int val, rc;
rc = lprocfs_write_helper(buffer, count, &val);
if (rc < 0)
return rc;
if (val < 0 || val > 4)
return -ERANGE;
gss_lk_debug_level = val;
return count;
}
static struct lprocfs_vars gss_lk_lprocfs_vars[] = {
{ "debug_level", gss_lk_proc_read_dl, gss_lk_proc_write_dl, NULL },
{ NULL }
};
void gss_exit_lproc(void)
{
if (gss_proc_lk) {
lprocfs_remove(&gss_proc_lk);
gss_proc_lk = NULL;
}
if (gss_proc_root) {
lprocfs_remove(&gss_proc_root);
gss_proc_root = NULL;
}
}
int gss_init_lproc(void)
{
struct proc_dir_entry *ent;
int rc;
int rc;
spin_lock_init(&gss_stat_oos.oos_lock);
gss_proc_root = lprocfs_register("gss", sptlrpc_proc_root,
gss_lprocfs_vars, NULL);
if (IS_ERR(gss_proc_root)) {
rc = PTR_ERR(gss_proc_root);
gss_proc_root = NULL;
CERROR("failed to initialize lproc entries: %d\n", rc);
return rc;
GOTO(err_out, rc = PTR_ERR(gss_proc_root));
}
/* FIXME
* here we should hold proc_subdir_lock which is not exported
*/
ent = gss_proc_root->subdir;
while (ent != NULL) {
if (strcmp(ent->name, "init_channel") == 0) {
ent->mode |= 0222;
break;
}
gss_proc_lk = lprocfs_register("lgss_keyring", gss_proc_root,
gss_lk_lprocfs_vars, NULL);
if (IS_ERR(gss_proc_lk)) {
gss_proc_lk = NULL;
GOTO(err_out, rc = PTR_ERR(gss_proc_root));
}
return 0;
}
void gss_exit_lproc(void)
{
if (gss_proc_root) {
lprocfs_remove(&gss_proc_root);
gss_proc_root = NULL;
}
err_out:
CERROR("failed to initialize gss lproc entries: %d\n", rc);
gss_exit_lproc();
return rc;
}
......@@ -595,6 +595,28 @@ static int parse_callout_info(const char *coinfo,
return 0;
}
#define LOG_LEVEL_PATH "/proc/fs/lustre/sptlrpc/gss/lgss_keyring/debug_level"
static void set_log_level()
{
FILE *file;
unsigned int level;
file = fopen(LOG_LEVEL_PATH, "r");
if (file == NULL)
return;
if (fscanf(file, "%u", &level) != 1)
goto out;
if (level >= LL_MAX)
goto out;
lgss_set_loglevel(level);
out:
fclose(file);
}
/****************************************
* main process *
****************************************/
......@@ -609,6 +631,9 @@ int main(int argc, char *argv[])
struct lgss_mech_type *mech;
struct lgss_cred *cred;
set_log_level();
logmsg(LL_TRACE, "start parsing parameters\n");
/*
* parse & sanity check upcall parameters
* expected to be called with:
......
......@@ -96,6 +96,8 @@ typedef enum {
extern loglevel_t g_log_level;
void lgss_set_loglevel(loglevel_t level);
void __logmsg(loglevel_t level, const char *func, const char *format, ...);
void __logmsg_gss(loglevel_t level, const char *func, const gss_OID mech,
uint32_t major, uint32_t minor, const char *format, ...);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment