Commit 1f2d30b5 authored by Trond Myklebust's avatar Trond Myklebust

NFSv4: Add tracepoints for debugging the idmapper

Add tracepoints to help debug uid/gid mappings to username/group.
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent ca8acf8d
...@@ -49,6 +49,7 @@ ...@@ -49,6 +49,7 @@
#include "internal.h" #include "internal.h"
#include "netns.h" #include "netns.h"
#include "nfs4trace.h"
#define NFS_UINT_MAXLEN 11 #define NFS_UINT_MAXLEN 11
...@@ -849,6 +850,7 @@ int nfs_map_name_to_uid(const struct nfs_server *server, const char *name, size_ ...@@ -849,6 +850,7 @@ int nfs_map_name_to_uid(const struct nfs_server *server, const char *name, size_
if (!uid_valid(*uid)) if (!uid_valid(*uid))
ret = -ERANGE; ret = -ERANGE;
} }
trace_nfs4_map_name_to_uid(name, namelen, id, ret);
return ret; return ret;
} }
...@@ -865,6 +867,7 @@ int nfs_map_group_to_gid(const struct nfs_server *server, const char *name, size ...@@ -865,6 +867,7 @@ int nfs_map_group_to_gid(const struct nfs_server *server, const char *name, size
if (!gid_valid(*gid)) if (!gid_valid(*gid))
ret = -ERANGE; ret = -ERANGE;
} }
trace_nfs4_map_group_to_gid(name, namelen, id, ret);
return ret; return ret;
} }
...@@ -879,6 +882,7 @@ int nfs_map_uid_to_name(const struct nfs_server *server, kuid_t uid, char *buf, ...@@ -879,6 +882,7 @@ int nfs_map_uid_to_name(const struct nfs_server *server, kuid_t uid, char *buf,
ret = nfs_idmap_lookup_name(id, "user", buf, buflen, idmap); ret = nfs_idmap_lookup_name(id, "user", buf, buflen, idmap);
if (ret < 0) if (ret < 0)
ret = nfs_map_numeric_to_string(id, buf, buflen); ret = nfs_map_numeric_to_string(id, buf, buflen);
trace_nfs4_map_uid_to_name(buf, ret, id, ret);
return ret; return ret;
} }
int nfs_map_gid_to_group(const struct nfs_server *server, kgid_t gid, char *buf, size_t buflen) int nfs_map_gid_to_group(const struct nfs_server *server, kgid_t gid, char *buf, size_t buflen)
...@@ -892,5 +896,6 @@ int nfs_map_gid_to_group(const struct nfs_server *server, kgid_t gid, char *buf, ...@@ -892,5 +896,6 @@ int nfs_map_gid_to_group(const struct nfs_server *server, kgid_t gid, char *buf,
ret = nfs_idmap_lookup_name(id, "group", buf, buflen, idmap); ret = nfs_idmap_lookup_name(id, "group", buf, buflen, idmap);
if (ret < 0) if (ret < 0)
ret = nfs_map_numeric_to_string(id, buf, buflen); ret = nfs_map_numeric_to_string(id, buf, buflen);
trace_nfs4_map_gid_to_group(buf, ret, id, ret);
return ret; return ret;
} }
...@@ -627,6 +627,52 @@ DEFINE_NFS4_INODE_EVENT(nfs4_set_security_label); ...@@ -627,6 +627,52 @@ DEFINE_NFS4_INODE_EVENT(nfs4_set_security_label);
DEFINE_NFS4_INODE_EVENT(nfs4_recall_delegation); DEFINE_NFS4_INODE_EVENT(nfs4_recall_delegation);
DEFINE_NFS4_INODE_EVENT(nfs4_delegreturn); DEFINE_NFS4_INODE_EVENT(nfs4_delegreturn);
DECLARE_EVENT_CLASS(nfs4_idmap_event,
TP_PROTO(
const char *name,
int len,
u32 id,
int error
),
TP_ARGS(name, len, id, error),
TP_STRUCT__entry(
__field(int, error)
__field(u32, id)
__dynamic_array(char, name, len > 0 ? len + 1 : 1)
),
TP_fast_assign(
if (len < 0)
len = 0;
__entry->error = error < 0 ? error : 0;
__entry->id = id;
memcpy(__get_dynamic_array(name), name, len);
((char *)__get_dynamic_array(name))[len] = 0;
),
TP_printk(
"error=%d id=%u name=%s",
__entry->error,
__entry->id,
__get_str(name)
)
);
#define DEFINE_NFS4_IDMAP_EVENT(name) \
DEFINE_EVENT(nfs4_idmap_event, name, \
TP_PROTO( \
const char *name, \
int len, \
u32 id, \
int error \
), \
TP_ARGS(name, len, id, error))
DEFINE_NFS4_IDMAP_EVENT(nfs4_map_name_to_uid);
DEFINE_NFS4_IDMAP_EVENT(nfs4_map_group_to_gid);
DEFINE_NFS4_IDMAP_EVENT(nfs4_map_uid_to_name);
DEFINE_NFS4_IDMAP_EVENT(nfs4_map_gid_to_group);
#endif /* _TRACE_NFS4_H */ #endif /* _TRACE_NFS4_H */
#undef TRACE_INCLUDE_PATH #undef TRACE_INCLUDE_PATH
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment