diff options
Diffstat (limited to 'fs/drop_caches.c')
| -rw-r--r-- | fs/drop_caches.c | 18 | 
1 files changed, 15 insertions, 3 deletions
diff --git a/fs/drop_caches.c b/fs/drop_caches.c index 9fd702f5bfb..1de7294aad2 100644 --- a/fs/drop_caches.c +++ b/fs/drop_caches.c @@ -50,7 +50,7 @@ static void drop_slab(void)  	} while (nr_objects > 10);  } -int drop_caches_sysctl_handler(ctl_table *table, int write, +int drop_caches_sysctl_handler(struct ctl_table *table, int write,  	void __user *buffer, size_t *length, loff_t *ppos)  {  	int ret; @@ -59,10 +59,22 @@ int drop_caches_sysctl_handler(ctl_table *table, int write,  	if (ret)  		return ret;  	if (write) { -		if (sysctl_drop_caches & 1) +		static int stfu; + +		if (sysctl_drop_caches & 1) {  			iterate_supers(drop_pagecache_sb, NULL); -		if (sysctl_drop_caches & 2) +			count_vm_event(DROP_PAGECACHE); +		} +		if (sysctl_drop_caches & 2) {  			drop_slab(); +			count_vm_event(DROP_SLAB); +		} +		if (!stfu) { +			pr_info("%s (%d): drop_caches: %d\n", +				current->comm, task_pid_nr(current), +				sysctl_drop_caches); +		} +		stfu |= sysctl_drop_caches & 4;  	}  	return 0;  }  | 
