Hello community, here is the log from the commit of package squashfs for openSUSE:Factory checked in at 2016-07-01 09:54:36 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/squashfs (Old) and /work/SRC/openSUSE:Factory/.squashfs.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "squashfs" Changes: -------- --- /work/SRC/openSUSE:Factory/squashfs/squashfs.changes 2016-02-09 13:30:13.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.squashfs.new/squashfs.changes 2016-07-01 09:54:37.000000000 +0200 @@ -1,0 +2,8 @@ +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. + +------------------------------------------------------------------- New: ---- squashfs-thread-limit ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ squashfs.spec ++++++ --- /var/tmp/diff_new_pack.oFFXrH/_old 2016-07-01 09:54:38.000000000 +0200 +++ /var/tmp/diff_new_pack.oFFXrH/_new 2016-07-01 09:54:38.000000000 +0200 @@ -29,6 +29,7 @@ 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 @@ %patch0 -p1 %patch1 -p1 %patch2 -p1 +%patch3 -p1 %build sed -i -e "s,-O2,%{optflags}," squashfs-tools/Makefile ++++++ squashfs-thread-limit ++++++ --- 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)))