@@ -1187,158 +1187,6 @@ create_data_directories(parray *dest_files, const char *data_dir, const char *ba
1187
1187
}
1188
1188
}
1189
1189
1190
- /*
1191
- * Create backup directories from **backup_dir** to **data_dir**. Doesn't raise
1192
- * an error if target directories exist.
1193
- *
1194
- * If **extract_tablespaces** is true then try to extract tablespace data
1195
- * directories into their initial path using tablespace_map file.
1196
- */
1197
- void
1198
- create_data_directories_manual (const char * data_dir ,const char * backup_dir ,
1199
- bool extract_tablespaces ,fio_location location )
1200
- {
1201
- parray * dirs ,
1202
- * links = NULL ;
1203
- size_t i ;
1204
- char backup_database_dir [MAXPGPATH ],
1205
- to_path [MAXPGPATH ];
1206
- dirs = parray_new ();
1207
- if (extract_tablespaces )
1208
- {
1209
- links = parray_new ();
1210
- read_tablespace_map (links ,backup_dir );
1211
- /* Sort links by a link name*/
1212
- parray_qsort (links ,pgFileComparePath );
1213
- }
1214
-
1215
- join_path_components (backup_database_dir ,backup_dir ,DATABASE_DIR );
1216
- list_data_directories (dirs ,backup_database_dir ,"" , false,
1217
- FIO_BACKUP_HOST );
1218
-
1219
- elog (LOG ,"Restore directories and symlinks..." );
1220
-
1221
- for (i = 0 ;i < parray_num (dirs );i ++ )
1222
- {
1223
- pgFile * dir = (pgFile * )parray_get (dirs ,i );
1224
-
1225
- Assert (S_ISDIR (dir -> mode ));
1226
-
1227
- /* Try to create symlink and linked directory if necessary */
1228
- if (extract_tablespaces &&
1229
- path_is_prefix_of_path (PG_TBLSPC_DIR ,dir -> rel_path ))
1230
- {
1231
- char * link_ptr = GetRelativePath (dir -> rel_path ,PG_TBLSPC_DIR ),
1232
- * link_sep ,
1233
- * tmp_ptr ;
1234
- char link_name [MAXPGPATH ];
1235
- pgFile * * link ;
1236
-
1237
- /* Extract link name from relative path */
1238
- link_sep = first_dir_separator (link_ptr );
1239
- if (link_sep != NULL )
1240
- {
1241
- int len = link_sep - link_ptr ;
1242
- strncpy (link_name ,link_ptr ,len );
1243
- link_name [len ]= '\0' ;
1244
- }
1245
- else
1246
- gotocreate_directory ;
1247
-
1248
- tmp_ptr = dir -> path ;
1249
- dir -> path = link_name ;
1250
- /* Search only by symlink name without path */
1251
- link = (pgFile * * )parray_bsearch (links ,dir ,pgFileComparePath );
1252
- dir -> path = tmp_ptr ;
1253
-
1254
- if (link )
1255
- {
1256
- const char * linked_path = get_tablespace_mapping ((* link )-> linked );
1257
- const char * dir_created ;
1258
-
1259
- if (!is_absolute_path (linked_path ))
1260
- elog (ERROR ,"tablespace directory is not an absolute path: %s\n" ,
1261
- linked_path );
1262
-
1263
- /* Check if linked directory was created earlier */
1264
- dir_created = get_tablespace_created (link_name );
1265
- if (dir_created )
1266
- {
1267
- /*
1268
- * If symlink and linked directory were created do not
1269
- * create it second time.
1270
- */
1271
- if (strcmp (dir_created ,linked_path )== 0 )
1272
- {
1273
- /*
1274
- * Create rest of directories.
1275
- * First check is there any directory name after
1276
- * separator.
1277
- */
1278
- if (link_sep != NULL && * (link_sep + 1 )!= '\0' )
1279
- gotocreate_directory ;
1280
- else
1281
- continue ;
1282
- }
1283
- else
1284
- elog (ERROR ,"tablespace directory \"%s\" of page backup does not "
1285
- "match with previous created tablespace directory \"%s\" of symlink \"%s\"" ,
1286
- linked_path ,dir_created ,link_name );
1287
- }
1288
-
1289
- if (link_sep )
1290
- elog (VERBOSE ,"create directory \"%s\" and symbolic link \"%.*s\"" ,
1291
- linked_path ,
1292
- (int ) (link_sep - dir -> rel_path ),dir -> rel_path );
1293
- else
1294
- elog (VERBOSE ,"create directory \"%s\" and symbolic link \"%s\"" ,
1295
- linked_path ,dir -> rel_path );
1296
-
1297
- /* Firstly, create linked directory */
1298
- fio_mkdir (linked_path ,DIR_PERMISSION ,location );
1299
-
1300
- join_path_components (to_path ,data_dir ,PG_TBLSPC_DIR );
1301
- /* Create pg_tblspc directory just in case */
1302
- fio_mkdir (to_path ,DIR_PERMISSION ,location );
1303
-
1304
- /* Secondly, create link */
1305
- join_path_components (to_path ,to_path ,link_name );
1306
- if (fio_symlink (linked_path ,to_path ,location )< 0 )
1307
- elog (ERROR ,"could not create symbolic link \"%s\": %s" ,
1308
- to_path ,strerror (errno ));
1309
-
1310
- /* Save linked directory */
1311
- set_tablespace_created (link_name ,linked_path );
1312
-
1313
- /*
1314
- * Create rest of directories.
1315
- * First check is there any directory name after separator.
1316
- */
1317
- if (link_sep != NULL && * (link_sep + 1 )!= '\0' )
1318
- gotocreate_directory ;
1319
-
1320
- continue ;
1321
- }
1322
- }
1323
-
1324
- create_directory :
1325
- elog (VERBOSE ,"create directory \"%s\"" ,dir -> rel_path );
1326
-
1327
- /* This is not symlink, create directory */
1328
- join_path_components (to_path ,data_dir ,dir -> rel_path );
1329
- fio_mkdir (to_path ,DIR_PERMISSION ,location );
1330
- }
1331
-
1332
- if (extract_tablespaces )
1333
- {
1334
- parray_walk (links ,pgFileFree );
1335
- parray_free (links );
1336
- }
1337
-
1338
- parray_walk (dirs ,pgFileFree );
1339
- parray_free (dirs );
1340
- }
1341
-
1342
1190
/*
1343
1191
* Read names of symbolik names of tablespaces with links to directories from
1344
1192
* tablespace_map or tablespace_map.txt.