On 2019/7/26 下午6:39, David Sterba wrote: > On Fri, Jul 26, 2019 at 07:41:41AM +0800, Qu Wenruo wrote: >> >> >> On 2019/7/26 上午2:37, David Sterba wrote: >>> On Thu, Jul 18, 2019 at 02:27:49PM +0800, Qu Wenruo wrote: >>>> RAID10 can accept as much as half of its disks to be missing, as long as >>>> each sub stripe still has a good mirror. >>> >>> Can you please make a test case for that? >> >> Fstests one or btrfs-progs one? > > For fstests. OK, that test case in fact exposed a long-existing bug, we can't create degraded chunks. So if we're replacing the missing devices on a 4 disk RAID10 btrfs, we will hit ENOSPC as we can't find 4 devices to fulfill a new chunk. And it will finally trigger transaction abort. Please discard this patch until we solve that problem. Thanks, Qu > >>> I think the number of devices that can be lost can be higher than a half >>> in some extreme cases: one device has copies of all stripes, 2nd copy >>> can be scattered randomly on the other devices, but that's highly >>> unlikely to happen. >>> >>> On average it's same as raid1, but the more exact check can potentially >>> utilize the stripe layout. >>> >> That will be at extent level, to me it's an internal level violation, >> far from what we want to improve. > > Ah I don't mean to go the extent level, as you implemented it is enough > and an improvement. >