summarylogtreecommitdiffstats
path: root/disable_writeback_workaround.patch
diff options
context:
space:
mode:
Diffstat (limited to 'disable_writeback_workaround.patch')
-rw-r--r--disable_writeback_workaround.patch69
1 files changed, 69 insertions, 0 deletions
diff --git a/disable_writeback_workaround.patch b/disable_writeback_workaround.patch
new file mode 100644
index 000000000000..57e51da914d4
--- /dev/null
+++ b/disable_writeback_workaround.patch
@@ -0,0 +1,69 @@
+diff -rupN WoeUSB-3.3.0/src/woeusb WoeUSB-3.3.0-fix/src/woeusb
+--- WoeUSB-3.3.0/src/woeusb 2019-03-26 03:34:51.000000000 +0100
++++ WoeUSB-3.3.0-fix/src/woeusb 2019-08-03 09:10:10.553378730 +0200
+@@ -308,9 +308,6 @@ init(){
+
+ current_state=copying-filesystem
+
+- workaround_linux_make_writeback_buffering_not_suck \
+- apply
+-
+ copy_filesystem_files \
+ "${source_fs_mountpoint}" \
+ "${target_fs_mountpoint}" \
+@@ -1650,41 +1647,6 @@ workaround_support_windows_7_uefi_boot()
+ > "${efi_boot_directory}/bootx64.efi"
+ }; declare -fr workaround_support_windows_7_uefi_boot
+
+-## Currently WoeUSB indirectly causes severely unresponsive system on 64-bit architecture with large primary memory during file copy process due to a flaw of the writeback buffer size handling in Linux kernel, workaround it before it is fixed
+-## Refer:
+-## - System lagging while copying data · Issue #113 · slacka/WoeUSB <https://github.com/slacka/WoeUSB/issues/113>
+-## - The pernicious USB-stick stall problem [LWN.net] <https://lwn.net/Articles/572911/>
+-workaround_linux_make_writeback_buffering_not_suck(){
+- util_check_function_parameters_quantity 1 "${#}"
+- local -r mode="${1}"
+-
+- local -ir VM_DIRTY_BACKGROUND_BYTES=$((16*1024*1024)) # 16MiB
+- local -ir VM_DIRTY_BYTES=$((48*1024*1024)) # 48MiB
+-
+- case "${mode}" in
+- apply)
+- echo_with_color \
+- yellow \
+- 'Applying workaround to prevent 64-bit systems with big primary memory from being unresponsive during copying files.'
+- echo "${VM_DIRTY_BACKGROUND_BYTES}" > /proc/sys/vm/dirty_background_bytes
+- echo "${VM_DIRTY_BYTES}" > /proc/sys/vm/dirty_bytes
+- ;;
+- reset)
+- echo_with_color \
+- yellow \
+- 'Resetting workaround to prevent 64-bit systems with big primary memory from being unresponsive during copying files.'
+- echo 0 > /proc/sys/vm/dirty_background_bytes
+- echo 0 > /proc/sys/vm/dirty_bytes
+- ;;
+- *)
+- printf_with_color \
+- red \
+- 'Fatal: %s: Unexpected *mode* encountered, please report bug.\n' \
+- "${FUNCNAME[0]}"
+- ;;
+- esac
+-}; declare -fr workaround_linux_make_writeback_buffering_not_suck
+-
+ install_legacy_pc_bootloader_grub(){
+ util_check_function_parameters_quantity 3 "${#}"
+ local -r target_fs_mountpoint="${1}"; shift 1
+@@ -1836,13 +1798,6 @@ trap_exit(){
+ off \
+ "${global_only_for_gui}"
+
+- case "${current_state}" in
+- copying-filesystem|finished)
+- workaround_linux_make_writeback_buffering_not_suck \
+- reset
+- ;;
+- esac
+-
+ if util_is_parameter_set_and_not_empty \
+ source_fs_mountpoint; then
+ if ! cleanup_mountpoint \