From nobody Sat Feb 7 09:38:16 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1571920309; cv=none; d=zoho.com; s=zohoarc; b=XEQ7quxYbMk47ZaIZjNpfaEM2pk1SmyF7b3EdklKfdxu1sf2zcEoUa3L5vyXdkk5ojkvpB24CvBx1YFIDwx9Q+zWt0gvLkU1z06qt5cMC8SmcJWp/JiI8xsGEkNpf6ztruxKBeDQxsy5PKAlGqeAHuY3377vjZO+vdobERe+5cw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1571920309; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=2zmQoqXTuy3AmkJlK9V5BPRo4oz08bz1cJxtEi8udjo=; b=VRXdEeIJr6iSts01/Y9/koiksnMKaqKI7kBsy6Xsbc1phkTzp4OZnhiyqjFOxcIZFrdDxvMcuAr+oOUhH1y1eiiTVOvIkGBFt8njZg5vR3oaRJA7TOsa0eH+iIJt54hEPaHIjQ0f30d+WfoKw6b0sz8/wphv17hoLkUeu11aaC4= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1571920309565688.0778434388099; Thu, 24 Oct 2019 05:31:49 -0700 (PDT) Received: from localhost ([::1]:41082 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iNcHB-0003x6-2I for importer@patchew.org; Thu, 24 Oct 2019 08:31:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39551) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iNbIY-0004W0-S2 for qemu-devel@nongnu.org; Thu, 24 Oct 2019 07:28:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iNbIX-0000FQ-Mr for qemu-devel@nongnu.org; Thu, 24 Oct 2019 07:28:58 -0400 Received: from us-smtp-1.mimecast.com ([205.139.110.61]:25447 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iNbIX-0000FF-Ih for qemu-devel@nongnu.org; Thu, 24 Oct 2019 07:28:57 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-312-UYg3KWsvPGWWtg4SU_Ismg-1; Thu, 24 Oct 2019 07:28:53 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 37886476; Thu, 24 Oct 2019 11:28:52 +0000 (UTC) Received: from dgilbert-t580.localhost (ovpn-117-248.ams2.redhat.com [10.36.117.248]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7A7321C93D; Thu, 24 Oct 2019 11:28:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1571916537; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=2zmQoqXTuy3AmkJlK9V5BPRo4oz08bz1cJxtEi8udjo=; b=IhLbCnEbvHKaUzfoMjPGiUFJeAJdXNjiHyCLk0+iBEdWFsUUaQ7UakLuqUPmFSf/TFblIN dOJgHNFsJr5gm6YmO7yU1MCzkpr750u2+3mPVtkscgMPQAM2C4IpBYZ3re7izd34MZCCKa 7k91G0LhRsEEjc0KfZUqCVApucwFANk= From: "Dr. David Alan Gilbert (git)" To: qemu-devel@nongnu.org, renzhen@linux.alibaba.com, eguan@linux.alibaba.com, ganesh.mahalingam@intel.com, m.mizuma@jp.fujitsu.com, mszeredi@redhat.com, misono.tomohiro@jp.fujitsu.com, tao.peng@linux.alibaba.com, piaojun@huawei.com, stefanha@redhat.com, vgoyal@redhat.com, mst@redhat.com, berrange@redhat.com Subject: [PATCH 22/25] virtiofsd: set maximum RLIMIT_NOFILE limit Date: Thu, 24 Oct 2019 12:27:15 +0100 Message-Id: <20191024112718.34657-23-dgilbert@redhat.com> In-Reply-To: <20191024112718.34657-1-dgilbert@redhat.com> References: <20191024112718.34657-1-dgilbert@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-MC-Unique: UYg3KWsvPGWWtg4SU_Ismg-1 X-Mimecast-Spam-Score: 0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 205.139.110.61 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" From: Stefan Hajnoczi virtiofsd can exceed the default open file descriptor limit easily on most systems. Take advantage of the fact that it runs as root to set up the maximum open file descriptor limit allowed on the system (the nr_open sysctl). Signed-off-by: Stefan Hajnoczi --- contrib/virtiofsd/passthrough_ll.c | 34 ++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/contrib/virtiofsd/passthrough_ll.c b/contrib/virtiofsd/passthr= ough_ll.c index fe46b25fb6..25f7ad854a 100644 --- a/contrib/virtiofsd/passthrough_ll.c +++ b/contrib/virtiofsd/passthrough_ll.c @@ -53,9 +53,11 @@ #include #include #include +#include #include #include =20 +#include #include "passthrough_helpers.h" #include "seccomp.h" =20 @@ -2110,6 +2112,36 @@ static void setup_sandbox(struct lo_data *lo) setup_seccomp(); } =20 +/* Raise the maximum number of open file descriptors to the system limit */ +static void setup_nofile_rlimit(void) +{ + gchar *nr_open =3D NULL; + struct rlimit rlim; + long long max; + + if (!g_file_get_contents("/proc/sys/fs/nr_open", &nr_open, NULL, NULL)) { + fuse_log(FUSE_LOG_ERR, "unable to read /proc/sys/fs/nr_open\n"); + exit(1); + } + + errno =3D 0; + max =3D strtoll(nr_open, NULL, 0); + if (errno) { + fuse_log(FUSE_LOG_ERR, "strtoll(%s): %m\n", nr_open); + exit(1); + } + + rlim.rlim_cur =3D max; + rlim.rlim_max =3D max; + + if (setrlimit(RLIMIT_NOFILE, &rlim) < 0) { + fuse_log(FUSE_LOG_ERR, "setrlimit(RLIMIT_NOFILE): %m\n"); + exit(1); + } + + g_free(nr_open); +} + int main(int argc, char *argv[]) { struct fuse_args args =3D FUSE_ARGS_INIT(argc, argv); @@ -2125,6 +2157,8 @@ int main(int argc, char *argv[]) /* Don't mask creation mode, kernel already did that */ umask(0); =20 + setup_nofile_rlimit(); + pthread_mutex_init(&lo.mutex, NULL); lo.root.next =3D lo.root.prev =3D &lo.root; lo.root.fd =3D -1; --=20 2.23.0