mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-29 17:25:38 +00:00
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:3afc56146f/drgn_tools/dentry.py (L325-L355)
[1] Fixes:e3c92e8171
("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>
This commit is contained in:
parent
3b9dfd9e59
commit
04c8abae1b
@ -96,11 +96,16 @@ EXPORT_SYMBOL(dotdot_name);
|
||||
*
|
||||
* This hash-function tries to avoid losing too many bits of hash
|
||||
* information, yet avoid using a prime hash-size or similar.
|
||||
*
|
||||
* Marking the variables "used" ensures that the compiler doesn't
|
||||
* optimize them away completely on architectures with runtime
|
||||
* constant infrastructure, this allows debuggers to see their
|
||||
* values. But updating these values has no effect on those arches.
|
||||
*/
|
||||
|
||||
static unsigned int d_hash_shift __ro_after_init;
|
||||
static unsigned int d_hash_shift __ro_after_init __used;
|
||||
|
||||
static struct hlist_bl_head *dentry_hashtable __ro_after_init;
|
||||
static struct hlist_bl_head *dentry_hashtable __ro_after_init __used;
|
||||
|
||||
static inline struct hlist_bl_head *d_hash(unsigned long hashlen)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user