On Thu, Jun 27, 2019 at 08:13:57PM +0800, Coly Li wrote: > > Do you know how the nr_stripes, stripe_sectors_dirty and > > full_dirty_stripes bitmaps work together to make a best-effort of writing > > full stripes to the disk, and maybe you can explain under what > > circumstances partial stripes would be written? > Hi Eric, > > I don't have satisfied answer to the above question. But if upper layers > don't issue I/Os with full stripe aligned, bcache cannot do anything > more than merging adjacent blocks. But for random I/Os, only a few part > of I/O requests can be merged, after writeback thread working for a > while, almost all writeback I/Os are small and not stripe-aligned, even > they are ordered by LBA address number. > > Thanks. I wonder if it'd make sense for bcache on stripe-oriented backing devices to also try to readahead (or read-after) whole stripes from the backing device so that they're present in the cache and then write out a whole stripe even if the whole stripe isn't dirty. Working with whole stripes on a RAID6 makes a huge performance difference. -- Vojtech Pavlik VP SUSE Labs