From Kerrighed

We have in fact 3 kinds of "locking":

  • The ctnr_object_lock/unlock functions or directly spin_lock/unlock on an object, lock an object to guaranty atomicity in the presence of an SMP machine.
  • The frozen mechanism. It is used to "lock" an object between a get or grab and a put. That means : does not touch the object, it is being used by someone.
  • The pin mechanism. It's an optimization. When an object arrives on a node and some processes are waiting for it, the object is "pined" until all the waiting processes have at least accessed the object once. This avoid an object to arrive on a node and being invalidated just after, before a waiting process had a chance to access it.