if (res_size > size)
return -ERANGE;
- ret = read_full_wim_resource(lte, (u8*)value);
+ ret = read_full_wim_resource(lte, (u8*)value,
+ WIMLIB_RESOURCE_FLAG_MULTITHREADED);
if (ret != 0)
return -EIO;
} else {
/* Read from WIM */
+ wimlib_assert(fd->f_lte->resource_location == RESOURCE_IN_WIM);
+
u64 res_size = wim_resource_size(fd->f_lte);
if (offset > res_size)
size = min(size, res_size - offset);
if (read_wim_resource(fd->f_lte, (u8*)buf,
- size, offset, false) != 0)
+ size, offset,
+ WIMLIB_RESOURCE_FLAG_MULTITHREADED) != 0)
return -EIO;
return size;
}
if (!inode_is_symlink(inode))
return -EINVAL;
- ret = inode_readlink(inode, buf, buf_len, ctx->wim);
+ ret = inode_readlink(inode, buf, buf_len, ctx->wim,
+ WIMLIB_RESOURCE_FLAG_MULTITHREADED);
if (ret > 0)
ret = 0;
return ret;
.utime = wimfs_utime,
#endif
.write = wimfs_write,
+
+ .flag_nullpath_ok = 1,
+ .flag_nopath = 1,
+ .flag_utime_omit_ok = 1,
};
if (imd->root_dentry->refcnt != 1) {
ERROR("Cannot mount image that was just exported with "
- "wimlib_export()");
+ "wimlib_export_image()");
+ ret = WIMLIB_ERR_INVALID_PARAM;
+ goto out;
+ }
+
+ if (imd->modified) {
+ ERROR("Cannot mount image that was added "
+ "with wimlib_add_image()");
ret = WIMLIB_ERR_INVALID_PARAM;
goto out;
}