From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,NICE_REPLY_A, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7F242C433E4 for ; Mon, 24 Aug 2020 19:07:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 538D0221E2 for ; Mon, 24 Aug 2020 19:07:46 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=toxicpanda-com.20150623.gappssmtp.com header.i=@toxicpanda-com.20150623.gappssmtp.com header.b="MBJv4eE1" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726531AbgHXTHT (ORCPT ); Mon, 24 Aug 2020 15:07:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49110 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725976AbgHXTHQ (ORCPT ); Mon, 24 Aug 2020 15:07:16 -0400 Received: from mail-qk1-x744.google.com (mail-qk1-x744.google.com [IPv6:2607:f8b0:4864:20::744]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 26DADC061573 for ; Mon, 24 Aug 2020 12:07:16 -0700 (PDT) Received: by mail-qk1-x744.google.com with SMTP id b14so8534147qkn.4 for ; Mon, 24 Aug 2020 12:07:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=toxicpanda-com.20150623.gappssmtp.com; s=20150623; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=R75/wZTikTt0dNTcj+8KTcBIGTQfY/v0lLDNE3h5aPk=; b=MBJv4eE1xnKeRqSFDQCwWlzSev2kiL+ncGq5jQOgy3izjJIYTm2Y6MEcjp0oJW0q1o e/w6HCnc391P7dWRcoDJ3jDK/SxXpVvTrOdLFW5MJaECgAAQRFhck8CFlVQY901DGBKB tuZqoa8mDWC1Noqpepr6FsegTPR9bZGPkNWW1lydKzDlOAJjakcwx9dgaqB5aQRhC5L4 OKiYG0UYQVFCAl6m0LHNp4uHq7hJ6LRiQcURlzjNBPVEpdS5FVAA0OdwK3TQnhGjopXr eHtuZXhOZ3Ton4WCP1M5XmcOZDmeHoypdDZpE6uUVEecl7QA/xeLBftAwhzryUDmHWaV fWPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=R75/wZTikTt0dNTcj+8KTcBIGTQfY/v0lLDNE3h5aPk=; b=q6umzj/G5+FemC6oUfX81GCZ/3qFj0l+VoQY1xEdtaFgSnXBKcLNhBaxOS9gsIO7vA dIwYian1rJbifRBOe2kt2m0P9/Fr55h2lIVlBFmR2rEnUDadi8NydIxDElQ5/OOMYkK+ co576A+g+4tDyp8f32CxMjB/+RuBeBmNhtUR8K8mx40Q0MDJoLVnWt2K3YZwVxr6j9no K8W3btaDfn0VBuxbWeqQKu6Y4awsW8gfnqaJlVX4CyjFu6pMUNqdi+miHp6WF9uR8quC j5Hxetdvi6SFl/uGWgAGTe4WEl4qFNuuFY2J+S2jKK5SolvvFrHU2GkEwPb+phpk5e1d QEbw== X-Gm-Message-State: AOAM532ONv0spX6dXsECdezYqCe7dwixAnzy/L3i0jrjDDTGy+if+MLN 0tIy9/uWI65H4YLAn2W6jKpXtQ== X-Google-Smtp-Source: ABdhPJy4J3uTjy2b5+ekxQKyEmxAWH4Mr/4vOy6XlkoSPF63/8phyu7dlNnBE88VTtGX08/XzP/j2g== X-Received: by 2002:a05:620a:404f:: with SMTP id i15mr6018093qko.322.1598296035271; Mon, 24 Aug 2020 12:07:15 -0700 (PDT) Received: from [192.168.1.45] (cpe-174-109-172-136.nc.res.rr.com. [174.109.172.136]) by smtp.gmail.com with ESMTPSA id d20sm10031235qkk.84.2020.08.24.12.07.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 24 Aug 2020 12:07:14 -0700 (PDT) Subject: Re: [PATCH v5 3/9] fs: add RWF_ENCODED for reading/writing compressed data To: Omar Sandoval , linux-fsdevel@vger.kernel.org, linux-btrfs@vger.kernel.org, Al Viro , Christoph Hellwig Cc: Dave Chinner , Jann Horn , Amir Goldstein , Aleksa Sarai , linux-api@vger.kernel.org, kernel-team@fb.com References: <9020a583581b644ae86b7c05de6a39fd5204f06d.1597993855.git.osandov@osandov.com> From: Josef Bacik Message-ID: <1ec3bd15-65b3-a258-df4c-bef4f8401b75@toxicpanda.com> Date: Mon, 24 Aug 2020 15:07:13 -0400 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 MIME-Version: 1.0 In-Reply-To: <9020a583581b644ae86b7c05de6a39fd5204f06d.1597993855.git.osandov@osandov.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-api-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-api@vger.kernel.org On 8/21/20 3:38 AM, Omar Sandoval wrote: > From: Omar Sandoval > > Btrfs supports transparent compression: data written by the user can be > compressed when written to disk and decompressed when read back. > However, we'd like to add an interface to write pre-compressed data > directly to the filesystem, and the matching interface to read > compressed data without decompressing it. This adds support for > so-called "encoded I/O" via preadv2() and pwritev2(). > > A new RWF_ENCODED flags indicates that a read or write is "encoded". If > this flag is set, iov[0].iov_base points to a struct encoded_iov which > is used for metadata: namely, the compression algorithm, unencoded > (i.e., decompressed) length, and what subrange of the unencoded data > should be used (needed for truncated or hole-punched extents and when > reading in the middle of an extent). For reads, the filesystem returns > this information; for writes, the caller provides it to the filesystem. > iov[0].iov_len must be set to sizeof(struct encoded_iov), which can be > used to extend the interface in the future a la copy_struct_from_user(). > The remaining iovecs contain the encoded extent. > > This adds the VFS helpers for supporting encoded I/O and documentation > for filesystem support. > > Signed-off-by: Omar Sandoval Reviewed-by: Josef Bacik Thanks, Josef