From patchwork Fri Oct 19 15:29:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Olga Kornievskaia X-Patchwork-Id: 10649659 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2CD1213A4 for ; Fri, 19 Oct 2018 15:29:33 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1B19127F91 for ; Fri, 19 Oct 2018 15:29:33 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0F65727F93; Fri, 19 Oct 2018 15:29:33 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A796B27F91 for ; Fri, 19 Oct 2018 15:29:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727111AbeJSXgG (ORCPT ); Fri, 19 Oct 2018 19:36:06 -0400 Received: from mail-qk1-f176.google.com ([209.85.222.176]:36041 "EHLO mail-qk1-f176.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727050AbeJSXgG (ORCPT ); Fri, 19 Oct 2018 19:36:06 -0400 Received: by mail-qk1-f176.google.com with SMTP id q184-v6so3172469qkd.3 for ; Fri, 19 Oct 2018 08:29:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=wzM28fyRrGae7dNmCOklbuBeRpcE9I8WDMZYsl7VmlU=; b=AlcLAAU4USTql/IiiZ3ii66sidowzFaFJu76u3fK/RAgSq0RQ3shW8DaN3gY7eSqZ3 /kFHxdhzP5JnMEcLUkI6gSJTD30d7v+FQ1OP7MWzp2HkCbEg9rFteHIPspDWiYizV7/B HlO4ZjRxEZ56x/o9uvVk45kK+SaOin7nwWb7cPtHpeMHTxuQv4DXXjORg+fxof9Pz8Jl udOJKbd6JGFsMe/LOQWI2L9zNY01dcto2eR34LpKi+joWm+2umG/b2ao5x+wpuRCsNNW b9G1Jngiq6tC9+kClAvdRNi/zdDWHQdLBm+UKg1JnCjqsXSqIFdmX1F4B/hY2OzK4qM6 vhCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=wzM28fyRrGae7dNmCOklbuBeRpcE9I8WDMZYsl7VmlU=; b=lcmFAa5xVa7QO/ri5W9VVipCU0QmG4p8nIqkHn3joe8HvsUEzHvaNRMgwdddwvi9m8 nwloFVu3w3qR3AQCPjZeMp/klJrtp0wG3XnwTLFaCCevH8LK6r+fk7MgLc6nFe5Uko36 BlvGZJhFyWF5NSw+jsdUtC88wMycxHl6EaJen7y+tUxSqu/nlWo6Tbm/nruO3+1X2gMz mo5pC1CpEUlrmFJVoK2AyWceZZToO8M4UMScBm6FBigtNGafZ6wsKqef2FkfcnKof1mT zXbkn+6foC/o4unuKiKC4astLm/SvEDlpVgMgphnxz9xCrXMA3LSjAWp6YMFlRIZgDbU WwcQ== X-Gm-Message-State: ABuFfojgV7GTZ3QknfHBobf2y19Nn2TGwzZ4T+zec5LSXa6Sqfof9M2G pDUJgPizdvcdCH83odxvztjmDvpY X-Google-Smtp-Source: ACcGV61WqaYDFesj80XxIYsRl+7V6wAjyPdfTVjVV0g2mn2De3nwcxWjDZDdO4QKprOhdwpSnlWC+w== X-Received: by 2002:a37:89c4:: with SMTP id l187-v6mr33761631qkd.50.1539962970763; Fri, 19 Oct 2018 08:29:30 -0700 (PDT) Received: from Olgas-MBP-195.attlocal.net (172-10-226-31.lightspeed.livnmi.sbcglobal.net. [172.10.226.31]) by smtp.gmail.com with ESMTPSA id w39-v6sm17358099qtc.84.2018.10.19.08.29.29 (version=TLS1 cipher=AES128-SHA bits=128/128); Fri, 19 Oct 2018 08:29:30 -0700 (PDT) From: Olga Kornievskaia To: trondmy@hammerspace.com, anna.schumaker@netapp.com Cc: linux-nfs@vger.kernel.org Subject: [PATCH v1 00/11] client-side support for "inter" SSC copy Date: Fri, 19 Oct 2018 11:29:21 -0400 Message-Id: <20181019152932.32462-1-olga.kornievskaia@gmail.com> X-Mailer: git-send-email 2.10.1 (Apple Git-78) Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Olga Kornievskaia This patch series adds client-side support for doing NFSv4.2 "inter" copy offload between different NFS servers. In case of the "inter" SSC copy files reside on different servers and thus under different superblocks and require that VFS removes the restriction that src and dst files must be on the same superblock. NFS's copy_file_range() determines if the copy is "intra" or "inter" and for "inter" it sends the COPY_NOTIFY to the source server. Then, it would send of an asynchronous COPY to the destination server. If an application cancels an in-flight COPY, OFFLOAD_CANCEL is sent to both of the servers. This patch series also include necessary client-side additions that are performed by the destination server. The server needs an NFS open that represents a source file without doing an actual open. Two function nfs42_ssc_open/nfs42_ssc_close() are introduced to accomplish it that make use of the VFS's alloc_file_pseudo() to represent an open. Also this particular open is marked (NFS_SVC_SSC_COPY_STATE) so that if the destination server ever to receive stateid errors on this stateid, it knows not to initiate state recovery (in case when source server reboots). The recovery must be done by the client and a new copy must be initiated. Therefore, in this case the recovery needs to fail with EIO. Anna Schumaker (1): fs: Don't copy beyond the end of the file Olga Kornievskaia (10): VFS permit cross device vfs_copy_file_range NFS test for intra vs inter COPY NFS NFSD defining nl4_servers structure needed by both NFS add COPY_NOTIFY operation NFS add ca_source_server<> to COPY NFS also send OFFLOAD_CANCEL to source server NFS inter ssc open NFS skip recovery of copy open on dest server NFS for "inter" copy treat ESTALE as ENOTSUPP NFS COPY handle ERR_OFFLOAD_DENIED Documentation/filesystems/vfs.txt | 4 +- fs/nfs/nfs42.h | 15 ++- fs/nfs/nfs42proc.c | 129 ++++++++++++++++++++++--- fs/nfs/nfs42xdr.c | 193 +++++++++++++++++++++++++++++++++++++- fs/nfs/nfs4_fs.h | 8 ++ fs/nfs/nfs4file.c | 123 +++++++++++++++++++++++- fs/nfs/nfs4proc.c | 6 +- fs/nfs/nfs4state.c | 14 +++ fs/nfs/nfs4xdr.c | 1 + fs/read_write.c | 16 ++-- include/linux/nfs4.h | 25 +++++ include/linux/nfs_fs_sb.h | 1 + include/linux/nfs_xdr.h | 17 ++++ 13 files changed, 526 insertions(+), 26 deletions(-)