From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756541AbdDGVRl (ORCPT ); Fri, 7 Apr 2017 17:17:41 -0400 Received: from mail-yb0-f179.google.com ([209.85.213.179]:35250 "EHLO mail-yb0-f179.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752588AbdDGVRb (ORCPT ); Fri, 7 Apr 2017 17:17:31 -0400 From: Martin Brandenburg To: hubcap@omnibond.com, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Martin Brandenburg Subject: [PATCH 00/10] orangefs changes for 4.12 Date: Fri, 7 Apr 2017 17:17:02 -0400 Message-Id: <1491599832-17773-1-git-send-email-martin@omnibond.com> X-Mailer: git-send-email 2.1.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Mike, Here are the OrangeFS changes I intend for the 4.12 merge window. The biggest change here is my readdir work. The old readdir code was fragile in a number of ways relating to small buffers passed to getdents. The new code fixes all of that by separating making server requests for more data from responding to the user. OrangeFS cannot list directories from an arbitrary offset, so this saves the directory as it is received from the server. Then it can continue from the point that the user buffer got too full. Before if all of the entries did not fit, it would do a new server request on the next call and skip those that did not fit. This also handles directory seeking, which was completely ignored in the old code. I increased the number of directory entries to request in a server request from 96 to 512, which is the OrangeFS client maximum. The limit of 96 appears to have been chosen because it is small enough that most directories will fit in the buffer passed to getdents. I've included some patches for statx. Depending on how much testing we can get done over the next couple weeks, we may want to hold these for 4.13. It is very helpful to OrangeFS's performance to skip fetching size if it is not needed. I can't help but wonder if I've missed something. It passes xfstests, but I don't think it's been through all our internal tests. Then there are some miscellaneous fixes. Martin Brandenburg (10): orangefs: remove unused get_fsid_from_ino orangefs: fix bounds check for listxattr orangefs: clean up oversize xattr validation orangefs: do not set getattr_time on orangefs_lookup orangefs: rewrite readdir to fix several bugs orangefs: support llseek on directories orangefs: support very large directories orangefs: remove ORANGEFS_READDIR macros orangefs: implement statx orangefs: do not check possibly stale size on truncate fs/orangefs/dir.c | 598 ++++++++++++++++++--------------------- fs/orangefs/downcall.h | 21 +- fs/orangefs/file.c | 6 +- fs/orangefs/inode.c | 18 +- fs/orangefs/namei.c | 5 +- fs/orangefs/orangefs-dev-proto.h | 7 +- fs/orangefs/orangefs-kernel.h | 9 +- fs/orangefs/orangefs-utils.c | 63 +++-- fs/orangefs/protocol.h | 9 +- fs/orangefs/xattr.c | 26 +- 10 files changed, 363 insertions(+), 399 deletions(-) -- 2.1.4