From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S263249AbTECEJb (ORCPT ); Sat, 3 May 2003 00:09:31 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S263250AbTECEJb (ORCPT ); Sat, 3 May 2003 00:09:31 -0400 Received: from e33.co.us.ibm.com ([32.97.110.131]:9718 "EHLO e33.co.us.ibm.com") by vger.kernel.org with ESMTP id S263249AbTECEJa (ORCPT ); Sat, 3 May 2003 00:09:30 -0400 Date: Sat, 3 May 2003 09:54:31 +0530 From: Dipankar Sarma To: Andrew Morton Cc: viro@parcelfarce.linux.theplanet.co.uk, linux-kernel@vger.kernel.org Subject: Re: [PATCH] reducing overheads in fget/fput Message-ID: <20030503042431.GC1407@in.ibm.com> Reply-To: dipankar@in.ibm.com References: <20030428165240.GA1105@in.ibm.com> <20030428193228.GP10374@parcelfarce.linux.theplanet.co.uk> <20030428195836.GD1105@in.ibm.com> <20030502171726.GA1414@in.ibm.com> <20030502135404.0ba2ca66.akpm@digeo.com> <20030503035300.GA1407@in.ibm.com> <20030502210003.7ab96802.akpm@digeo.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20030502210003.7ab96802.akpm@digeo.com> User-Agent: Mutt/1.4i Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org On Fri, May 02, 2003 at 09:00:03PM -0700, Andrew Morton wrote: > Dipankar Sarma wrote: > > Not sure what your grouse is, but I don't like the fget_ligth()/fput_light > > semantics myself. They don't seem natural, but I can't think of > > better way to do this. > > Precisely. I thought of doing something like - static inline is_fds_shared(void) { struct files_struct *files = current->files; return atomic_read(&files->count) != 1; } sys_blah(..) { int fds_shared = is_fds_shared(); file = fget_light(fd, fds_shared); ... ... fput_light(file, fds_shared); } It still didn't look very natural. We leave open the possibility of users doing is_fds_shared() for both fget_light and fput_light. With fput_needed flag, atleast we force them to use what is returned by fget_light. Thanks Dipankar