Files
kernel/include/linux
Tejun Heo 81c173cb5e kernfs: remove KERNFS_REMOVED
KERNFS_REMOVED is used to mark half-initialized and dying nodes so
that they don't show up in lookups and deny adding new nodes under or
renaming it; however, its role overlaps that of deactivation.

It's necessary to deny addition of new children while removal is in
progress; however, this role considerably intersects with deactivation
- KERNFS_REMOVED prevents new children while deactivation prevents new
file operations.  There's no reason to have them separate making
things more complex than necessary.

This patch removes KERNFS_REMOVED.

* Instead of KERNFS_REMOVED, each node now starts its life
  deactivated.  This means that we now use both atomic_add() and
  atomic_sub() on KN_DEACTIVATED_BIAS, which is INT_MIN.  The compiler
  generates an overflow warnings when negating INT_MIN as the negation
  can't be represented as a positive number.  Nothing is actually
  broken but let's bump BIAS by one to avoid the warnings for archs
  which negates the subtrahend..

* A new helper kernfs_active() which tests whether kn->active >= 0 is
  added for convenience and lockdep annotation.  All KERNFS_REMOVED
  tests are replaced with negated kernfs_active() tests.

* __kernfs_remove() is updated to deactivate, but not drain, all nodes
  in the subtree instead of setting KERNFS_REMOVED.  This removes
  deactivation from kernfs_deactivate(), which is now renamed to
  kernfs_drain().

* Sanity check on KERNFS_REMOVED in kernfs_put() is replaced with
  checks on the active ref.

* Some comment style updates in the affected area.

v2: Reordered before removal path restructuring.  kernfs_active()
    dropped and kernfs_get/put_active() used instead.  RB_EMPTY_NODE()
    used in the lookup paths.

v3: Reverted most of v2 except for creating a new node with
    KN_DEACTIVATED_BIAS.

Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-02-07 15:42:41 -08:00
..
2014-01-20 11:55:23 -08:00
2013-12-23 18:34:58 -08:00
2014-01-24 22:39:54 +01:00
2014-01-17 01:59:38 +01:00
2014-01-14 14:54:00 -05:00
2014-01-28 08:09:46 -07:00
2013-12-22 23:14:27 -08:00
2014-01-16 10:23:02 +10:30
2014-01-25 23:58:17 -05:00
2014-01-16 11:15:50 +01:00
2014-01-26 22:48:35 +01:00
2013-12-29 16:34:25 -05:00
2013-12-10 22:58:13 -08:00
2014-02-07 15:42:41 -08:00
2014-01-25 08:55:09 +01:00
2014-01-08 19:03:00 -02:00
2013-12-11 15:52:34 +01:00
2013-12-26 13:29:35 -05:00
2013-12-19 10:17:11 -07:00
2014-01-16 10:23:03 +10:30
2014-01-27 21:02:39 -08:00
2014-01-22 21:57:17 -08:00
2014-01-25 03:14:05 -05:00
2014-01-13 14:29:49 -08:00
2014-01-03 11:22:21 -08:00
2014-01-22 19:36:57 +01:00
2013-12-18 19:04:50 -08:00
2014-01-28 13:20:09 -08:00
2014-01-23 16:37:02 -08:00
2013-12-19 19:09:38 -05:00
2014-01-27 21:02:39 -08:00
2013-12-08 16:56:05 -08:00
2014-01-30 16:56:55 -08:00