mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 16:48:26 +02:00 
			
		
		
		
	Btrfs: Fix btrfs_drop_extent_cache for skip pinned case
The check for skip pinned case is wrong, it may breaks the while loop too soon. Signed-off-by: Yan Zheng <zheng.yan@oracle.com> Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
		
							parent
							
								
									24bbcf0442
								
							
						
					
					
						commit
						55ef689900
					
				
					 1 changed files with 3 additions and 7 deletions
				
			
		|  | @ -179,18 +179,14 @@ int btrfs_drop_extent_cache(struct inode *inode, u64 start, u64 end, | |||
| 		} | ||||
| 		flags = em->flags; | ||||
| 		if (skip_pinned && test_bit(EXTENT_FLAG_PINNED, &em->flags)) { | ||||
| 			if (em->start <= start && | ||||
| 			    (!testend || em->start + em->len >= start + len)) { | ||||
| 			if (testend && em->start + em->len >= start + len) { | ||||
| 				free_extent_map(em); | ||||
| 				write_unlock(&em_tree->lock); | ||||
| 				break; | ||||
| 			} | ||||
| 			if (start < em->start) { | ||||
| 				len = em->start - start; | ||||
| 			} else { | ||||
| 			start = em->start + em->len; | ||||
| 			if (testend) | ||||
| 				len = start + len - (em->start + em->len); | ||||
| 				start = em->start + em->len; | ||||
| 			} | ||||
| 			free_extent_map(em); | ||||
| 			write_unlock(&em_tree->lock); | ||||
| 			continue; | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Yan, Zheng
						Yan, Zheng