> On Jul 21, 2023, at 6:19 AM, Steven Rostedt <rostedt@xxxxxxxxxxx> 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. ]