Re: [PATCH] md: make md_flush_request() more readable

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, May 26, 2024 at 02:56:22AM +0800, linan666@xxxxxxxxxxxxxxx wrote:
> -		bio = NULL;
> -	}
> -	spin_unlock_irq(&mddev->lock);
> -
> -	if (!bio) {
> +		spin_unlock_irq(&mddev->lock);
>  		INIT_WORK(&mddev->flush_work, submit_flushes);
>  		queue_work(md_wq, &mddev->flush_work);
>  	} else {
>  		/* flush was performed for some other bio while we waited. */
> +		spin_unlock_irq(&mddev->lock);
>  		if (bio->bi_iter.bi_size == 0)
>  			/* an empty barrier - all done */

This stil looks like a somwwhat odd flow  Why not go all the way
and turn it into:


	...
		queue_work(md_wq, &mddev->flush_work);
		return true;
	}

	/* flush was performed for some other bio while we waited. */
	spin_unlock_irq(&mddev->lock);
	if (bio->bi_iter.bi_size == 0) {
		/* pure flush without data - all done */
		bio_endio(bio);
		return true;
	}
	bio->bi_opf &= ~REQ_PREFLUSH;
	return false;
}





[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux