|
@@ -1026,8 +1026,9 @@ static int super_90_load(struct md_rdev *rdev, struct md_rdev *refdev, int minor
|
|
|
* (not needed for Linear and RAID0 as metadata doesn't
|
|
|
* record this size)
|
|
|
*/
|
|
|
- if (rdev->sectors >= (2ULL << 32) && sb->level >= 1)
|
|
|
- rdev->sectors = (2ULL << 32) - 2;
|
|
|
+ if (IS_ENABLED(CONFIG_LBDAF) && (u64)rdev->sectors >= (2ULL << 32) &&
|
|
|
+ sb->level >= 1)
|
|
|
+ rdev->sectors = (sector_t)(2ULL << 32) - 2;
|
|
|
|
|
|
if (rdev->sectors < ((sector_t)sb->size) * 2 && sb->level >= 1)
|
|
|
/* "this cannot possibly happen" ... */
|
|
@@ -1320,8 +1321,9 @@ super_90_rdev_size_change(struct md_rdev *rdev, sector_t num_sectors)
|
|
|
/* Limit to 4TB as metadata cannot record more than that.
|
|
|
* 4TB == 2^32 KB, or 2*2^32 sectors.
|
|
|
*/
|
|
|
- if (num_sectors >= (2ULL << 32) && rdev->mddev->level >= 1)
|
|
|
- num_sectors = (2ULL << 32) - 2;
|
|
|
+ if (IS_ENABLED(CONFIG_LBDAF) && (u64)num_sectors >= (2ULL << 32) &&
|
|
|
+ rdev->mddev->level >= 1)
|
|
|
+ num_sectors = (sector_t)(2ULL << 32) - 2;
|
|
|
md_super_write(rdev->mddev, rdev, rdev->sb_start, rdev->sb_size,
|
|
|
rdev->sb_page);
|
|
|
md_super_wait(rdev->mddev);
|