__btrfs_map_block() should return all mirror on WRITE, REQ_GET_READ_MIRRORS, and RECOVERY case, whether need_raid_map set or not. need_raid_map only used to control is to set bbio->raid_map. Current code works right becuase there is only one caller can trigger above bug, which is readahead, and this function happened to bypass on less mirror. But after we fixed __btrfs_map_block(), readahead will be really works, and exit with warning at another bug. This patchset fixed __btrfs_map_block(), and disable raid56 readahead temp temporary, (actually, it already disable by this bug), and I'll fix raid56 readahead next. Zhao Lei (4): btrfs: Disable raid56 readahead btrfs: return all mirror whether need_raid_map set or not btrfs: Small cleanup for get index_srcdev loop btrfs: Use direct way to determine raid56 write/recover mode fs/btrfs/reada.c | 5 +++++ fs/btrfs/volumes.c | 50 ++++++++++++++++++++++++-------------------------- 2 files changed, 29 insertions(+), 26 deletions(-) -- 1.8.5.1 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
