diff --git a/squashfs-thread-limit b/squashfs-thread-limit new file mode 100644 index 0000000..0c3a1ad --- /dev/null +++ b/squashfs-thread-limit @@ -0,0 +1,18 @@ +--- squashfs4.3/squashfs-tools/mksquashfs.c.orig 2014-05-13 00:18:20.000000000 +0200 ++++ squashfs4.3/squashfs-tools/mksquashfs.c 2016-06-16 17:06:56.347792650 +0200 +@@ -4126,6 +4126,15 @@ void initialise_threads(int readq, int f + processors = sysconf(_SC_NPROCESSORS_ONLN); + #endif + } ++ /* Every frag_thrd will: ++ * * occupy a slot in the process table (_SC_CHILD_MAX), and will ++ * * allocate SQUASHFS_FILE_MAX_SIZE (currently 1MiB), which is ++ * accounted towards the per-process datasize limit, and will ++ * * open 1 file descriptor (_SC_OPEN_MAX). ++ * Before we hit any of those limits on big irons, limit ++ * ourselves to an impressive but sane arbitrary maximum. ++ */ ++ if (processors > 64) processors = 64; + + if(multiply_overflow(processors, 3) || + multiply_overflow(processors * 3, sizeof(pthread_t))) diff --git a/squashfs.changes b/squashfs.changes index e1e62db..6a180c8 100644 --- a/squashfs.changes +++ b/squashfs.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Thu Jun 16 15:18:06 UTC 2016 - duwe@suse.com + +- Machines with 1024 processors or more reach the limit of maximum + file descriptors (bsc#984136). Other limits apply that may be + hit for no good reason. Simply limit the number of used threads + to an arbitrary number, squashfs-thread-limit. + ------------------------------------------------------------------- Thu Jan 21 16:45:45 UTC 2016 - dmueller@suse.com diff --git a/squashfs.spec b/squashfs.spec index 991425c..de7bedc 100644 --- a/squashfs.spec +++ b/squashfs.spec @@ -29,6 +29,7 @@ Patch0: squashfs-64k.patch Patch1: 0001-mksquashfs-fix-rare-race-in-fragment-waiting-in-file.patch # PATCH-FIX-UPSTREAM 0002-Fix-2GB-limit-of-the-is_fragment-.-function.patch boo#953723 Patch2: 0002-Fix-2GB-limit-of-the-is_fragment-.-function.patch +Patch3: squashfs-thread-limit %if %{?suse_version} > 1315 BuildRequires: liblz4-devel %endif @@ -47,6 +48,7 @@ squashfs images. %patch0 -p1 %patch1 -p1 %patch2 -p1 +%patch3 -p1 %build sed -i -e "s,-O2,%{optflags}," squashfs-tools/Makefile