On Jul 21, 2023, at 6:19 AM, Steven Rostedt rostedt@goodmis.org wrote:
union {
struct list_head del_list; struct rcu_head rcu;
struct llist_node llist; /* For freeing after RCU */
unsigned long is_freed; /* Freed if one of the above is set */
I changed the freeing around. The dentries are freed before returning from eventfs_remove_dir().
I also added a "is_freed" field that is part of the union and is set if list elements have content. Note, since the union was criticized before, I will state the entire purpose of doing this patch set is to save memory. This structure will be used for every event file. What's the point of getting rid of dentries if we are replacing it with something just as big? Anyway, struct dentry does the exact same thing!
Hey, don’t shoot me…
[And admittedly, I didn’t review the whole series after v1.]
I understand your position, but I think that at least is_freed should not be in the union, and you can just put it after umode_t.
Even for the matter of size, it should not matter in most architectures since umode_t is 16-bit, as natural alignment is at least 32-bits.
[ And “bool" is clearer type for is_freed. ]