As we are adding more fields, change from positional to named declarations. Signed-off-by: Jan Tulak <jtulak@xxxxxxxxxx> --- mkfs/xfs_mkfs.c | 594 +++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 519 insertions(+), 75 deletions(-) diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index 58cc24a..b0e5d75 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -220,7 +220,7 @@ struct opt_params { long long invalid_value; long long at_value; const char *message; - } conflicts [MAX_CONFLICTS]; + } conflicts [MAX_CONFLICTS]; long long minval; long long maxval; long long defaultval; @@ -237,7 +237,13 @@ struct opt_params { }, .subopt_params = { { .index = B_LOG, - .conflicts = { {OPT_B, B_SIZE, false, false, 0, 0}, + .conflicts = { {.opt = OPT_B, + .subopt = B_SIZE, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .minval = XFS_MIN_BLOCKSIZE_LOG, .maxval = XFS_MAX_BLOCKSIZE_LOG, @@ -246,7 +252,13 @@ struct opt_params { { .index = B_SIZE, .convert = true, .is_power_2 = true, - .conflicts = { {OPT_B, B_LOG, false, false, 0, 0}, + .conflicts = { {.opt = OPT_B, + .subopt = B_LOG, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .minval = XFS_MIN_BLOCKSIZE, .maxval = XFS_MAX_BLOCKSIZE, @@ -277,7 +289,13 @@ struct opt_params { }, .subopt_params = { { .index = D_AGCOUNT, - .conflicts = { {OPT_D, D_AGSIZE, false, false, 0, 0}, + .conflicts = { {.opt = OPT_D, + .subopt = D_AGSIZE, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .minval = 1, .maxval = XFS_MAX_AGNUMBER, @@ -301,25 +319,67 @@ struct opt_params { .defaultval = SUBOPT_NEEDS_VAL, }, { .index = D_SUNIT, - .conflicts = { {OPT_D, D_NOALIGN, false, false, 0, 0}, - {OPT_D, D_SU, false, false, 0, 0}, - {OPT_D, D_SW, false, false, 0, 0}, + .conflicts = { {.opt = OPT_D, + .subopt = D_NOALIGN, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, + {.opt = OPT_D, + .subopt = D_SU, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, + {.opt = OPT_D, + .subopt = D_SW, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .minval = 0, .maxval = UINT_MAX, .defaultval = SUBOPT_NEEDS_VAL, }, { .index = D_SWIDTH, - .conflicts = { {OPT_D, D_NOALIGN, false, false, 0, 0}, - {OPT_D, D_SU, false, false, 0, 0}, - {OPT_D, D_SW, false, false, 0, 0}, + .conflicts = { {.opt = OPT_D, + .subopt = D_NOALIGN, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, + {.opt = OPT_D, + .subopt = D_SU, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, + {.opt = OPT_D, + .subopt = D_SW, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .minval = 0, .maxval = UINT_MAX, .defaultval = SUBOPT_NEEDS_VAL, }, { .index = D_AGSIZE, - .conflicts = { {OPT_D, D_AGCOUNT, false, false, 0, 0}, + .conflicts = { {.opt = OPT_D, + .subopt = D_AGCOUNT, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .convert = true, .minval = XFS_AG_MIN_BYTES, @@ -327,9 +387,27 @@ struct opt_params { .defaultval = SUBOPT_NEEDS_VAL, }, { .index = D_SU, - .conflicts = { {OPT_D, D_NOALIGN, false, false, 0, 0}, - {OPT_D, D_SUNIT, false, false, 0, 0}, - {OPT_D, D_SWIDTH, false, false, 0, 0}, + .conflicts = { {.opt = OPT_D, + .subopt = D_NOALIGN, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, + {.opt = OPT_D, + .subopt = D_SUNIT, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, + {.opt = OPT_D, + .subopt = D_SWIDTH, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .convert = true, .minval = 0, @@ -337,23 +415,53 @@ struct opt_params { .defaultval = SUBOPT_NEEDS_VAL, }, { .index = D_SW, - .conflicts = { {OPT_D, D_NOALIGN, false, false, 0, 0}, - {OPT_D, D_SUNIT, false, false, 0, 0}, - {OPT_D, D_SWIDTH, false, false, 0, 0}, + .conflicts = { {.opt = OPT_D, + .subopt = D_NOALIGN, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, + {.opt = OPT_D, + .subopt = D_SUNIT, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, + {.opt = OPT_D, + .subopt = D_SWIDTH, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .minval = 0, .maxval = UINT_MAX, .defaultval = SUBOPT_NEEDS_VAL, }, { .index = D_SECTLOG, - .conflicts = { {OPT_D, D_SECTSIZE, false, false, 0, 0}, + .conflicts = { {.opt = OPT_D, + .subopt = D_SECTSIZE, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .minval = XFS_MIN_SECTORSIZE_LOG, .maxval = XFS_MAX_SECTORSIZE_LOG, .defaultval = SUBOPT_NEEDS_VAL, }, { .index = D_SECTSIZE, - .conflicts = { {OPT_D, D_SECTLOG, false, false, 0, 0}, + .conflicts = { {.opt = OPT_D, + .subopt = D_SECTLOG, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .convert = true, .is_power_2 = true, @@ -362,10 +470,34 @@ struct opt_params { .defaultval = SUBOPT_NEEDS_VAL, }, { .index = D_NOALIGN, - .conflicts = { {OPT_D, D_SU, false, false, 0, 0}, - {OPT_D, D_SW, false, false, 0, 0}, - {OPT_D, D_SUNIT, false, false, 0, 0}, - {OPT_D, D_SWIDTH, false, false, 0, 0}, + .conflicts = { {.opt = OPT_D, + .subopt = D_SU, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, + {.opt = OPT_D, + .subopt = D_SW, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, + {.opt = OPT_D, + .subopt = D_SUNIT, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, + {.opt = OPT_D, + .subopt = D_SWIDTH, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .minval = 0, .maxval = 1, @@ -407,7 +539,13 @@ struct opt_params { }, .subopt_params = { { .index = I_ALIGN, - .conflicts = { {OPT_M, M_CRC, true, true, 1, 0, + .conflicts = { {.opt = OPT_M, + .subopt = M_CRC, + .test_values = true, + .test_default_value = true, + .invalid_value = 1, + .at_value = 0, + .message = \ "Inodes always aligned for CRC enabled filesytems."}, {LAST_CONFLICT} }, .minval = 0, @@ -415,8 +553,20 @@ struct opt_params { .defaultval = 1, }, { .index = I_LOG, - .conflicts = { {OPT_I, I_PERBLOCK, false, false, 0, 0}, - {OPT_I, I_SIZE, false, false, 0, 0}, + .conflicts = { {.opt = OPT_I, + .subopt = I_PERBLOCK, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, + {.opt = OPT_I, + .subopt = I_SIZE, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .minval = XFS_DINODE_MIN_LOG, .maxval = XFS_DINODE_MAX_LOG, @@ -429,8 +579,20 @@ struct opt_params { .defaultval = SUBOPT_NEEDS_VAL, }, { .index = I_PERBLOCK, - .conflicts = { {OPT_I, I_LOG, false, false, 0, 0}, - {OPT_I, I_SIZE, false, false, 0, 0}, + .conflicts = { {.opt = OPT_I, + .subopt = I_LOG, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, + {.opt = OPT_I, + .subopt = I_SIZE, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .is_power_2 = true, .minval = XFS_MIN_INODE_PERBLOCK, @@ -438,8 +600,20 @@ struct opt_params { .defaultval = SUBOPT_NEEDS_VAL, }, { .index = I_SIZE, - .conflicts = { {OPT_I, I_PERBLOCK, false, false, 0, 0}, - {OPT_I, I_LOG, false, false, 0, 0}, + .conflicts = { {.opt = OPT_I, + .subopt = I_PERBLOCK, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, + {.opt = OPT_I, + .subopt = I_LOG, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .is_power_2 = true, .minval = XFS_DINODE_MIN_SIZE, @@ -447,7 +621,13 @@ struct opt_params { .defaultval = SUBOPT_NEEDS_VAL, }, { .index = I_ATTR, - .conflicts = { {OPT_M, M_CRC, true, true, 1, 1, + .conflicts = { {.opt = OPT_M, + .subopt = M_CRC, + .test_values = true, + .test_default_value = true, + .invalid_value = 1, + .at_value = 1, + .message = \ "V2 attribute format always enabled on CRC enabled filesytems."}, {LAST_CONFLICT} }, .minval = 0, @@ -455,7 +635,13 @@ struct opt_params { .defaultval = SUBOPT_NEEDS_VAL, }, { .index = I_PROJID32BIT, - .conflicts = { {OPT_M, M_CRC, true, true, 1, 0, + .conflicts = { {.opt = OPT_M, + .subopt = M_CRC, + .test_values = true, + .test_default_value = true, + .invalid_value = 1, + .at_value = 0, + .message = \ "32 bit Project IDs always enabled on CRC enabled filesytems."}, {LAST_CONFLICT} }, @@ -464,7 +650,13 @@ struct opt_params { .defaultval = 1, }, { .index = I_SPINODES, - .conflicts = { {OPT_M, M_CRC, true, true, 0, 1, + .conflicts = { {.opt = OPT_M, + .subopt = M_CRC, + .test_values = true, + .test_default_value = true, + .invalid_value = 0, + .at_value = 1, + .message = \ "Sparse inodes not supported without CRC support."}, {LAST_CONFLICT} }, .minval = 0, @@ -493,15 +685,33 @@ struct opt_params { }, .subopt_params = { { .index = L_AGNUM, - .conflicts = { {OPT_L, L_DEV, false, false, 0, 0}, + .conflicts = { {.opt = OPT_L, + .subopt = L_DEV, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .minval = 0, .maxval = UINT_MAX, .defaultval = SUBOPT_NEEDS_VAL, }, { .index = L_INTERNAL, - .conflicts = { {OPT_L, L_FILE, false, false, 0, 0}, - {OPT_L, L_DEV, false, false, 0, 0}, + .conflicts = { {.opt = OPT_L, + .subopt = L_FILE, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, + {.opt = OPT_L, + .subopt = L_DEV, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .minval = 0, .maxval = 1, @@ -515,7 +725,13 @@ struct opt_params { .defaultval = SUBOPT_NEEDS_VAL, }, { .index = L_VERSION, - .conflicts = { {OPT_M, M_CRC, true, true, 1, 1, + .conflicts = {{.opt = OPT_M, + .subopt = M_CRC, + .test_values = true, + .test_default_value = true, + .invalid_value = 1, + .at_value = 1, + .message = "V2 logs are required for CRC enabled filesystems."}, {LAST_CONFLICT} }, .minval = 1, @@ -523,14 +739,26 @@ struct opt_params { .defaultval = SUBOPT_NEEDS_VAL, }, { .index = L_SUNIT, - .conflicts = { {OPT_L, L_SU, false, false, 0, 0}, + .conflicts = { {.opt = OPT_L, + .subopt = L_SU, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .minval = 1, .maxval = BTOBB(XLOG_MAX_RECORD_BSIZE), .defaultval = SUBOPT_NEEDS_VAL, }, { .index = L_SU, - .conflicts = { {OPT_L, L_SUNIT, false, false, 0, 0}, + .conflicts = { {.opt = OPT_L, + .subopt = L_SUNIT, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .convert = true, .minval = BBTOB(1), @@ -538,20 +766,44 @@ struct opt_params { .defaultval = SUBOPT_NEEDS_VAL, }, { .index = L_DEV, - .conflicts = { {OPT_L, L_AGNUM, false, false, 0, 0}, - {OPT_L, L_INTERNAL, false, false, 0, 0}, + .conflicts = { {.opt = OPT_L, + .subopt = L_AGNUM, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, + {.opt = OPT_L, + .subopt = L_INTERNAL, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .defaultval = SUBOPT_NEEDS_VAL, }, { .index = L_SECTLOG, - .conflicts = { {OPT_L, L_SECTSIZE, false, false, 0, 0}, + .conflicts = { {.opt = OPT_L, + .subopt = L_SECTSIZE, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .minval = XFS_MIN_SECTORSIZE_LOG, .maxval = XFS_MAX_SECTORSIZE_LOG, .defaultval = SUBOPT_NEEDS_VAL, }, { .index = L_SECTSIZE, - .conflicts = { {OPT_L, L_SECTLOG, false, false, 0, 0}, + .conflicts = { {.opt = OPT_L, + .subopt = L_SECTLOG, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .convert = true, .is_power_2 = true, @@ -560,20 +812,44 @@ struct opt_params { .defaultval = SUBOPT_NEEDS_VAL, }, { .index = L_FILE, - .conflicts = { {OPT_L, L_INTERNAL, false, false, 0, 0}, + .conflicts = { {.opt = OPT_L, + .subopt = L_INTERNAL, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .minval = 0, .maxval = 1, .defaultval = 1, }, { .index = L_NAME, - .conflicts = { {OPT_L, L_AGNUM, false, false, 0, 0}, - {OPT_L, L_INTERNAL, false, false, 0, 0}, + .conflicts = { {.opt = OPT_L, + .subopt = L_AGNUM, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, + {.opt = OPT_L, + .subopt = L_INTERNAL, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .defaultval = SUBOPT_NEEDS_VAL, }, { .index = L_LAZYSBCNTR, - .conflicts = { {OPT_M, M_CRC, true, true, 1, 0, + .conflicts = { {.opt = OPT_M, + .subopt = M_CRC, + .test_values = true, + .test_default_value = true, + .invalid_value = 1, + .at_value = 0, + .message = "Lazy superblock counted always enabled for CRC enabled filesytems."}, {LAST_CONFLICT} }, .minval = 0, @@ -594,14 +870,26 @@ struct opt_params { }, .subopt_params = { { .index = N_LOG, - .conflicts = { {OPT_N, N_SIZE, false, false, 0, 0}, + .conflicts = { {.opt = OPT_N, + .subopt = N_SIZE, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .minval = XFS_MIN_REC_DIRSIZE, .maxval = XFS_MAX_BLOCKSIZE_LOG, .defaultval = SUBOPT_NEEDS_VAL, }, { .index = N_SIZE, - .conflicts = { {OPT_N, N_LOG, false, false, 0, 0}, + .conflicts = { {.opt = OPT_N, + .subopt = N_LOG, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .convert = true, .is_power_2 = true, @@ -616,7 +904,13 @@ struct opt_params { .defaultval = SUBOPT_NEEDS_VAL, }, { .index = N_FTYPE, - .conflicts = { {OPT_M, M_CRC, true, true, 1, 0, + .conflicts = { {.opt = OPT_M, + .subopt = M_CRC, + .test_values = true, + .test_default_value = true, + .invalid_value = 1, + .at_value = 0, + .message = "Cannot disable ftype with crcs enabled."}, {LAST_CONFLICT} }, .minval = 0, @@ -653,7 +947,13 @@ struct opt_params { .defaultval = SUBOPT_NEEDS_VAL, }, { .index = R_DEV, - .conflicts = { {OPT_M, M_RMAPBT, false, true, 0, 0, + .conflicts = { {.opt = OPT_M, + .subopt = M_RMAPBT, + .test_values = false, + .test_default_value = true, + .invalid_value = 0, + .at_value = 0, + .message = "rmapbt not supported without CRC support."}, {LAST_CONFLICT} }, .defaultval = SUBOPT_NEEDS_VAL, @@ -665,7 +965,13 @@ struct opt_params { .conflicts = { {LAST_CONFLICT} }, }, { .index = R_NAME, - .conflicts = { {OPT_M, M_RMAPBT, false, true, 0, 0, + .conflicts = { {.opt = OPT_M, + .subopt = M_RMAPBT, + .test_values = false, + .test_default_value = true, + .invalid_value = 0, + .at_value = 0, + .message = "rmapbt not supported without CRC support."}, {LAST_CONFLICT} }, .defaultval = SUBOPT_NEEDS_VAL, @@ -690,24 +996,60 @@ struct opt_params { }, .subopt_params = { { .index = S_LOG, - .conflicts = { {OPT_S, S_SIZE, false, false, 0, 0}, - {OPT_S, S_SECTSIZE, false, false, 0, 0}, + .conflicts = { {.opt = OPT_S, + .subopt = S_SIZE, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, + {.opt = OPT_S, + .subopt = S_SECTSIZE, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .minval = XFS_MIN_SECTORSIZE_LOG, .maxval = XFS_MAX_SECTORSIZE_LOG, .defaultval = SUBOPT_NEEDS_VAL, }, { .index = S_SECTLOG, - .conflicts = { {OPT_S, S_SIZE, false, false, 0, 0}, - {OPT_S, S_SECTSIZE, false, false, 0, 0}, + .conflicts = { {.opt = OPT_S, + .subopt = S_SIZE, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, + {.opt = OPT_S, + .subopt = S_SECTSIZE, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .minval = XFS_MIN_SECTORSIZE_LOG, .maxval = XFS_MAX_SECTORSIZE_LOG, .defaultval = SUBOPT_NEEDS_VAL, }, { .index = S_SIZE, - .conflicts = { {OPT_S, S_LOG, false, false, 0, 0}, - {OPT_S, S_SECTLOG, false, false, 0, 0}, + .conflicts = { {.opt = OPT_S, + .subopt = S_LOG, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, + {.opt = OPT_S, + .subopt = S_SECTLOG, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .convert = true, .is_power_2 = true, @@ -716,8 +1058,20 @@ struct opt_params { .defaultval = SUBOPT_NEEDS_VAL, }, { .index = S_SECTSIZE, - .conflicts = { {OPT_S, S_LOG, false, false, 0, 0}, - {OPT_S, S_SECTLOG, false, false, 0, 0}, + .conflicts = { {.opt = OPT_S, + .subopt = S_LOG, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, + {.opt = OPT_S, + .subopt = S_SECTLOG, + .test_values = false, + .test_default_value = false, + .invalid_value = 0, + .at_value = 0 + }, {LAST_CONFLICT} }, .convert = true, .is_power_2 = true, @@ -740,25 +1094,85 @@ struct opt_params { }, .subopt_params = { { .index = M_CRC, - .conflicts = { {OPT_L, L_VERSION, true, true, 1, 1, + .conflicts = { {.opt = OPT_L, + .subopt = L_VERSION, + .test_values = true, + .test_default_value = true, + .invalid_value = 1, + .at_value = 1, + .message = "V2 logs are required for CRC enabled filesystems."}, - {OPT_I, I_ALIGN, false, true, 0, 1, + {.opt = OPT_I, + .subopt = I_ALIGN, + .test_values = false, + .test_default_value = true, + .invalid_value = 0, + .at_value = 1, + .message = "Inodes always aligned for CRC enabled filesytems."}, - {OPT_I, I_PROJID32BIT, true, true, 0, 1, + {.opt = OPT_I, + .subopt = I_PROJID32BIT, + .test_values = true, + .test_default_value = true, + .invalid_value = 0, + .at_value = 1, + .message = "32 bit Project IDs always enabled on CRC enabled filesytems."}, - {OPT_I, I_ATTR, true, true, 1, 1, + {.opt = OPT_I, + .subopt = I_ATTR, + .test_values = true, + .test_default_value = true, + .invalid_value = 1, + .at_value = 1, + .message = "V2 attribute format always enabled on CRC enabled filesytems."}, - {OPT_L, L_LAZYSBCNTR, true, true, 0, 1, + {.opt = OPT_L, + .subopt = L_LAZYSBCNTR, + .test_values = true, + .test_default_value = true, + .invalid_value = 0, + .at_value = 1, + .message = "Lazy superblock counted always enabled for CRC enabled filesytems."}, - {OPT_M, M_FINOBT, true, true, 1, 0, + {.opt = OPT_M, + .subopt = M_FINOBT, + .test_values = true, + .test_default_value = true, + .invalid_value = 1, + .at_value = 0, + .message = "Finobt not supported without CRC support."}, - {OPT_M, M_RMAPBT, true, true, 1, 0, + {.opt = OPT_M, + .subopt = M_RMAPBT, + .test_values = true, + .test_default_value = true, + .invalid_value = 1, + .at_value = 0, + .message = "rmapbt not supported without CRC support."}, - {OPT_M, M_REFLINK, true, true, 1, 0, + {.opt = OPT_M, + .subopt = M_REFLINK, + .test_values = true, + .test_default_value = true, + .invalid_value = 1, + .at_value = 0, + .message = "reflink not supported without CRC support."}, - {OPT_I, I_SPINODES, true, true, 1, 0, + {.opt = OPT_I, + .subopt = I_SPINODES, + .test_values = true, + .test_default_value = true, + .invalid_value = 1, + .at_value = 0, + .message = "Sparse inodes not supported without CRC support."}, - {OPT_N, N_FTYPE, true, true, 0, 1, + {.opt = OPT_N, + .subopt = N_FTYPE, + .test_values = true, + .test_default_value = true, + .invalid_value = 0, + .at_value = 1, + .message = "Cannot disable ftype with crcs enabled."}, {LAST_CONFLICT} }, .minval = 0, @@ -766,7 +1180,13 @@ struct opt_params { .defaultval = 1, }, { .index = M_FINOBT, - .conflicts = { {OPT_M, M_CRC, true, true, 0, 1, + .conflicts = { {.opt = OPT_M, + .subopt = M_CRC, + .test_values = true, + .test_default_value = true, + .invalid_value = 0, + .at_value = 1, + .message = "Finobt not supported without CRC support."}, {LAST_CONFLICT} }, .minval = 0, @@ -778,11 +1198,29 @@ struct opt_params { .defaultval = SUBOPT_NEEDS_VAL, }, { .index = M_RMAPBT, - .conflicts = { {OPT_M, M_CRC, true, true, 0, 1, + .conflicts = { {.opt = OPT_M, + .subopt = M_CRC, + .test_values = true, + .test_default_value = true, + .invalid_value = 0, + .at_value = 1, + .message = "rmapbt not supported without CRC support."}, - {OPT_R, R_NAME, false, true, 0, 0, + {.opt = OPT_R, + .subopt = R_NAME, + .test_values = false, + .test_default_value = true, + .invalid_value = 0, + .at_value = 0, + .message = "rmapbt not supported with realtime devices."}, - {OPT_R, R_DEV, false, true, 0, 0, + {.opt = OPT_R, + .subopt = R_DEV, + .test_values = false, + .test_default_value = true, + .invalid_value = 0, + .at_value = 0, + .message = "rmapbt not supported with realtime devices."}, {LAST_CONFLICT} }, .minval = 0, @@ -790,7 +1228,13 @@ struct opt_params { .defaultval = 0, }, { .index = M_REFLINK, - .conflicts = { {OPT_M, M_CRC, true, true, 0, 1, + .conflicts = { {.opt = OPT_M, + .subopt = M_CRC, + .test_values = true, + .test_default_value = true, + .invalid_value = 0, + .at_value = 1, + .message = "reflink not supported without CRC support."}, {LAST_CONFLICT} }, .minval = 0, -- 2.8.1 -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html