diff options
Diffstat (limited to 'data.c')
| -rw-r--r-- | data.c | 12 |
1 files changed, 8 insertions, 4 deletions
| @@ -1320,12 +1320,17 @@ int db_upgrade(d_char **error) | |||
| 1320 | int changed = 0; | 1320 | int changed = 0; |
| 1321 | double f = 0.0; | 1321 | double f = 0.0; |
| 1322 | 1322 | ||
| 1323 | do { | 1323 | for (;;) { |
| 1324 | char *layout = xs_dict_get(srv_config, "layout"); | 1324 | char *layout = xs_dict_get(srv_config, "layout"); |
| 1325 | double nf; | 1325 | double nf; |
| 1326 | 1326 | ||
| 1327 | f = nf = xs_number_get(layout); | 1327 | f = nf = xs_number_get(layout); |
| 1328 | 1328 | ||
| 1329 | if (!(f < db_layout)) | ||
| 1330 | break; | ||
| 1331 | |||
| 1332 | srv_log(xs_fmt("db_upgrade %1.1lf < %1.1lf", f, db_layout)); | ||
| 1333 | |||
| 1329 | if (f < 2.0) { | 1334 | if (f < 2.0) { |
| 1330 | *error = xs_fmt("ERROR: unsupported old disk layout %1.1lf\n", f); | 1335 | *error = xs_fmt("ERROR: unsupported old disk layout %1.1lf\n", f); |
| 1331 | ret = 0; | 1336 | ret = 0; |
| @@ -1344,13 +1349,12 @@ int db_upgrade(d_char **error) | |||
| 1344 | xs *nv = xs_number_new(f); | 1349 | xs *nv = xs_number_new(f); |
| 1345 | srv_config = xs_dict_set(srv_config, "layout", nv); | 1350 | srv_config = xs_dict_set(srv_config, "layout", nv); |
| 1346 | 1351 | ||
| 1347 | srv_log(xs_fmt("upgraded db layout to version %1.1lf", f)); | 1352 | srv_log(xs_fmt("db_upgrade converted to version %1.1lf", f)); |
| 1348 | changed++; | 1353 | changed++; |
| 1349 | } | 1354 | } |
| 1350 | else | 1355 | else |
| 1351 | break; | 1356 | break; |
| 1352 | 1357 | } | |
| 1353 | } while (f < db_layout); | ||
| 1354 | 1358 | ||
| 1355 | if (f > db_layout) { | 1359 | if (f > db_layout) { |
| 1356 | *error = xs_fmt("ERROR: unknown future version %lf\n", f); | 1360 | *error = xs_fmt("ERROR: unknown future version %lf\n", f); |