NFSv4: Add tracepoints for debugging the idmapper
Add tracepoints to help debug uid/gid mappings to username/group. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
@@ -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_
|
|||||||
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
|
|||||||
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,
|
|||||||
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,
|
|||||||
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);
|
|||||||
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
|
||||||
|
Reference in New Issue
Block a user