Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1032286AbbKELHN (ORCPT ); Thu, 5 Nov 2015 06:07:13 -0500 Received: from mail-lb0-f177.google.com ([209.85.217.177]:36581 "EHLO mail-lb0-f177.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1032226AbbKELHH (ORCPT ); Thu, 5 Nov 2015 06:07:07 -0500 MIME-Version: 1.0 In-Reply-To: References: <1446563847-14005-1-git-send-email-agruenba@redhat.com> <1446563847-14005-46-git-send-email-agruenba@redhat.com> Date: Thu, 5 Nov 2015 12:07:05 +0100 Message-ID: Subject: Re: [PATCH v13 45/51] sunrpc: Allow to demand-allocate pages to encode into From: Andreas Gruenbacher To: Trond Myklebust Cc: Alexander Viro , "Theodore Ts'o" , Andreas Dilger , "J. Bruce Fields" , Jeff Layton , Anna Schumaker , Dave Chinner , linux-ext4 , XFS Developers , Linux Kernel Mailing List , Linux FS-devel Mailing List , Linux NFS Mailing List , linux-cifs@vger.kernel.org, Linux API Mailing List Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1865 Lines: 43 Trond, On Tue, Nov 3, 2015 at 5:25 PM, Trond Myklebust wrote: > On Tue, Nov 3, 2015 at 10:17 AM, Andreas Gruenbacher > wrote: >> When encoding large, variable-length objects such as acls into xdr_bufs, >> it is easier to allocate buffer pages on demand rather than precomputing >> the required buffer size. > > NACK. We're not doing allocations from inside the XDR encoders. This > can and should be done before calling into the SUNRPC layer. an XDR-encoded ACL can be up to 64k (16 pages) in size. In practice, large ACLs like that will almost never occur and almost all ACLs will fit into a single page though. The XDR-encoded ACL contains strings for the user and group names which need to be looked up when the idmapper is used. Those lookups are somewhat expensive; in addition, the lookup results can change over time. When precomputing the size, allocating space, and then encoding the ACL, we could run out of space when encoding. So we could always allocate the maximum 16 pages, encode the acl, and free the unused pages. This would be rather wasteful though. Given how simple it is to allocate pages as we go, this seems the better choice here. This doesn't break any existing code either; NULL page pointers would have oopsed in xdr_get_next_encode_buffer before. >From the memory management point of view, there is no difference in preallocating GFP_NOFS pages and allocating them on demand; the pages are allocated in the same task and locking context in both cases. So could you please explain why you object to this change? Thanks, Andreas -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/