Hi Eric,

On Monday 12 December 2016 11:57 PM, Eric W. Biederman wrote:
Hari Bathini <hbath...@linux.vnet.ibm.com> writes:

With the advert of container technologies like docker, that depend
on namespaces for isolation, there is a need for tracing support for
namespaces. This patch introduces new PERF_RECORD_NAMESPACES event
for tracing based on namespaces related info.
diff --git a/include/uapi/linux/perf_event.h b/include/uapi/linux/perf_event.h
index c66a485..2a48fc6 100644
--- a/include/uapi/linux/perf_event.h
+++ b/include/uapi/linux/perf_event.h
@@ -344,7 +344,8 @@ struct perf_event_attr {
                                use_clockid    :  1, /* use @clockid for time 
fields */
                                context_switch :  1, /* context switch data */
                                write_backward :  1, /* Write ring buffer from 
end to beginning */
-                               __reserved_1   : 36;
+                               namespaces     :  1, /* include namespaces data 
*/
+                               __reserved_1   : 35;
union {
                __u32           wakeup_events;    /* wakeup every n events */
@@ -610,6 +611,18 @@ struct perf_event_header {
        __u16   size;
  };
+enum {
+       NET_NS_INDEX            = 0,
+       UTS_NS_INDEX            = 1,
+       IPC_NS_INDEX            = 2,
+       PID_NS_INDEX            = 3,
+       USER_NS_INDEX           = 4,
+       MNT_NS_INDEX            = 5,
+       CGROUP_NS_INDEX         = 6,
+
+       NAMESPACES_MAX,         /* maximum available namespaces */
+};
+
  enum perf_event_type {
/*
@@ -862,6 +875,18 @@ enum perf_event_type {
         */
        PERF_RECORD_SWITCH_CPU_WIDE             = 15,
+ /*
+        * struct {
+        *      struct perf_event_header        header;
+        *
+        *      u32                             pid, tid;
+        *      u64                             dev_num;
+        *      u64                             inode_num[NAMESPACES_MAX];
There needs to be one device number per inode.  While it is true that
today the device number is always the same.  That is not necessarily so.
I reserve the right to have the device number vary per namespace
so that I don't need to implement a namespace of namespaces.

These are st_dev and st_ino of the inode for the namespace.

Do you mean..

    st_dev = encode_dev(inode->i_sb->s_dev); ?
    st_ino = inode->i_ino; ?

Thanks
Hari

Reply via email to