Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750980AbdCQFDS (ORCPT ); Fri, 17 Mar 2017 01:03:18 -0400 Received: from mail-eopbgr50100.outbound.protection.outlook.com ([40.107.5.100]:18122 "EHLO EUR03-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751173AbdCQFBO (ORCPT ); Fri, 17 Mar 2017 01:01:14 -0400 Authentication-Results: openvz.org; dkim=none (message not signed) header.d=none;openvz.org; dmarc=none action=none header.from=virtuozzo.com; Date: Thu, 16 Mar 2017 21:59:09 -0700 From: Andrei Vagin To: Cyrill Gorcunov CC: , , , , , , , , Andrey Vagin , Jason Baron , Andy Lutomirski Subject: Re: [patch 1/3] procfs: fdinfo -- Extend information about epoll target files Message-ID: <20170317045908.GA4509@outlook.office365.com> References: <20170310082146.041584651@openvz.org> MIME-Version: 1.0 Content-Type: text/plain; charset="koi8-r" Content-Disposition: inline In-Reply-To: <20170310082146.041584651@openvz.org> User-Agent: Mutt/1.7.1 (2016-10-04) X-Originating-IP: [67.183.159.197] X-ClientProxiedBy: CO2PR07CA0072.namprd07.prod.outlook.com (10.174.192.40) To HE1PR0801MB1980.eurprd08.prod.outlook.com (10.168.94.150) X-MS-Office365-Filtering-Correlation-Id: ba82611e-04ee-499a-bf5a-08d46cf262b2 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:HE1PR0801MB1980; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1980;3:nXDvqkKdgFUOUgQ8gUt2fuwkQgzETInYdTlVDThSLMXi64/PtmVQx9Y0qP8aCwCDWuWWjYwm17DqkdY+NgjhR1IPVqqvGi7Iio7nWPrOGaigslLn0miC2a3a1UJkYX6Gd1oQAay32dBZV5FJv/igN5WeRcdKAkgfaabQj8y1q7bTGLirhjfzaaNvQGEkkTwNe07ehazkNM3Y6pNAJ5jmwieEFz4cr+Cz7IMYBnS+PCvt9n2SSSFD1kZrF8MWpnDkLA26f3dr+IUDCBQc0O8qkw==;25:liaH1kNZ4nAaEURrdwifYOFbvAabq9tPvitBKqNrKeZX6dkc8JKk0CpfeSJ7eVogazVfE/P3k2fjYwQZ2y1bnbIhKJ287E83IOl+USrjbW3xh8G29n1gNgGhqh3jnOKFsdPJKpuaGT4dt6JeSllCQUY5kG42h6CtSvdxE5legxWPT4xs45DQZ/n+4FSWf0vjfNIa9+fG66EJqlg4VckcAXB5FJsTGG2qpuMolruhaTkVowC9TcygEUqfubxPR4W3K9Yw4082FpvHxLJeFWw5B7ehQ9r/kNEOSOD/qpsqE1eymmMc1s4JVncuOlS2pWbgyNSK4uj+dCeDa0Klk++8gV+CTKFOM0t2KaeqmdzZYgzBIbgu8xbkJjENp+4EFnCyaxqqkFNZMCRryJyV6NgCXSRx112BZxkEoJ7H1hoKIz8Timpdn7aKkXpgd/67PI06EC158cV34Nusr0x5hqjHrw== X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1980;31:U8hT3t5kFowDN7p+vpsEbfSlRIAFDYSqSuQyKebLGGrb7mr9maOps1ePNL2VckqEG1HNd8oGw3Iq5998WmTZ3u0buO0KID3Owp307peLl+x9afGjLi6huavrGmWPyVFU6QCUdMp2dU6iIwYkD22RXieOwMuQCuPO4oXDYrqesq+P7t++6ZlXMDUOZi/Sj2ZUuuH/mN42ODVyM+sNDt7Pcak45qhvGJO6QUtlw5hvM8U=;20:5yRxrSoDFCbUElqnWPSTuVM+I/mqzxICq6KsWxTCQCwAoOpdEz5vRUZF6bXc7FvwtCdrsH+8OPHYKPokjwoQ51Us7HmyiAdjylhUzFNwzw1cyUX2Oof9NevPVfm2n73r0rIblenpXDXig1w84LiHe1oNuO0IKmK84MVj5L5s29MmB08FwviSfaUsArBi8Cjzm2o0Njl8PlFOTBpbTEUk8hdGrOHVpmewfi5iTPcsP0N+uSGvHLnn7sakth+iNaN6sqkKroXFb7tkxaFjxltA8Cmy0npZeJ/bodnaRISHnR4HIGsrDMfw5FoxMmLImcmvufVjBaS6RA4q+aV9kNGfG8hvCH63cYjhu1bJ130GHaXiJd8eCZKKQZaYVlIY2S6VYQenJDd8eYm4oCVnOUphV2nQPg2V9LlhxWQdUVhIlPA= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(278428928389397); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6041248)(20161123564025)(20161123558025)(20161123562025)(20161123560025)(20161123555025)(6072148);SRVR:HE1PR0801MB1980;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0801MB1980; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1980;4:vS1cTELXcPe8vefzEM3s+PI/sA2KNultgiG++Nl6Owa2z5spYmeT2ktShGfjEK0SPO8AiV8zemg/+GizGBix/HJc8bZ5E/1MALCM66buE2V1uYa16NrxARoA038zWy+fyK49cyVDzcrEkiOjMSCOEwtl3ZMd2n0ANj5sXDNBH/YufLz4zGEWId8PkyaVnIhU454mKCmNj7u0d0Xxfer6ZSzyPQ0WHoM3kqjq4j3FhZs15HiPvCiqujH3n1zQ7iHfP4p5RTEZZDCBSrHWY53r1HkEKFJugMikoQeAsRPWGpkLs/Pbg5vGdqQdw/8wMBJGXnvN4m1Y5+GxuqJ8pFeTTelp1Y582axfeKfQ6u8cF6b1FrqYNAAhiOrrwKp2OKuXNyUbGp3BW7e07uBMexo+LleAu7bD/shf+i9UBxTj041T9hErE8Zrn1QiY/aWFbvnjnD1RQT1MqnhRgxT2kLYRKGWCBBWnAUZnLfW4C7y3jV+2viALwxPmIpcmO4SaHVNi7d/B3LHtmN2DtB+c6O2hoQ41ugDKwaeFrwmZOEYTUGF3m9chMd4KUCQ/tBnsJLrv8Ytuoj2UYvK5b5ANClPrZAzj5Wre9VOpDb1M+PW+j47nswrAI6DTpYVHUbKKSAUsgQvbTN6nLK6I8HBPfNMVg== X-Forefront-PRVS: 0249EFCB0B X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(39450400003)(24454002)(7736002)(23686003)(189998001)(50986999)(229853002)(8676002)(5660300001)(2950100002)(2906002)(6666003)(54356999)(53936002)(50466002)(305945005)(33656002)(38730400002)(81166006)(76176999)(110136004)(6246003)(1076002)(42186005)(4326008)(6862004)(47776003)(53416004)(54906002)(86362001)(6116002)(3846002)(6506006)(83506001)(66066001)(25786008)(9686003)(55016002)(4001350100001)(18370500001);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR0801MB1980;H:outlook.office365.com;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?koi8-r?Q?1;HE1PR0801MB1980;23:gCb/heXMpG/+AJaRHFvDMH3AQ5qe4RWJVcRBjEt2U?= =?koi8-r?Q?mg76sOzUiMM0HLKosiMeB6uOgAxIb2FyhVCvE/mOWQOcXMAO7S2ZpgrjRzFSP/?= =?koi8-r?Q?UZcCOuSMGDsfWZccMHX9oZSmROP9CK0v8lPzN11aJc/I5DNuF3n7gGMaRQ2sTC?= =?koi8-r?Q?4Ru4O/vAaQE3lE/99pYB0M1rWOruDl+F5nLJ3m8x5eWfvLpsbV5vZm9fZ95b+J?= =?koi8-r?Q?swE+qfz6riQNqa57QB90NSg6WEkumIleXGPrXY+OVb6OvmpWtGBZT1d+mvlHYr?= =?koi8-r?Q?q+KVPO6TB4CaPocKiVOUkutnKTnzb3flUKJGvhi8rvOxvQIsR17riJKoEI7iaC?= =?koi8-r?Q?JJVTQqFZW8UEcMyV8qQq0r2rRFD6G3wJMb52Ns0ussy7Gjydz9jT6dwdQO7qS1?= =?koi8-r?Q?lptBsvB7ncIlKH4dUVMtsw8kRj+ftusd0vE8GjWnnw1tRxMmgGg4nq7XNvQ2o2?= =?koi8-r?Q?1aMdvrfxbwX0ppnzigBYMn259OKAerS8jVDQivN1QfmqpCpnm3ff41Bm08eYXP?= =?koi8-r?Q?tH1GoT1ZADBBqTYwIwYWwpOLIOJZRhC3ZOTbknvyeV0lEt2KV2IRlmpKXtEYs0?= =?koi8-r?Q?ARHq4EaLgNOW6RANIoT0cmkWzpi2X6bNXfM33hDXkU2uPzQpjpQsfPLa2wAOWC?= =?koi8-r?Q?TYA46nSJban/krl67uKw9gG8mVydzoC7ag9QgM2od7nPmFKnmgiPdkdVNajFzi?= =?koi8-r?Q?XJD8n8laYuTz40m+FQ9FFVWbBIHA6Twb+fvY7ivzu/YYlxmIVru5eCrDdsu9VH?= =?koi8-r?Q?0s+IlTe2Ollw6I+bANITb/edXQtvzE0CT5Eq64LG0ogFTGERFuKHxn1VA0aV8Z?= =?koi8-r?Q?z2Ps7MlA8gUGUNFof2Y9sGX/2PrWtHJMINTPx6oz80DTVUZ1VeQA57EberMQST?= =?koi8-r?Q?wIEqtyE1rh1n1+ythWX+tAK3Q2OGAMlvAmY0w7/9ezQRkukvqJdOlK4vzl8T0C?= =?koi8-r?Q?Q/KtuPqeHlRddXCpTKyIAgD7Ueboumw7jNXiNSQ4ddZbzepM7P+2CoLh87bBHm?= =?koi8-r?Q?F/72ZX1jKzxyWpxbrQUUVSUepJE3Y22oHk=3D?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1980;6:Hszg9S3G7NwKCiFb6gpS7gWCN5yXVovuEJ7RWhC5GYfELFnlNpyNyseczC82PbpUTVHnJXfq3RLDxM2boOIqGF1fZ+vN8zFGwPuIa6HPxjOe+ciYqwUtBtRy5NaUZymHI9IduWpY+2yd6OvVPBPVtmIBp6zTpw0Rt7v7eGPkbF1QYuULRuIk4ov7EzpaJrymbVK3xsLNyxLOSzf44TB8bXgqVnUD02uaG5mMWJaaGob0Idp79H5j8j6L6m/AX2TGrGCXFwTXlFX5ZresJIQBqC+sQE551YWJDuXrnHMxDZc+XtYDMyUh+9sEKHVNuJtXn8vDtvw/DGszxrc5ZegIxi46ek9UIKN/6HQ8WJnYFoJHG+IdCxOlLUdy5bJHCh/CHxachSYErSe+mIlebqxtTA==;5:9lLhPKVJhR9om3AbJZ1pt+DO11J8E4HVYcG5Gs7tdLdWFHp8XEJOMr1geKASCBMPCfHDz6zEijG7VNNYszvUxVetp5oR1Vr9n7Q+vRyaNdNoCVZRJ0A4hSDa1MUrFtCJjIFcLq+huQ9+dSqjUJeyRw==;24:lq6zO8CkgbDLPsdws3C7Clcmgtgq48l0m4/iGbGA5Q1Cn1elOKdd0suZk2DG7RkHW5xBBZkiunMHOoH6J/bBZGQjEHKiq0txB1MkYPGGL+4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1980;7:180AWAwjusWT4VfzRSiJSgIabwF2Y0voDbjloNl6foVYzH3G69RNg1R6e5BUoiNCv5ZKtQya7LVB2lXc/GY/DTGRq5VveYBHdkUsLkUvVKRN3JJ/zO95zJ9/28kVnFqloPthMElYwMjCuPF1kI4yvfce10do3FuDOVj1KZxsyCqcFwwsdUP/OrtyQHZCe5V2BV/+HXgWp6eQ80PBPx1i4UdCfPf3EXbPVfZLb0FtWyBOnj6gas4wc1+KvCKwVZ2HEvQ7jKnMLvht5R+7ymOreynvkpF1aAPROTNK2TYRIXEUdJcjlsNsknCnOtFMDoibvmlYDjPnWbCYlmT23s/fiA==;20:zo0DuGQBuqvHHK2NH7RVcStcx8o7LbPwQAdW2ckhMEASM8ILtPakAtiGPBU5CP63xz6lCzjY3KySwBR1yzvvxfoFGAq+X0uu5liiMq+34jH/1aToPGrr4vTo0w7fp0Lvnsuiil6yvtlXO5YKnkvS0q+xvGcy6/x5vjwWqlbbHN8= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2017 04:59:22.2349 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1980 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3294 Lines: 79 On Fri, Mar 10, 2017 at 11:16:56AM +0300, Cyrill Gorcunov wrote: > Since it is possbile to have same number in tfd field (say > file added, closed, then nother file dup'ed to same number > and added back) it is imposible to distinguish such target > files solely by their numbers. > > Strictly speaking regular applications don't need to recognize > these targets at all but for checkpoint/restore sake we need > to collect targets to be able to push them back on restore > stage in a proper order. > > Thus lets add file position, inode and device number where > this target lays. This three fields can be used as a primary > key for sorting, and together with kcmp help CRIU can find > out an exact file target (from the whole set of processes > being checkpointed). > > Signed-off-by: Cyrill Gorcunov > CC: Al Viro > CC: Andrew Morton > CC: Andrey Vagin > CC: Pavel Emelyanov > CC: Michael Kerrisk > CC: Kir Kolyshkin > CC: Jason Baron > CC: Andy Lutomirski > --- > Documentation/filesystems/proc.txt | 6 +++++- > fs/eventpoll.c | 8 ++++++-- > 2 files changed, 11 insertions(+), 3 deletions(-) > > Index: linux-ml.git/Documentation/filesystems/proc.txt > =================================================================== > --- linux-ml.git.orig/Documentation/filesystems/proc.txt > +++ linux-ml.git/Documentation/filesystems/proc.txt > @@ -1779,12 +1779,16 @@ pair provide additional information part > pos: 0 > flags: 02 > mnt_id: 9 > - tfd: 5 events: 1d data: ffffffffffffffff > + tfd: 5 events: 1d data: ffffffffffffffff pos:0 ino:61af sdev:7 I think it may be better to print mnt_id instead of sdev, because there may be two file descriptors opened from different bind mounts. > > where 'tfd' is a target file descriptor number in decimal form, > 'events' is events mask being watched and the 'data' is data > associated with a target [see epoll(7) for more details]. > > + The 'pos' is current offset of the target file in decimal form > + [see lseek(2)], 'ino' and 'sdev' are inode and device numbers > + where target file resides, all in hex format. > + > Fsnotify files > ~~~~~~~~~~~~~~ > For inotify files the format is the following > Index: linux-ml.git/fs/eventpoll.c > =================================================================== > --- linux-ml.git.orig/fs/eventpoll.c > +++ linux-ml.git/fs/eventpoll.c > @@ -883,10 +883,14 @@ static void ep_show_fdinfo(struct seq_fi > mutex_lock(&ep->mtx); > for (rbp = rb_first(&ep->rbr); rbp; rbp = rb_next(rbp)) { > struct epitem *epi = rb_entry(rbp, struct epitem, rbn); > + struct inode *inode = file_inode(epi->ffd.file); > > - seq_printf(m, "tfd: %8d events: %8x data: %16llx\n", > + seq_printf(m, "tfd: %8d events: %8x data: %16llx " > + " pos:%lli ino:%lx sdev:%x\n", > epi->ffd.fd, epi->event.events, > - (long long)epi->event.data); > + (long long)epi->event.data, > + (long long)epi->ffd.file->f_pos, > + inode->i_ino, inode->i_sb->s_dev); > if (seq_has_overflowed(m)) > break; > } >