inconsistent_inode(const struct wim_inode *inode)
{
if (wimlib_print_errors) {
- ERROR("An inconsistent hard link group that cannot be corrected has "
- "been detected");
- ERROR("The dentries are located at the following paths:");
+ WARNING("An inconsistent hard link group that cannot be corrected has "
+ "been detected");
+ WARNING("The dentries are located at the following paths:");
print_inode_dentries(inode);
}
}
}
static bool
-ref_inodes_consistent(const struct wim_inode * restrict ref_inode_1,
- const struct wim_inode * restrict ref_inode_2)
+ref_inodes_consistent(const struct wim_inode *ref_inode_1,
+ const struct wim_inode *ref_inode_2)
{
- wimlib_assert(ref_inode_1 != ref_inode_2);
-
if (ref_inode_1->i_num_ads != ref_inode_2->i_num_ads)
return false;
if (ref_inode_1->i_security_id != ref_inode_2->i_security_id
const struct wim_inode *inode)
{
if (ref_inode->i_security_id != inode->i_security_id) {
- ERROR("Security ID mismatch: %d != %d",
- ref_inode->i_security_id, inode->i_security_id);
+ WARNING("Security ID mismatch: %d != %d",
+ ref_inode->i_security_id, inode->i_security_id);
return false;
}
if (ref_inode->i_attributes != inode->i_attributes) {
- ERROR("Attributes mismatch: 0x%08x != 0x%08x",
- ref_inode->i_attributes, inode->i_attributes);
+ WARNING("Attributes mismatch: 0x%08x != 0x%08x",
+ ref_inode->i_attributes, inode->i_attributes);
return false;
}
if (inode_has_data_streams(inode)) {
if (ref_inode->i_num_ads != inode->i_num_ads) {
- ERROR("Stream count mismatch: %u != %u",
- ref_inode->i_num_ads, inode->i_num_ads);
+ WARNING("Stream count mismatch: %u != %u",
+ ref_inode->i_num_ads, inode->i_num_ads);
return false;
}
for (unsigned i = 0; i <= ref_inode->i_num_ads; i++) {
ref_hash = inode_stream_hash(ref_inode, i);
hash = inode_stream_hash(inode, i);
if (!hashes_equal(ref_hash, hash) && !is_zero_hash(hash)) {
- ERROR("Stream hash mismatch");
+ WARNING("Stream hash mismatch");
return false;
}
if (i && !ads_entries_have_same_name(&ref_inode->i_ads_entries[i - 1],
&inode->i_ads_entries[i - 1]))
{
- ERROR("Stream name mismatch");
+ WARNING("Stream name mismatch");
return false;
}
}
inode_for_each_dentry(dentry, ref_inode) {
if (dentry != ref_dentry) {
- if (!inodes_consistent(ref_inode, dentry->d_inode)) {
+ if (!inodes_consistent(ref_inode, dentry->d_inode))
inconsistent_inode(ref_inode);
- return WIMLIB_ERR_INVALID_METADATA_RESOURCE;
- }
/* Free the unneeded `struct wim_inode'. */
wimlib_assert(dentry->d_inode->i_nlink == 1);
free_inode(dentry->d_inode);
struct hlist_node *cur, *tmp;
int ret;
INIT_LIST_HEAD(inode_list);
- for (u64 i = 0; i < table->capacity; i++) {
+ for (size_t i = 0; i < table->capacity; i++) {
hlist_for_each_entry_safe(inode, cur, tmp, &table->array[i], i_hlist) {
hlist_del_init(&inode->i_hlist);
ret = fix_nominal_inode(inode, inode_list, ino_changes_needed);
* WIM) is examined for consistency and may be split into multiple "true" inodes
* that are maximally sized consistent sets of dentries.
*
- * On success, the list of "true" inodes, linked by the i_hlist field,
- * is returned in the hlist @inode_list.
+ * On success, the list of "true" inodes, linked by the i_list field,
+ * is returned in the list @inode_list.
*
* Return values:
* WIMLIB_ERR_SUCCESS (0)
}
}
/* On success, all the inodes have been moved to the image inode list,
- * so there's no need to delete from from the hash lists in the inode
+ * so there's no need to delete from the hash lists in the inode
* table before freeing the hash buckets array directly. */
ret = 0;
goto out_destroy_inode_table_raw;