fix(script): Do snapshots atomically (#1)
This commit is contained in:
		| @@ -206,21 +206,32 @@ function trim_pkg_list_oneline () { | ||||
|  | ||||
| function do_snaps () { | ||||
|     local snap_name snap_return_code | ||||
|     for snappable_dataset in "${snappable_datasets[@]}"; do | ||||
|         snap_name="${snappable_dataset}"'@'"${snap_name_prefix}${snap_field_separator}${date_string}${snap_field_separator}"'op:'"${conf_op_suffix}${snap_field_separator}"'sev:'"${severity}${snap_field_separator}"'pkgs:'"${trimmed_pkg_list_oneline}" | ||||
|         if [[ "${do_dry_run}" == 'true' ]]; then | ||||
|             pprint 'info' 'Dry-run, pretending to run zfs snapshot '"${snap_name}" | ||||
|         else | ||||
|             zfs snapshot "${snap_name}" | ||||
|             snap_return_code="${?}" | ||||
|             if [[ "${snap_return_code}" -eq '0' ]]; then | ||||
|                 successfully_snapped_datasets+=("${snappable_dataset}") | ||||
|                 pprint 'info' 'Snapshot done: '"${snap_name}" | ||||
|             else | ||||
|                 pprint 'warn' 'Snapshot failed: '"${snap_name}" | ||||
|             fi | ||||
|         fi | ||||
|     local -a planned_snaps | ||||
|     for snappable_dataset_id in "${!snappable_datasets[@]}"; do | ||||
|         snap_name="${snappable_datasets[${snappable_dataset_id}]}"'@'"${snap_name_prefix}${snap_field_separator}${date_string}${snap_field_separator}"'op:'"${conf_op_suffix}${snap_field_separator}"'sev:'"${severity}${snap_field_separator}"'pkgs:'"${trimmed_pkg_list_oneline}" | ||||
|         planned_snaps["${snappable_dataset_id}"]="${snap_name}" | ||||
|     done | ||||
|     if [[ "${do_dry_run}" == 'true' ]]; then | ||||
|         pprint 'info' 'Dry-run, pretending to atomically do zfs snapshot:' | ||||
|         for planned_snap in "${planned_snaps[@]}"; do | ||||
|             pprint 'info' "${planned_snap}" | ||||
|         done | ||||
|     else | ||||
|         zfs snapshot "${planned_snaps[@]}" | ||||
|         snap_return_code="${?}" | ||||
|         if [[ "${snap_return_code}" -eq '0' ]]; then | ||||
|             successfully_snapped_datasets=("${snappable_datasets[@]}") | ||||
|             pprint 'info' 'zfs snapshot atomically done:' | ||||
|             for planned_snap in "${planned_snaps[@]}"; do | ||||
|                 pprint 'info' "${planned_snap}" | ||||
|             done | ||||
|         else | ||||
|             pprint 'warn' 'zfs snapshot failed:' | ||||
|             for planned_snap in "${planned_snaps[@]}"; do | ||||
|                 pprint 'warn' "${planned_snap}" | ||||
|             done | ||||
|         fi | ||||
|     fi | ||||
| } | ||||
|  | ||||
| function get_snaps_in_cur_sev () { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user