1. 08 10月, 2008 6 次提交
  2. 23 7月, 2008 1 次提交
  3. 18 7月, 2008 8 次提交
  4. 06 7月, 2008 3 次提交
  5. 17 6月, 2008 1 次提交
    • P
      netns: introduce the net_hash_mix "salt" for hashes · 0b441916
      Pavel Emelyanov 提交于
      There are many possible ways to add this "salt", thus I made this
      patch to be the last in the series to change it if required.
      
      Currently I propose to use the struct net pointer itself as this 
      salt, but since this pointer is most often cache-line aligned, shift 
      this right to eliminate the bits, that are most often zeroed.
      
      After this, simply add this mix to prepared hashfn-s.
      
      For CONFIG_NET_NS=n case this salt is 0 and no changes in hashfn
      appear.
      Signed-off-by: NPavel Emelyanov <xemul@openvz.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0b441916
  6. 10 6月, 2008 2 次提交
  7. 15 4月, 2008 1 次提交
    • P
      [NETNS]: The generic per-net pointers. · dec827d1
      Pavel Emelyanov 提交于
      Add the elastic array of void * pointer to the struct net.
      The access rules are simple:
      
       1. register the ops with register_pernet_gen_device to get
          the id of your private pointer
       2. call net_assign_generic() to put the private data on the
          struct net (most preferably this should be done in the
          ->init callback of the ops registered)
       3. do not store any private reference on the net_generic array;
       4. do not change this pointer while the net is alive;
       5. use the net_generic() to get the pointer.
      
      When adding a new pointer, I copy the old array, replace it
      with a new one and schedule the old for kfree after an RCU
      grace period.
      
      Since the net_generic explores the net->gen array inside rcu
      read section and once set the net->gen->ptr[x] pointer never 
      changes, this grants us a safe access to generic pointers.
      
      Quoting Paul: "... RCU is protecting -only- the net_generic 
      structure that net_generic() is traversing, and the [pointer]
      returned by net_generic() is protected by a reference counter 
      in the upper-level struct net."
      Signed-off-by: NPavel Emelyanov <xemul@openvz.org>
      Acked-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      dec827d1
  8. 14 4月, 2008 3 次提交
  9. 04 4月, 2008 1 次提交
  10. 01 4月, 2008 2 次提交
  11. 26 3月, 2008 2 次提交
  12. 08 3月, 2008 3 次提交
  13. 05 3月, 2008 3 次提交
  14. 04 3月, 2008 4 次提交