mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 08:44:41 +00:00 
			
		
		
		
	vfs: make do_unlinkat retry once on ESTALE errors
Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
		
							parent
							
								
									c6ee920698
								
							
						
					
					
						commit
						5d18f8133c
					
				
					 1 changed files with 8 additions and 2 deletions
				
			
		
							
								
								
									
										10
									
								
								fs/namei.c
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								fs/namei.c
									
										
									
									
									
								
							|  | @ -3440,8 +3440,9 @@ static long do_unlinkat(int dfd, const char __user *pathname) | |||
| 	struct dentry *dentry; | ||||
| 	struct nameidata nd; | ||||
| 	struct inode *inode = NULL; | ||||
| 
 | ||||
| 	name = user_path_parent(dfd, pathname, &nd, 0); | ||||
| 	unsigned int lookup_flags = 0; | ||||
| retry: | ||||
| 	name = user_path_parent(dfd, pathname, &nd, lookup_flags); | ||||
| 	if (IS_ERR(name)) | ||||
| 		return PTR_ERR(name); | ||||
| 
 | ||||
|  | @ -3479,6 +3480,11 @@ exit2: | |||
| exit1: | ||||
| 	path_put(&nd.path); | ||||
| 	putname(name); | ||||
| 	if (retry_estale(error, lookup_flags)) { | ||||
| 		lookup_flags |= LOOKUP_REVAL; | ||||
| 		inode = NULL; | ||||
| 		goto retry; | ||||
| 	} | ||||
| 	return error; | ||||
| 
 | ||||
| slashes: | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Jeff Layton
						Jeff Layton