ext4: don't hold spinlock while calling ext4_issue_discard()
We can't hold the block group spinlock because we ext4_issue_discard() calls wait and hence can get rescheduled. Google-Bug-Id: 3017678 Signed-off-by: Lukas Czerner <lczerner@redhat.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
		
					parent
					
						
							
								5829870982
							
						
					
				
			
			
				commit
				
					
						53fdcf992d
					
				
			
		
					 1 changed files with 2 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -4696,12 +4696,12 @@ do_more:
 | 
			
		|||
		 * with group lock held. generate_buddy look at
 | 
			
		||||
		 * them with group lock_held
 | 
			
		||||
		 */
 | 
			
		||||
		if (test_opt(sb, DISCARD))
 | 
			
		||||
			ext4_issue_discard(sb, block_group, bit, count);
 | 
			
		||||
		ext4_lock_group(sb, block_group);
 | 
			
		||||
		mb_clear_bits(bitmap_bh->b_data, bit, count);
 | 
			
		||||
		mb_free_blocks(inode, &e4b, bit, count);
 | 
			
		||||
		ext4_mb_return_to_preallocation(inode, &e4b, block, count);
 | 
			
		||||
		if (test_opt(sb, DISCARD))
 | 
			
		||||
			ext4_issue_discard(sb, block_group, bit, count);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ret = ext4_free_blks_count(sb, gdp) + count;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue