Skip to content

Commit 04c8aba

Browse files
brenns10torvalds
authored andcommitted
dcache: keep dentry_hashtable or d_hash_shift even when not used
The runtime constant feature removes all the users of these variables, allowing the compiler to optimize them away. It's quite difficult to extract their values from the kernel text, and the memory saved by removing them is tiny, and it was never the point of this optimization. Since the dentry_hashtable is a core data structure, it's valuable for debugging tools to be able to read it easily. For instance, scripts built on drgn, like the dentrycache script[1], rely on it to be able to perform diagnostics on the contents of the dcache. Annotate it as used, so the compiler doesn't discard it. Link: https://github.com/oracle-samples/drgn-tools/blob/3afc56146f54d09dfd1f6d3c1b7436eda7e638be/drgn_tools/dentry.py#L325-L355 [1] Fixes: e3c92e8 ("runtime constants: add x86 architecture support") Signed-off-by: Stephen Brennan <stephen.s.brennan@oracle.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 3b9dfd9 commit 04c8aba

1 file changed

Lines changed: 7 additions & 2 deletions

File tree

fs/dcache.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,16 @@ EXPORT_SYMBOL(dotdot_name);
9696
*
9797
* This hash-function tries to avoid losing too many bits of hash
9898
* information, yet avoid using a prime hash-size or similar.
99+
*
100+
* Marking the variables "used" ensures that the compiler doesn't
101+
* optimize them away completely on architectures with runtime
102+
* constant infrastructure, this allows debuggers to see their
103+
* values. But updating these values has no effect on those arches.
99104
*/
100105

101-
static unsigned int d_hash_shift __ro_after_init;
106+
static unsigned int d_hash_shift __ro_after_init __used;
102107

103-
static struct hlist_bl_head *dentry_hashtable __ro_after_init;
108+
static struct hlist_bl_head *dentry_hashtable __ro_after_init __used;
104109

105110
static inline struct hlist_bl_head *d_hash(unsigned long hashlen)
106111
{

0 commit comments

Comments
 (0)