From 53008a356666e121262143254920b1049e464aef Mon Sep 17 00:00:00 2001 From: Jan Kandziora Date: Sat, 21 Sep 2019 00:15:31 +0200 Subject: [PATCH] bugfix: do not fail on errors within dd, ignore those extents instead. bugfix: do not truncate recovered files if extents are not ordered. --- xfs_undelete | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xfs_undelete b/xfs_undelete index d5b9620..8b1cc87 100755 --- a/xfs_undelete +++ b/xfs_undelete @@ -97,8 +97,8 @@ for {set block [dict get $::parameters s]} {$block<$dblocks} {incr block} { ## Ignore extents beyond the filesystem. if {($skip+$count)>=$dblocks} continue - ## Recover the data from this extent. - exec -ignorestderr -- dd 2>/dev/null if=$fs of=$of bs=$blocksize skip=$skip seek=$loffset count=$count + ## Recover the data from this extent. Ignore extents for which dd reported a problem. + if {[catch {exec -ignorestderr -- dd if=$fs of=$of bs=$blocksize skip=$skip seek=$loffset count=$count conv=notrunc status=none}]} continue ## Remember there was at least one recovered extent. set recovered 1