Context *c,
int level,
uint64_t *ret_current_size,
+ uint64_t *ret_foreign_size,
uint64_t *ret_minimal_size) {
- uint64_t current_size, minimal_size;
+ uint64_t current_size, foreign_size, minimal_size;
assert(c);
else
current_size = round_up_size(GPT_METADATA_SIZE, 4096);
+ foreign_size = 0;
+
LIST_FOREACH(partitions, p, c->partitions) {
uint64_t m;
+ if (PARTITION_IS_FOREIGN(p))
+ foreign_size += p->current_size;
+
if (PARTITION_EXISTS(p))
current_size += p->current_size;
if (ret_current_size)
*ret_current_size = current_size;
+ if (ret_foreign_size)
+ *ret_foreign_size = foreign_size;
if (ret_minimal_size)
*ret_minimal_size = minimal_size;
if (!context->node) {
/* Check if space issue is caused by the whole disk being too small */
uint64_t minimal_size;
- r = determine_auto_size(context, LOG_DEBUG, /* ret_current_size= */ NULL, &minimal_size);
+ r = determine_auto_size(context, LOG_DEBUG, /* ret_current_size= */ NULL, /* ret_foreign_size= */ NULL, &minimal_size);
if (r < 0)
return r;
if (r == -ENOSPC) {
uint64_t current_size, minimal_size;
- r = determine_auto_size(context, LOG_DEBUG, ¤t_size, &minimal_size);
+ r = determine_auto_size(context, LOG_DEBUG, ¤t_size, /* ret_foreign_size= */ NULL, &minimal_size);
if (r < 0)
return r;
uint64_t current_size, minimal_size;
/* If we are doing a dry-run, report the minimal size. */
- r = determine_auto_size(context, LOG_DEBUG, ¤t_size, &minimal_size);
+ r = determine_auto_size(context, LOG_DEBUG, ¤t_size, /* ret_foreign_size= */ NULL, &minimal_size);
if (r < 0)
return r;
return r;
if (arg_node_none) {
- (void) determine_auto_size(context, LOG_INFO, /* ret_current_size= */ NULL, /* ret_minimal_size= */ NULL);
+ (void) determine_auto_size(context, LOG_INFO, /* ret_current_size= */ NULL, /* ret_foreign_size= */ NULL, /* ret_minimal_size= */ NULL);
return 0;
}
if (arg_size_auto) {
- r = determine_auto_size(context, LOG_INFO, /* ret_current_size= */ NULL, &arg_size);
+ r = determine_auto_size(context, LOG_INFO, /* ret_current_size= */ NULL, /* ret_foreign_size= */ NULL, &arg_size);
if (r < 0)
return r;
r = context_ponder(context);
if (r == -ENOSPC) {
/* When we hit space issues, tell the user the minimal size. */
- (void) determine_auto_size(context, LOG_INFO, /* ret_current_size= */ NULL, /* ret_minimal_size= */ NULL);
+ (void) determine_auto_size(context, LOG_INFO, /* ret_current_size= */ NULL, /* ret_foreign_size= */ NULL, /* ret_minimal_size= */ NULL);
return r;
}
if (r < 0)