Lines Matching defs:layout

222  * raid set level, layout and chunk sectors backup/restore
300 {"raid4", "raid4 (dedicated first parity disk)", 1, 2, 5, ALGORITHM_PARITY_0}, /* raid4 layout = raid5_0 */
431 static bool __is_raid10_far(int layout);
527 #define RAID10_FAR_COPIES_SHIFT 8 /* raid10 # far copies shift (2nd byte of layout) */
529 /* Return md raid10 near copies for @layout */
530 static unsigned int __raid10_near_copies(int layout)
532 return layout & 0xFF;
535 /* Return md raid10 far copies for @layout */
536 static unsigned int __raid10_far_copies(int layout)
538 return __raid10_near_copies(layout >> RAID10_FAR_COPIES_SHIFT);
541 /* Return true if md raid10 offset for @layout */
542 static bool __is_raid10_offset(int layout)
544 return !!(layout & RAID10_OFFSET);
547 /* Return true if md raid10 near for @layout */
548 static bool __is_raid10_near(int layout)
550 return !__is_raid10_offset(layout) && __raid10_near_copies(layout) > 1;
553 /* Return true if md raid10 far for @layout */
554 static bool __is_raid10_far(int layout)
556 return !__is_raid10_offset(layout) && __raid10_far_copies(layout) > 1;
559 /* Return md raid10 layout string for @layout */
560 static const char *raid10_md_layout_to_format(int layout)
568 if (__is_raid10_offset(layout))
571 if (__raid10_near_copies(layout) > 1)
574 if (__raid10_far_copies(layout) > 1)
593 /* Return md raid10 copies for @layout */
594 static unsigned int raid10_md_layout_to_copies(int layout)
596 return max(__raid10_near_copies(layout), __raid10_far_copies(layout));
637 static bool __got_raid10(struct raid_type *rtp, const int layout)
643 return __is_raid10_near(layout);
645 return __is_raid10_offset(layout);
647 return __is_raid10_far(layout);
668 /* Return raid_type for @name based derived from @level and @layout */
669 static struct raid_type *get_raid_type_by_ll(const int level, const int layout)
674 /* RAID10 special checks based on @layout flags/properties */
676 (__got_raid10(rtp, layout) || rtp->algorithm == layout))
717 mddev->new_layout = mddev->layout;
730 mddev->layout = mddev->new_layout;
768 rs->md.layout = raid_type->algorithm;
769 rs->md.new_layout = rs->md.layout;
1514 rs->ti->error = "Failed to recognize new raid10 layout";
1780 if (__is_raid10_offset(mddev->layout))
1783 near_copies = __raid10_near_copies(mddev->layout);
1797 __raid10_far_copies(mddev->layout) > 1)
1805 max(near_copies, __raid10_far_copies(mddev->layout)) == mddev->raid_disks)
1844 mddev->layout == ALGORITHM_PARITY_N)
1851 mddev->layout == ALGORITHM_PARITY_N)
1856 mddev->layout == ALGORITHM_PARITY_N)
1866 ((mddev->layout == ALGORITHM_PARITY_N && mddev->new_layout == ALGORITHM_PARITY_N) ||
1874 mddev->layout == ALGORITHM_PARITY_N)
1879 mddev->layout == ALGORITHM_PARITY_N)
1884 ((mddev->layout == ALGORITHM_PARITY_N && mddev->new_layout == ALGORITHM_PARITY_N) ||
1903 /* True if layout is set to reshape. */
1907 rs->md.new_layout != rs->md.layout ||
1981 __le32 layout;
2012 * them from old to new layout
2149 sb->layout = cpu_to_le32(mddev->layout);
2260 mddev->layout = le32_to_cpu(sb->layout);
2268 /* Superblock is authoritative wrt given raid set layout! */
2289 rs->raid_type = get_raid_type_by_ll(mddev->level, mddev->layout);
2298 struct raid_type *rt_cur = get_raid_type_by_ll(mddev->level, mddev->layout);
2309 DMERR("Reshaping raid sets not yet supported by metadata. (raid layout change keeping level)");
2310 if (mddev->layout != mddev->new_layout) {
2312 DMERR(" current layout %s vs new layout %s",
2315 DMERR(" current layout 0x%X vs new layout 0x%X",
2316 le32_to_cpu(sb->layout), mddev->new_layout);
2325 DMERR(" Old layout: %s w/ %u copies",
2326 raid10_md_layout_to_format(mddev->layout),
2327 raid10_md_layout_to_copies(mddev->layout));
2328 DMERR(" New layout: %s w/ %u copies",
2427 if (rs_is_raid10(rs) && __is_raid10_near(mddev->layout)) {
2428 if (mddev->raid_disks % __raid10_near_copies(mddev->layout) ||
2676 * Changing RAID layout or chunk size -> toggle offsets
2751 /* raid0 -> raid10_far layout */
2752 mddev->layout = raid10_format_to_md_layout(rs, ALGORITHM_RAID10_FAR,
2755 /* raid1 -> raid10_near layout */
2756 mddev->layout = raid10_format_to_md_layout(rs, ALGORITHM_RAID10_NEAR,
2791 __is_raid10_near(mddev->layout) &&
2793 rs->raid10_copies != __raid10_near_copies(mddev->layout)) {
2807 mddev->layout = raid10_format_to_md_layout(rs, ALGORITHM_RAID10_NEAR,
2809 mddev->new_layout = mddev->layout;
2844 * - change raid layout
2860 /* Ignore impossible layout change whilst adding/removing disks */
2862 mddev->layout != mddev->new_layout) {
2863 DMINFO("Ignoring invalid layout change with delta_disks=%d", rs->delta_disks);
2864 mddev->new_layout = mddev->layout;
2914 /* Change layout and/or chunk size */
2917 * Reshape layout (e.g. raid5_ls -> raid5_n) and/or chunk size:
2919 * keeping number of disks and do layout change ->
2930 * case of layout/chunksize change (for disk
2954 * at the end of a reshape but not (yet) reset the layout configuration
3084 * Backup any new raid set level, layout, ...
3116 /* Restore any requested new layout for conversion decision */
3299 /* Restore new, ctr requested layout to perform check */
3574 * changing the raid layout or the number of
3670 raid10_md_layout_to_copies(mddev->layout));
3673 raid10_md_layout_to_format(mddev->layout));