]> wimlib.net Git - wimlib/blobdiff - src/mount_image.c
wimlib_mount_image(): Resolve inodes per-lookup, -EIO when streams not found
[wimlib] / src / mount_image.c
index f3e0a4276e8db7a34f4c3ae97977336ed53825fe..a207b42a6fd449e883e30e2f27741e42cf59db0d 100644 (file)
@@ -2407,24 +2407,14 @@ wimlib_mount_image(WIMStruct *wim, int image, const char *dir,
        if (ret)
                goto out;
 
-       if ((mount_flags & WIMLIB_MOUNT_FLAG_READWRITE) && (wim->hdr.total_parts != 1)) {
-               ERROR("Cannot mount a split WIM read-write");
-               ret = WIMLIB_ERR_SPLIT_UNSUPPORTED;
-               goto out;
-       }
-
-       if (num_additional_swms)
-               merge_lookup_tables(wim, additional_swms, num_additional_swms);
-
        if (mount_flags & WIMLIB_MOUNT_FLAG_READWRITE) {
-               ret = wim_run_full_verifications(wim);
+               ret = can_delete_from_wim(wim);
                if (ret)
-                       goto out_restore_lookup_table;
+                       goto out;
        }
 
-       ret = wim_checksum_unhashed_streams(wim);
-       if (ret)
-               goto out_restore_lookup_table;
+       if (num_additional_swms)
+               merge_lookup_tables(wim, additional_swms, num_additional_swms);
 
        ret = select_wim_image(wim, image);
        if (ret)
@@ -2543,10 +2533,8 @@ wimlib_mount_image(WIMStruct *wim, int image, const char *dir,
         * assign inode numbers */
        DEBUG("Resolving lookup table entries and assigning inode numbers");
        ctx.next_ino = 1;
-       image_for_each_inode(inode, imd) {
-               inode_resolve_ltes(inode, wim->lookup_table);
+       image_for_each_inode(inode, imd)
                inode->i_ino = ctx.next_ino++;
-       }
        DEBUG("(next_ino = %"PRIu64")", ctx.next_ino);
 
        DEBUG("Calling fuse_main()");