mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 14:06:03 +00:00 
			
		
		
		
	 26bcbf965f
			
		
	
	
		26bcbf965f
		
	
	
	
	
		
			
			Currently lockd directly access the file_lock_list from fs/locks.c. It does so to mark locks granted or reclaimable. This is very suboptimal, because a) lockd needs to poke into locks.c internals, and b) it needs to iterate over all locks in the system for marking locks granted or reclaimable. This patch adds lists for granted and reclaimable locks to the nlm_host structure instead, and adds locks to those. nlmclnt_lock: now adds the lock to h_granted instead of setting the NFS_LCK_GRANTED, still O(1) nlmclnt_mark_reclaim: goes away completely, replaced by a list_splice_init. Complexity reduced from O(locks in the system) to O(1) reclaimer: iterates over h_reclaim now, complexity reduced from O(locks in the system) to O(locks per nlm_host) Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
		
			
				
	
	
		
			25 lines
		
	
	
		
			340 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			340 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _NFS_FS_I
 | |
| #define _NFS_FS_I
 | |
| 
 | |
| #include <asm/types.h>
 | |
| #include <linux/list.h>
 | |
| #include <linux/nfs.h>
 | |
| 
 | |
| struct nlm_lockowner;
 | |
| 
 | |
| /*
 | |
|  * NFS lock info
 | |
|  */
 | |
| struct nfs_lock_info {
 | |
| 	u32		state;
 | |
| 	struct nlm_lockowner *owner;
 | |
| 	struct list_head list;
 | |
| };
 | |
| 
 | |
| struct nfs4_lock_state;
 | |
| struct nfs4_lock_info {
 | |
| 	struct nfs4_lock_state *owner;
 | |
| };
 | |
| 
 | |
| #endif
 |