Return-Path: Received: from mx1.redhat.com ([209.132.183.28]:51918 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751406AbcGJT4E (ORCPT ); Sun, 10 Jul 2016 15:56:04 -0400 From: Jeff Layton To: trond.myklebust@primarydata.com, anna.schumaker@netapp.com, bfields@fieldses.org Cc: tigran.mkrtchyan@desy.de, thomas.haynes@primarydata.com, linux-nfs@vger.kernel.org Subject: [PATCH v3 0/3][resend] pnfs/nfsd: have client and server support multiple layout types Date: Sun, 10 Jul 2016 15:55:57 -0400 Message-Id: <1468180560-13004-1-git-send-email-jlayton@redhat.com> Sender: linux-nfs-owner@vger.kernel.org List-ID: From: Jeff Layton v3: - use sort() from lib/sort.c to sort the list v2: - rework Tigran's patch to preserve existing selection behaviour - simplify layout driver selection by sorting the list This is v3 of the patchset. The main change is that this patch doesn't use a hand-rolled bubble sort, but rather the heapsort library in lib/sort.c. This is mostly for conciseness since the array sizes are generally so small that it shouldn't make any perf difference. Note that this does mean that we need to keep track on the number of elements in the array that the server sends, so there are a few ancillary changes to deal with that as well. Only lightly tested by mounting a server that sends both flexfiles and block layouts. The client successfully selected the block layout in most cases, but if I blacklist blocklayoutdriver then it selects flexfiles instead. I'm sending these together, but I'd expect Bruce to pick up the nfsd patches and Trond or Anna to pick up the client-side ones. The nfsd patch is based on top of Tom's nfsd flexfile layout patches. Jeff Layton (3): nfsd: allow nfsd to advertise multiple layout types pnfs: track multiple layout types in fsinfo structure pnfs: add a new mechanism to select a layout driver according to an ordered list fs/nfs/client.c | 3 ++- fs/nfs/nfs4proc.c | 3 ++- fs/nfs/nfs4xdr.c | 40 +++++++++++++++-------------- fs/nfs/pnfs.c | 67 ++++++++++++++++++++++++++++++++++++++++--------- fs/nfs/pnfs.h | 5 ++-- fs/nfsd/export.c | 4 +-- fs/nfsd/export.h | 2 +- fs/nfsd/nfs4layouts.c | 6 ++--- fs/nfsd/nfs4proc.c | 4 +-- fs/nfsd/nfs4xdr.c | 30 +++++++++++----------- include/linux/nfs_xdr.h | 8 +++++- 11 files changed, 112 insertions(+), 60 deletions(-) -- 2.5.5