all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Ricardo Wurmus <rekado@elephly.net>
To: Marius Bakke <mbakke@fastmail.com>
Cc: guix-devel@gnu.org
Subject: Re: 'core-updates' spring 2018
Date: Wed, 28 Mar 2018 15:32:40 +0200	[thread overview]
Message-ID: <87bmf8fhqf.fsf@elephly.net> (raw)
In-Reply-To: <87po3ph0t1.fsf@fastmail.com>


Hi Marius,

> Are you sure prlimit64 is the only syscall that needs to be adjusted?  A
> quick grep through through the commit log reveals some other interfaces
> that may need to be restored.

I’m not sure, but I looked at the RHEL6 kernel’s syscall table:

    curl http://vault.centos.org/6.9/os/Source/SPackages/kernel-2.6.32-696.el6.src.rpm | rpm2cpio - | cpio -idmv
    tar xf linux-*bz2
    less linux-*?/arch/x86/kernel/syscall_table_32.S

Looking at the table I see that the following syscalls are not
implemented and not marked as old or reserved:

        .long sys_ni_syscall    /* sys_vserver */
        .long sys_ni_syscall            /* 285 */ /* available */
        .long sys_ni_syscall    /* sys_fanotify_init */
        .long sys_ni_syscall    /* sys_fanotify_mark */
        .long sys_ni_syscall    /* sys_prlimit64  340 */
        .long sys_ni_syscall    /* sys_name_to_handle_at */
        .long sys_ni_syscall    /* sys_open_by_handle_at */

I don’t know what “available” is supposed to mean for number 285
(fallocate?) when the syscall is not implemented.  “vserver” is
not implemented on purpose according to man 2 unimplemented.

Also, I’ve been using a bunch of applications with the grafted glibc,
and the only thing I had problems with was Java’s use of prlimit64.  If
the other missing syscalls are problematic they don’t seem to affect the
software that is in use on the cluster.

Below I’ll refer to Linux 2.6.32-696.3.2.el6.x86_64, i.e. the current
RHEL6 kernel for x86_64.

> Here is the commit that removes the fallback code for missing prlimit64:
> https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=695d7d138eda449678a1650a8b8b58181033353f
>
> And here are similar commits I found by grepping the log for '3.2':
> https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=e92030239abb4038d4f915d47021d6c037239309

This is about accept4, which I cannot find in the syscall table, but
which is defined in include/linux/net.h and include/linux/syscalls.h.

> https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=1721145f0341d70a6d7807b172c5eb400b508fc0

This is about /proc/self/task/$PID/comm, which exists.

> https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=9a45f54310573c190fa270e1f80d8307750305e9

This is about recvmmsg, which is implemented.

> https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=e8f1225ca4d4afa4043c5267ae6dbe12268e2637

This is about the flags from statvfs.  I don’t know how to ascertain
whether this is implemented or not.

> Since it's fairly late in the core-updates cycle, I think it would be
> better to try restoring the prlimit64 fallback on the "rhel6" branch and
> then revisit this during the next core-updates.

I’m not too happy with this, because the longer we delay this the more
packages we have to build.  The longer the rhel6 branch has to be kept
alive the more urgent it becomes to build rhel6-core-updates and
duplicate efforts for the variant where glibc 2.25 is used.  I want to
keep this situation as short-lived as possible.

The change would only affect the 2.6.32 kernel (we shouldn’t just revert
that prlimit64 commit, but pick only the relevant parts).

> This got me thinking, perhaps it's possible to run Guix through a thin
> hypervisor layer that uses the host virtualization facilities, or a Qemu
> built against glibc 2.25.  This is similar to how "Docker" runs on
> macOS, maybe it could be used for Guix in "hostile environments" too?

I don’t want to spend time investigating this, but if someone wants to
work on this I’d be happy to test the results on my RHEL6 systems.

--
Ricardo

GPG: BCA6 89B6 3655 3801 C3C6  2150 197A 5888 235F ACAC
https://elephly.net

  reply	other threads:[~2018-03-28 13:48 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-26 10:29 'core-updates' spring 2018 Marius Bakke
2018-03-26 14:09 ` Ludovic Courtès
2018-03-26 18:34 ` Ricardo Wurmus
2018-03-27 12:03   ` Gábor Boskovits
2018-03-28 19:46     ` Ricardo Wurmus
2018-03-27 17:43   ` Marius Bakke
2018-03-28 13:32     ` Ricardo Wurmus [this message]
2018-03-29 11:29       ` Ludovic Courtès
2018-03-30  9:26       ` glibc fallback code when ‘prlimit64’ is missing Ludovic Courtès
2018-04-01 10:37         ` Ludovic Courtès
2018-03-27 20:28 ` 'core-updates' spring 2018 Mark H Weaver

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87bmf8fhqf.fsf@elephly.net \
    --to=rekado@elephly.net \
    --cc=guix-devel@gnu.org \
    --cc=mbakke@fastmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.