Thanks, Adam!  My apologies for screwing up the first build/upload.
I've just pushed e2fsprogs/1.44.5-1+deb10u1.

I've attached the debdiff below.

                                        - Ted

diff -Nru e2fsprogs-1.44.5/debian/changelog e2fsprogs-1.44.5/debian/changelog
--- e2fsprogs-1.44.5/debian/changelog   2018-12-15 22:46:49.000000000 -0500
+++ e2fsprogs-1.44.5/debian/changelog   2019-08-02 23:49:00.000000000 -0400
@@ -1,3 +1,9 @@
+e2fsprogs (1.44.5-1+deb10u1) buster; urgency=medium
+
+  * Fix e4defrag crashes on 32-bit architectures (Closes: #920767)
+
+ -- Theodore Y. Ts'o <ty...@mit.edu>  Fri, 02 Aug 2019 23:49:00 -0400
+
 e2fsprogs (1.44.5-1) unstable; urgency=medium
 
   * New upstream version
diff -Nru e2fsprogs-1.44.5/debian/gbp.conf e2fsprogs-1.44.5/debian/gbp.conf
--- e2fsprogs-1.44.5/debian/gbp.conf    2018-12-15 22:46:49.000000000 -0500
+++ e2fsprogs-1.44.5/debian/gbp.conf    2019-08-02 23:49:00.000000000 -0400
@@ -1,4 +1,4 @@
 [DEFAULT]
 pristine-tar = True
 upstream-tag='v%(version)s'
-debian-branch=debian/master
+debian-branch=debian/stable
diff -Nru e2fsprogs-1.44.5/debian/.gitignore e2fsprogs-1.44.5/debian/.gitignore
--- e2fsprogs-1.44.5/debian/.gitignore  1969-12-31 19:00:00.000000000 -0500
+++ e2fsprogs-1.44.5/debian/.gitignore  2019-08-02 23:49:00.000000000 -0400
@@ -0,0 +1 @@
+!patches
diff -Nru 
e2fsprogs-1.44.5/debian/patches/revert-e4defrag-use-64-bit-counters-to-t.patch 
e2fsprogs-1.44.5/debian/patches/revert-e4defrag-use-64-bit-counters-to-t.patch
--- 
e2fsprogs-1.44.5/debian/patches/revert-e4defrag-use-64-bit-counters-to-t.patch  
    1969-12-31 19:00:00.000000000 -0500
+++ 
e2fsprogs-1.44.5/debian/patches/revert-e4defrag-use-64-bit-counters-to-t.patch  
    2019-08-02 23:49:00.000000000 -0400
@@ -0,0 +1,66 @@
+From: Theodore Ts'o <ty...@mit.edu>
+Date: Thu, 3 Jan 2019 22:27:37 -0500
+X-Dgit-Generated: 1.44.5-1 622e62942104d357912480e49c5b5524588cf45f
+Subject: Revert "e4defrag: use 64-bit counters to track # files defragged"
+
+This reverts commit 3293ea9ecbe1d622f9cf6c41d705d82fbae6a3e3.
+
+This wasn't really the right fix, since there can't be more than 2**32
+files in a file system.  The real issue is when the number of files in
+a directory change during the e4defrag run.
+
+Signed-off-by: Theodore Ts'o <ty...@mit.edu>
+
+---
+
+--- e2fsprogs-1.44.5.orig/misc/e4defrag.c
++++ e2fsprogs-1.44.5/misc/e4defrag.c
+@@ -169,13 +169,13 @@ static int       block_size;
+ static int    extents_before_defrag;
+ static int    extents_after_defrag;
+ static int    mode_flag;
+-static uid_t  current_uid;
+-static unsigned long long     defraged_file_count;
+-static unsigned long long     frag_files_before_defrag;
+-static unsigned long long     frag_files_after_defrag;
+-static unsigned long long     regular_count;
+-static unsigned long long     succeed_cnt;
+-static unsigned long long     total_count;
++static unsigned int   current_uid;
++static unsigned int   defraged_file_count;
++static unsigned int   frag_files_before_defrag;
++static unsigned int   frag_files_after_defrag;
++static unsigned int   regular_count;
++static unsigned int   succeed_cnt;
++static unsigned int   total_count;
+ static __u8 log_groups_per_flex;
+ static __u32 blocks_per_group;
+ static __u32 feature_incompat;
+@@ -1912,9 +1912,9 @@ int main(int argc, char *argv[])
+                       }
+                       /* File tree walk */
+                       nftw64(dir_name, file_defrag, FTW_OPEN_FD, flags);
+-                      printf("\n\tSuccess:\t\t\t[ %llu/%llu ]\n",
+-                             succeed_cnt, total_count);
+-                      printf("\tFailure:\t\t\t[ %llu/%llu ]\n",
++                      printf("\n\tSuccess:\t\t\t[ %u/%u ]\n", succeed_cnt,
++                              total_count);
++                      printf("\tFailure:\t\t\t[ %u/%u ]\n",
+                               total_count - succeed_cnt, total_count);
+                       if (mode_flag & DETAIL) {
+                               printf("\tTotal extents:\t\t\t%4d->%d\n",
+@@ -1923,10 +1923,12 @@ int main(int argc, char *argv[])
+                               printf("\tFragmented percentage:\t\t"
+                                       "%3llu%%->%llu%%\n",
+                                       !regular_count ? 0 :
+-                                      (frag_files_before_defrag * 100) /
++                                      ((unsigned long long)
++                                      frag_files_before_defrag * 100) /
+                                       regular_count,
+                                       !regular_count ? 0 :
+-                                      (frag_files_after_defrag * 100) /
++                                      ((unsigned long long)
++                                      frag_files_after_defrag * 100) /
+                                       regular_count);
+                       }
+                       break;
diff -Nru e2fsprogs-1.44.5/debian/patches/series 
e2fsprogs-1.44.5/debian/patches/series
--- e2fsprogs-1.44.5/debian/patches/series      1969-12-31 19:00:00.000000000 
-0500
+++ e2fsprogs-1.44.5/debian/patches/series      2019-08-02 23:49:00.000000000 
-0400
@@ -0,0 +1 @@
+revert-e4defrag-use-64-bit-counters-to-t.patch

Reply via email to