mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	md/raid1: properly indicate failure when ending a failed write request
This patch addresses a data corruption bug in raid1 arrays using bitmaps.
Without this fix, the bitmap bits for the failed I/O end up being cleared.
Since we are in the failure leg of raid1_end_write_request, the request
either needs to be retried (R1BIO_WriteError) or failed (R1BIO_Degraded).
Fixes: eeba6809d8 ("md/raid1: end bio when the device faulty")
Cc: stable@vger.kernel.org # v5.2+
Signed-off-by: Paul Clements <paul.clements@us.sios.com>
Signed-off-by: Song Liu <song@kernel.org>
			
			
This commit is contained in:
		
							parent
							
								
									f7c7a2f9a2
								
							
						
					
					
						commit
						2417b9869b
					
				
					 1 changed files with 2 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -478,6 +478,8 @@ static void raid1_end_write_request(struct bio *bio)
 | 
			
		|||
		if (!test_bit(Faulty, &rdev->flags))
 | 
			
		||||
			set_bit(R1BIO_WriteError, &r1_bio->state);
 | 
			
		||||
		else {
 | 
			
		||||
			/* Fail the request */
 | 
			
		||||
			set_bit(R1BIO_Degraded, &r1_bio->state);
 | 
			
		||||
			/* Finished with this branch */
 | 
			
		||||
			r1_bio->bios[mirror] = NULL;
 | 
			
		||||
			to_put = bio;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue