Skip to content
  1. Feb 15, 2018
  2. Feb 14, 2018
  3. Feb 13, 2018
    • David S. Miller's avatar
      Merge branch 'Replacing-net_mutex-with-rw_semaphore' · 885842d8
      David S. Miller authored
      
      
      Kirill Tkhai says:
      
      ====================
      Replacing net_mutex with rw_semaphore
      
      this is the third version of the patchset introducing net_sem
      instead of net_mutex. The patchset adds net_sem in addition
      to net_mutex and allows pernet_operations to be "async". This
      flag means, the pernet_operations methods are safe to be
      executed with any other pernet_operations (un)initializing
      another net.
      
      If there are only async pernet_operations in the system,
      net_mutex is not used either for setup_net() or for cleanup_net().
      
      The pernet_operations converted in this patchset allow
      to create minimal .config to have network working, and
      the changes improve the performance like you may see
      below:
      
          %for i in {1..10000}; do unshare -n bash -c exit; done
      
          *before*
          real 1m40,377s
          user 0m9,672s
          sys 0m19,928s
      
          *after*
          real 0m17,007s
          user 0m5,311s
          sys 0m11,779
      
          (5.8 times faster)
      
      In the future, when all pernet_operations become async,
      we'll just remove this "async" field tree-wide.
      
      All the new logic is concentrated in patches [1-5/32].
      The rest of patches converts specific operations:
      review, rationale of they can be converted, and setting
      of async flag.
      
      Kirill
      
      v3: Improved patches descriptions. Added comment into [5/32].
      Added [32/32] converting netlink_tap_net_ops (new pernet operations
      introduced in 2018).
      
      v2: Single patch -> patchset with rationale of every conversion
      ====================
      
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      885842d8