From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753552AbdJTRVV (ORCPT ); Fri, 20 Oct 2017 13:21:21 -0400 Received: from mail-db5eur01on0132.outbound.protection.outlook.com ([104.47.2.132]:29598 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753269AbdJTRVR (ORCPT ); Fri, 20 Oct 2017 13:21:17 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=avagin@virtuozzo.com; Date: Fri, 20 Oct 2017 10:21:01 -0700 From: Andrei Vagin To: Gargi Sharma Cc: Oleg Nesterov , linux-kernel@vger.kernel.org, Rik van Riel , Julia Lawall , Andrew Morton , mingo@kernel.org, pasha.tatashin@oracle.com, ktkhai@virtuozzo.com, "Eric W. Biederman" , Christoph Hellwig , lkp@intel.com, tony.luck@intel.com Subject: Re: [v6,1/2] pid: Replace pid bitmap implementation with IDR API Message-ID: <20171020172100.GA29093@outlook.office365.com> References: <1507760379-21662-2-git-send-email-gs051095@gmail.com> <20171019073050.GC29091@outlook.office365.com> <20171019161800.GA8886@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.8.3 (2017-05-23) X-Originating-IP: [4.16.175.162] X-ClientProxiedBy: SN4PR0401CA0013.namprd04.prod.outlook.com (2603:10b6:803:21::23) To HE1PR08MB0746.eurprd08.prod.outlook.com (2a01:111:e400:59b1::12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c7a02f4d-275a-474e-e888-08d517def786 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(2017052603199);SRVR:HE1PR08MB0746; X-Microsoft-Exchange-Diagnostics: 1;HE1PR08MB0746;3:XFEAmzz52iwB5dEgPmtEC+dHVJzyeAY8zxIBoA7GXHzb2gjQY939qgWx42iIGRuT6S1qDeuYsn9R13khrCKuCXmRsgKR97fZminCJ4F434hX+Eiy1kM8p6aMd5428UmM2LOdrwm2lkwBstlK0NDiJ546I7q1iW2ZQaQEktvHKvbbGCZxDPy11+6tIlj22x8F19Tj/Sob6oTaxkBxvN9+x43mL1vTqaZMtRlOyc+jmtahr24y+4R2V+vDYJh8csco;25:trcPUfXj+grd7NWQrjWT6uveKdREVeXe1816k3emtF2LvVLkexxjGw801szY+bmMddgbp9lu5fiaieDUxIDgqdnD3S5Eg3oRQwGgJLNVfME0gCiOEiMkThvSb24Nn5C2QVGy8WDgCTJkzvwdYX2MCtdNwCr7UswPdCyXn4ca53TyWlvKUlcXYonOwb4CRvkqKJIwwzCYVdFuvad+Snt+1evJKzdkaLwGZr2XY4weZvXajskh0PKPqOSosfkDn1SGjyXyeguHmHu8m9W34riGTplwSoz2DuhAq1MFkPrIwLOq5lKk+ukDUakCtx9CjP2L6cinOtDRZ+hz/ZhGfTVjaw==;31:vrTbZXDBMNS9WHclw0EudxRpu3/z2C8JnJZU9xhllYQ2whm2h0laiZBiI3UfuNdl1gnK7X947j/PSDLQGXxohc7vHilXErrdS2vkCAAU7QJKNPE5WRlFRDIhLyKsWrI8FFZl7ZJd6c6W/CZGIHqJ19vTK9T8kJu2lysz63Hp4TXXmdkmXdtRQPdsXes+Ih+Ijfqf6DTulERk2NPfHIb+1b3UYpqcMQZ06zl5Q08bp0Y= X-MS-TrafficTypeDiagnostic: HE1PR08MB0746: X-Microsoft-Exchange-Diagnostics: 1;HE1PR08MB0746;20:oS82sgpq5z6qKJkaMiuIR4vW5k0FQRt/wTisX8oF9nemLkExWhiFM9lAWO4yK/oi3dl+moLs1A3Qb+4crPIu12NqHPeBSDD8ii9RE27B6gABD6wkqT1nPWmvgEm9T+nbk7EMHxP1iDcw+lLen5VUq3tpsqTg9ZdKpcwp5hv0Bw5hgUCzXcaJG2N0eUJwcFMz+dwHxF6gr5n/dkV4x53Pvqe4rCJqk4QrW3CMv7scnNzlquVK6PlXEgrYkAg7zTpD8rCn7nUOjBiQsJcuGl4euoDfqR9acbj+ekgnWJQkoxUu7WNLqDW5gzbO4nJHohgArxLccmClravCLd3LMAuDUSRvWiqIpI28dixPPmXNVADZwkdGQVtoKKsXAUQs2rLqgnwMQsmJp6pMQImTLSGWNwJHUmwMPoDKg5n7SRgQTog=;4:f8KqT6mY0VAg9T2PenzqvM3/NQtYTOSahvi3mSDTNr9AgDw2RMbqNKleJ5IuWBf3oHTHg5sK5cVQweg4G+g3vdEM1h8Au9B6CkQNc/oCHiP1+J8DowB1nODrN4vmzcuBT9QGomnd1fS7mPaGDiwEQZojljcbxJsU7wiEhg7myb8jyjwS7BJAVUYuDXg2aljHBqseB8EBXxpCfmIzNLcW1Rq1u2JkSLTDeGlF2onV6mdqf11sYIN22BhoLi+r2GjxM7mzdWg1ye7Df1UOyhouxFBWsnnjSVd/Dr/ojF5k3A4= X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(3002001)(10201501046)(100000703101)(100105400095)(3231020)(93006095)(93001095)(6041248)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123555025)(20161123562025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:HE1PR08MB0746;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:HE1PR08MB0746; X-Forefront-PRVS: 0466CA5A45 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(979002)(6009001)(376002)(346002)(199003)(24454002)(189002)(106356001)(6916009)(3846002)(5660300001)(2950100002)(8936002)(50986999)(81156014)(81166006)(105586002)(16526018)(37156001)(93886005)(2906002)(97736004)(69596002)(53546010)(6116002)(16586007)(7416002)(83506002)(23686003)(68736007)(1076002)(58126008)(54906003)(4326008)(305945005)(316002)(7736002)(9686003)(6666003)(53936002)(33656002)(50466002)(66066001)(55016002)(39060400002)(478600001)(47776003)(1411001)(86362001)(8676002)(25786009)(54356999)(76176999)(6506006)(53416004)(101416001)(229853002)(189998001)(6246003)(18370500001)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR08MB0746;H:outlook.office365.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?koi8-r?Q?1;HE1PR08MB0746;23:skKMSY0qBfZYKYcmCVT+noi2imwFJaeuQcDWAG6vvd9?= =?koi8-r?Q?ykMvnunOOwD9zCvVZoLe7F/eQEfi2TLvZd7LRPT7JP2/SP+82G9F2bxb4AR1GG?= =?koi8-r?Q?jxZC9uncTfh5vJ8hHJbC1CFK7GmKxB2jwS+tVPEQFuFMrGOX9wDkk1uhKcd7Bi?= =?koi8-r?Q?OzF/HVJMI2RgmmDoI/+pVyS/SqgIg3yOStfvSw1URKVrZMDKZAzowsuFzW7Y/8?= =?koi8-r?Q?+b9ydZCiYasnP2C3a/GQtqAwYqCg4qSOUdadTIi4+5kzvhC5z77rMfCoshfKRm?= =?koi8-r?Q?OvvKekUvXzib2gvcjpPkL9770EkSu8+7+VYEYD1t3iioun7ZM+nC9LGCTvsWsK?= =?koi8-r?Q?j9XgjWDSPkHudm8RQAmAwEmS4XmWf2ppf/nC7ZVVyCH0MAhUfQN8k+Z3Yn/fJB?= =?koi8-r?Q?Y01V9m7KDyGObOFIUgI9WWRCqLbuLLgHpezwtLtBI1tK5YUfsUmebU5b1T5Qra?= =?koi8-r?Q?xLiMnP8UbMFh5pVSUOxdkcdnM57n/PR3ZqbDztG7+UHe/8EBjZ85zbV9VwWlnC?= =?koi8-r?Q?CwLAtY++CTdJpFSiE4g/9RzLJ1F6hDyTC3H++MzF2OGrYSPjpGt+SAZlrFo7qT?= =?koi8-r?Q?DAjoOELlCBULzFz2uyiWZ0d2kPore61OAPNVxRZ600sSjUJR4KlEaa5vgm41yL?= =?koi8-r?Q?BjZe1accWiCH9OpicblpzPn/3psIDhe0nbu+gHru/AygKHGA9WhKQQPUTd5tyw?= =?koi8-r?Q?xA5h0kRgiyGNpA5Ea/37cM3O/Fe62ucoMqPFQVviUtVcNPE+IkHsgSMEwA8dRr?= =?koi8-r?Q?r02MlI485+eI7Gn2CpcPwtSy/aCAEQ18o3ljc7pp8+3hHTZ1KzDcugsPIU6+g1?= =?koi8-r?Q?xtoA/qK+uAXy2jTcIh47REO+UuyvtmMzWnNpYtt2LbU4QLi8gCL8xKYbXEmKS4?= =?koi8-r?Q?lQ6cLrrTZpN2Yq8ufMOLOFXjyWoA5pcztVJvJ5o6feO8n+jAy9YchZDGHUnNLc?= =?koi8-r?Q?OmnlURvdFzYWegdnXC1g/KTJ3n35IKX0ln8K0rGbXDwFOr8BFct5r071x7WiX5?= =?koi8-r?Q?skzxFQ1HcEtyy+W4QSexwSTQgp/0bjnYTge7aqwI7bR3PdBMGNXEIsjUdFawkt?= =?koi8-r?Q?leu0pbaHPfsl0MIeLYYjjS8ojteZdls84dhacXWsXQ0po0YcmFQjAMYhYMA6pK?= =?koi8-r?Q?CClwCeXmLcQknQQAhkl5NNoLa4GaOBs3wsZl1oOWNyMNL3/BaYTQgVn28EW+75?= =?koi8-r?Q?rbhSZaM2NbEwHnuOsX8RAEfmRXus8ERh29quM/LseDVuCZ/gJXD5lnmnvaYV2p?= =?koi8-r?Q?Hcj9IT1UH23Yg3jQ/u7AAO6/QyN9xniYdbEZqipayNkGxKsYbnVbOP+QxxdV1e?= =?koi8-r?Q?VwWs/hQOvYHTGmeWTKXMWmJMv9UUZtw3IktPzq+MOvMffroBsBG0syH2fztJpv?= =?koi8-r?Q?+1IkjhwwdU3g8Vd7c9AVOy939w3CiZ8ttBoa3CRbyM7s=3D?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR08MB0746;6:QnkeOFDAF4ECi6Ay9NIAWYGgJsh/xNuNcTJuBfpCBvx13HNKz330sMLTWcwPg1X5vbfc+UgzWab7cQlURqDjt8R72y/rPaFE37gR3/pJVWNCMHkcSDy2Ef3iRYqcRcayIi+ryZmvOqKikiQPWQ8cSZlEAZVMaSnAv0dEPetcvtBZHQz+qavo+6bt+ujhK1l2ddSaupKTLjOz/f++g+UbrYuo/oxjB5J+pt9lHjGgpdD6A0vkuY2DnIMFJ3hMDb8zAxj2v7RQF4OjaJ5fw6MlmM1/GcaM7+qBHIV5u7SKriYlcSh1VPKIj+QGTtHh94FotoyoXhuR/zkGZ7A2x7tecg==;5:vmstL59PHKYT/iR8Jn6UmlInDs4bq1DCdv+epQRDHquYWtjyJBh93du5a3eg7UDMsuu46VSrAakdI1TFOzheg52c1U89+ViYrXNi4XG+BJ9o8jiL/Ps+tWg4DBgdXGAJt0p3zRX2mmSe/+A5jgS4VQ==;24:NzM+TZ8bHZH7gMjexPZgxgjmAVDPjbeBPwLqmtMl+Oz0CV8FXMHVosfiXr4txGbfW3w2Mwzi3dOQKupeMS1sYBxakQEFbZeLVBFJZki+15s=;7:9roBLllflXfqdhcHohy3ktCf/sItKcvUkjSJBIqpoE7qAKKTK0nDfjzWRS1YmENmfOlYaHNUMufHLQ4tlBMJzbWywDoBxDG/MNUUVp5pWx7b6msbCVVcGHEcNjCJKLhr9oBgbaX8wuI6QUIdgoOc7l9ZAJ52zAD9rhDMWKY9UJ9rXypynA9Cl0d2P+NKMe8jn4hx2inoC5XGbYm0xizD81TzGhQhnRbBHQGkZrcsYDk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR08MB0746;20:v+N488rXY3AGxs30Af9n1C1e2ohUx58O+KKAPZr3Ddm4Wi7i69rHLjdpY0BK7smmTSf+VvViQVAxNVYV/tK7sSqQUMuHeAjpH7OLmsC+q7NnL9RoNEjw8udv1z0ErYE3WGGUJ/SBGnu7IzWuxi7yxPQ2qOhIzGT9KoyIiqD2/dU= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2017 17:21:11.6565 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR08MB0746 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Oct 20, 2017 at 05:06:47PM +0100, Gargi Sharma wrote: > On Thu, Oct 19, 2017 at 5:18 PM, Oleg Nesterov wrote: > > On 10/19, Andrei Vagin wrote: > >> > >> Hi Gargi, > >> > >> This patch breaks CRIU, because it changes a meaning of ns_last_pid. > > > > ... > > > >> > @@ -311,7 +297,7 @@ static int pid_ns_ctl_handler(struct ctl_table *table, int write, > >> > * it should synchronize its usage with external means. > >> > */ > >> > > >> > - tmp.data = &pid_ns->last_pid; > >> > + tmp.data = &pid_ns->idr.idr_next; > > > > Ah, yes, off-by-one error... > > > > Gargi, I don't think you need to make another version, I'd suggest you to send > > the trivial fix to Andrew, afaics you just need to replace these 2 lines with > > > > unsigned int last; > > int err; > > > > tmp.data = &last; > > err = proc_dointvec_minmax(&tmp, write, buffer, lenp, ppos); > > if (!err) > > idr_set_cursor(&pid_ns->idr, last + 1); > > return err; > I'm not sure entirely understand how this takes care of rolling over of PIDs? > Can we ignore that? If yes, won't the tests for CRIU still break? Gargi, I don't understand what you mean. Could you elaborate? Do you mean a case when idr_next is bigger than pid_max? I think this logic remains the same what we had before switching to idr. CRIU tests works with a following patch. It is slightly modified version of Oleg's patch. diff --git a/kernel/pid_namespace.c b/kernel/pid_namespace.c index fea2c24..1c791b3 100644 --- a/kernel/pid_namespace.c +++ b/kernel/pid_namespace.c @@ -287,6 +287,7 @@ static int pid_ns_ctl_handler(struct ctl_table *table, int write, { struct pid_namespace *pid_ns = task_active_pid_ns(current); struct ctl_table tmp = *table; + int ret; if (write && !ns_capable(pid_ns->user_ns, CAP_SYS_ADMIN)) return -EPERM; @@ -298,7 +299,12 @@ static int pid_ns_ctl_handler(struct ctl_table *table, int write, */ tmp.data = &pid_ns->idr.idr_next; - return proc_dointvec_minmax(&tmp, write, buffer, lenp, ppos); + ret = proc_dointvec_minmax(&tmp, write, buffer, lenp, ppos); + if (ret < 0) + return ret; + + idr_set_cursor(&pid_ns->idr, pid_ns->idr.idr_next + 1); + return 0; } extern int pid_max; > > Thanks, > Gargi > > > > Oleg. > >