X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fwimlib.h;h=76481bdf7ba1f9b4fba26a697f245bbe19402946;hb=2d0c0153db70123a446b06e1a8b1db5f9c41632d;hp=5265a3968094d4a7a2b8782ab7974f57c3513d06;hpb=3fa7b7a033ce803accfd6758029114323f6a6865;p=wimlib diff --git a/src/wimlib.h b/src/wimlib.h index 5265a396..76481bdf 100644 --- a/src/wimlib.h +++ b/src/wimlib.h @@ -636,6 +636,12 @@ typedef int (*wimlib_progress_func_t)(enum wimlib_progress_msg msg_type, * discarded. Ignored for read-only mounts. */ #define WIMLIB_UNMOUNT_FLAG_COMMIT 0x00000002 +/** See ::WIMLIB_WRITE_FLAG_REBUILD */ +#define WIMLIB_UNMOUNT_FLAG_REBUILD 0x00000004 + +/** See ::WIMLIB_WRITE_FLAG_RECOMPRESS */ +#define WIMLIB_UNMOUNT_FLAG_RECOMPRESS 0x00000008 + /****************************** * WIMLIB_WRITE_FLAG_* * ******************************/ @@ -655,7 +661,7 @@ typedef int (*wimlib_progress_func_t)(enum wimlib_progress_msg msg_type, /** Call fsync() when the WIM file is closed */ #define WIMLIB_WRITE_FLAG_FSYNC 0x00000008 -/** Specifying this flag overrides the default behavior of wimlib_overwrite() +/* Specifying this flag overrides the default behavior of wimlib_overwrite() * after one or more calls to wimlib_delete_image(), which is to rebuild the * entire WIM. * @@ -679,6 +685,7 @@ enum wimlib_error_code { WIMLIB_ERR_COMPRESSED_LOOKUP_TABLE, WIMLIB_ERR_DECOMPRESSION, WIMLIB_ERR_DELETE_STAGING_DIR, + WIMLIB_ERR_FILESYSTEM_DAEMON_CRASHED, WIMLIB_ERR_FORK, WIMLIB_ERR_FUSE, WIMLIB_ERR_FUSERMOUNT, @@ -698,6 +705,7 @@ enum wimlib_error_code { WIMLIB_ERR_INVALID_RESOURCE_HASH, WIMLIB_ERR_INVALID_RESOURCE_SIZE, WIMLIB_ERR_INVALID_SECURITY_DATA, + WIMLIB_ERR_INVALID_UNMOUNT_MESSAGE, WIMLIB_ERR_LINK, WIMLIB_ERR_MKDIR, WIMLIB_ERR_MQUEUE, @@ -1403,6 +1411,7 @@ extern int wimlib_join(const char **swms, unsigned num_swms, * the same directory as the WIM file that @a wim was originally read from. * * @return 0 on success; nonzero on error. + * * @retval ::WIMLIB_ERR_ALREADY_LOCKED * A read-write mount was requested, but an an exclusive advisory lock on * the on-disk WIM file could not be acquired because another thread or @@ -1948,14 +1957,9 @@ extern int wimlib_split(WIMStruct *wim, const char *swm_name, * * To unmount the image, the thread calling this function communicates with the * thread that is managing the mounted WIM image. This function blocks until it - * is known whether the unmount succeeded or failed. (This means until the - * entire WIM has been re-written, in the case of a read-write mounted WIM.) - * - * There is currently a design problem with this function because it is hard to - * know whether the filesystem thread is still working or whether it has crashed - * or has been killed. Currently, a timeout of 600 seconds (so long because - * WIMs can be very large) is implemented so that this function will not wait - * forever before returning failure. + * is known whether the unmount succeeded or failed. In the case of a + * read-write mounted WIM, the unmount is not considered to have succeeded until + * all changes have been saved to the underlying WIM file. * * @param dir * The directory that the WIM image was mounted on. @@ -1964,13 +1968,17 @@ extern int wimlib_split(WIMStruct *wim, const char *swm_name, * ::WIMLIB_UNMOUNT_FLAG_COMMIT. Neither of these flags affect read-only * mounts. * @param progress_func - * Currently ignored, but may be used for a progress callback in the - * future. Set to @c NULL. + * If non-NULL, a function that will be called periodically with the + * progress of the current operation. * * @return 0 on success; nonzero on error. + * * @retval ::WIMLIB_ERR_DELETE_STAGING_DIR * The filesystem daemon was unable to remove the staging directory and the * temporary files that it contains. + * @retval ::WIMLIB_ERR_FILESYSTEM_DAEMON_CRASHED + * The filesystem daemon appears to have terminated before sending an exit + * status. * @retval ::WIMLIB_ERR_FORK * Could not @c fork() the process. * @retval ::WIMLIB_ERR_FUSERMOUNT @@ -1985,10 +1993,6 @@ extern int wimlib_split(WIMStruct *wim, const char *swm_name, * @retval ::WIMLIB_ERR_OPEN * The filesystem daemon could not open a temporary file for writing the * new WIM. - * @retval ::WIMLIB_ERR_TIMEOUT - * 600 seconds elapsed while waiting for the filesystem daemon to notify - * the process of its exit status, so the WIM file probably was not written - * successfully. * @retval ::WIMLIB_ERR_READ * A read error occurred when the filesystem daemon tried to a file from * the staging directory