All of lore.kernel.org
 help / color / mirror / Atom feed
From: Carlos Maiolino <cmaiolino@redhat.com>
To: Andreas Dilger <adilger@dilger.ca>
Cc: Linux FS-devel Mailing List <linux-fsdevel@vger.kernel.org>,
	Eric Sandeen <sandeen@redhat.com>, Christoph Hellwig <hch@lst.de>,
	Dave Chinner <david@fromorbit.com>,
	"Darrick J. Wong" <darrick.wong@oracle.com>
Subject: Re: [PATCH 15/20] fiemap: Start using new callback from fiemap_ctx
Date: Tue, 6 Nov 2018 09:52:03 +0100	[thread overview]
Message-ID: <20181106085203.cvncdzndhjnnybrv@odin.usersys.redhat.com> (raw)
In-Reply-To: <9E0BA794-2D0F-43B8-814D-6BDFA500DD2C@dilger.ca>

On Mon, Nov 05, 2018 at 03:14:02PM -0700, Andreas Dilger wrote:
> On Oct 30, 2018, at 7:18 AM, Carlos Maiolino <cmaiolino@redhat.com> wrote:
> > 
> > Now that fiemap methods are updated to work based on the new fiemap_ctx
> > structure, update the code to use the new callback.
> > The current fiemap_fill_next_extent will be used for user calls of
> > ->fiemap methods, as its done today, but passed in as a callback to
> > fiemap_ctx. So, rename it to ifemap_fill_usr_extent().
> 
> Minor typo here s/ifemap/fiemap/
> 
> Couldn't this series have (mostly?) been achieved by just adding the
> callback to fiemap_extent_info and using that everywhere?

Not really, because fiemap_extent_info has (had now) a userspace pointer, which
isn't used in FIBMAP calls in later patches, so the idea of using callbacks
started as a need to use different code workflow, depending on the user of (now
deprecated) fiemap_extent_info

> 
> Cheers, Andreas
> 
> > The 'new' fiemap_fill_next_extent() will now be just a helper to call
> > fiemap_ctx callback.
> > 
> > Signed-off-by: Carlos Maiolino <cmaiolino@redhat.com>
> > ---
> > fs/ioctl.c         | 42 +++++++++++++++++++++++++-----------------
> > include/linux/fs.h |  2 +-
> > 2 files changed, 26 insertions(+), 18 deletions(-)
> > 
> > diff --git a/fs/ioctl.c b/fs/ioctl.c
> > index 27f79b29cb07..85a7aec40e3d 100644
> > --- a/fs/ioctl.c
> > +++ b/fs/ioctl.c
> > @@ -68,25 +68,10 @@ static int ioctl_fibmap(struct file *filp, int __user *p)
> > 	return put_user(res, p);
> > }
> > 
> > -/**
> > - * fiemap_fill_next_extent - Fiemap helper function
> > - * @fieinfo:	Fiemap context passed into ->fiemap
> > - * @logical:	Extent logical start offset, in bytes
> > - * @phys:	Extent physical start offset, in bytes
> > - * @len:	Extent length, in bytes
> > - * @flags:	FIEMAP_EXTENT flags that describe this extent
> > - *
> > - * Called from file system ->fiemap callback. Will populate extent
> > - * info as passed in via arguments and copy to user memory. On
> > - * success, extent count on fieinfo is incremented.
> > - *
> > - * Returns 0 on success, -errno on error, 1 if this was the last
> > - * extent that will fit in user array.
> > - */
> > #define SET_UNKNOWN_FLAGS	(FIEMAP_EXTENT_DELALLOC)
> > #define SET_NO_UNMOUNTED_IO_FLAGS	(FIEMAP_EXTENT_DATA_ENCRYPTED)
> > #define SET_NOT_ALIGNED_FLAGS	(FIEMAP_EXTENT_DATA_TAIL|FIEMAP_EXTENT_DATA_INLINE)
> > -int fiemap_fill_next_extent(struct fiemap_ctx *f_ctx, u64 logical,
> > +int fiemap_fill_usr_extent(struct fiemap_ctx *f_ctx, u64 logical,
> > 			    u64 phys, u64 len, u32 flags)
> > {
> > 	struct fiemap_extent_info *fieinfo = f_ctx->fc_data;
> > @@ -124,8 +109,29 @@ int fiemap_fill_next_extent(struct fiemap_ctx *f_ctx, u64 logical,
> > 		return 1;
> > 	return (flags & FIEMAP_EXTENT_LAST) ? 1 : 0;
> > }
> > -EXPORT_SYMBOL(fiemap_fill_next_extent);
> > 
> > +/**
> > + * fiemap_fill_next_extent - Fiemap helper function
> > + * @fieinfo:	Fiemap context passed into ->fiemap
> > + * @logical:	Extent logical start offset, in bytes
> > + * @phys:	Extent physical start offset, in bytes
> > + * @len:	Extent length, in bytes
> > + * @flags:	FIEMAP_EXTENT flags that describe this extent
> > + *
> > + * Called from file system ->fiemap callback. Will populate extent
> > + * info as passed in via arguments and copy to user memory. On
> > + * success, extent count on fieinfo is incremented.
> > + *
> > + * Returns 0 on success, -errno on error, 1 if this was the last
> > + * extent that will fit in user array.
> > + */
> > +
> > +int fiemap_fill_next_extent(struct fiemap_ctx *f_ctx, u64 logical,
> > +			    u64 phys, u64 len, u32 flags)
> > +{
> > +	return f_ctx->fc_cb(f_ctx, logical, phys, len, flags);
> > +}
> > +EXPORT_SYMBOL(fiemap_fill_next_extent);
> > /**
> >  * fiemap_check_flags - check validity of requested flags for fiemap
> >  * @fieinfo:	Fiemap context passed into ->fiemap
> > @@ -208,6 +214,8 @@ static int ioctl_fiemap(struct file *filp, unsigned long arg)
> > 	f_ctx.fc_start = fiemap.fm_start;
> > 	f_ctx.fc_len = len;
> > 
> > +	f_ctx.fc_cb = fiemap_fill_usr_extent;
> > +
> > 	if (fiemap.fm_extent_count != 0 &&
> > 	    !access_ok(VERIFY_WRITE, fieinfo.fi_extents_start,
> > 		       fieinfo.fi_extents_max * sizeof(struct fiemap_extent)))
> > diff --git a/include/linux/fs.h b/include/linux/fs.h
> > index 945cfb3e06e4..9a538bc0dac2 100644
> > --- a/include/linux/fs.h
> > +++ b/include/linux/fs.h
> > @@ -1704,7 +1704,7 @@ typedef int (*fiemap_fill_cb)(struct fiemap_ctx *f_ctx, u64 logical,
> > struct fiemap_ctx {
> > 	unsigned int fc_flags;	/* Flags as passed from user */
> > 	void *fc_data;
> > -	fiemap_fill_cb fc_cb; /* Unused by now */
> > +	fiemap_fill_cb fc_cb;
> > 	u64 fc_start;
> > 	u64 fc_len;
> > };
> > --
> > 2.17.1
> > 
> 
> 
> Cheers, Andreas
> 
> 
> 
> 
> 



-- 
Carlos

  reply	other threads:[~2018-11-06 18:16 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-30 13:18 [PATCH 00/20] New ->fiemap infrastructure and ->bmap removal Carlos Maiolino
2018-10-30 13:18 ` [PATCH 01/20] fs: Enable bmap() function to properly return errors Carlos Maiolino
2018-10-30 13:18 ` [PATCH 02/20] cachefiles: drop direct usage of ->bmap method Carlos Maiolino
2018-10-30 13:18 ` [PATCH 03/20] ecryptfs: drop direct calls to ->bmap Carlos Maiolino
2018-11-16 15:40   ` Christoph Hellwig
2018-10-30 13:18 ` [PATCH 04/20] iomap: Rename fiemap_ctx to fiemap_iomap_ctx Carlos Maiolino
2018-11-16 15:44   ` Christoph Hellwig
2018-10-30 13:18 ` [PATCH 05/20] fs: Introduce fiemap_ctx data structure Carlos Maiolino
2018-11-16 15:46   ` Christoph Hellwig
2018-10-30 13:18 ` [PATCH 06/20] iomap: Update iomap_fiemap to use new fiemap_ctx structure Carlos Maiolino
2018-11-16 15:48   ` Christoph Hellwig
2018-10-30 13:18 ` [PATCH 07/20] fiemap: Move fiemap flags to fiemap_ctx Carlos Maiolino
2018-11-05 22:12   ` Andreas Dilger
2018-11-06  8:37     ` Carlos Maiolino
2018-11-16 15:50       ` Christoph Hellwig
2018-11-16 15:51   ` Christoph Hellwig
2018-10-30 13:18 ` [PATCH 08/20] ext4: Remove direct usage of fiemap_extent_info Carlos Maiolino
2018-11-05 22:13   ` Andreas Dilger
2018-11-06  8:49     ` Carlos Maiolino
2018-10-30 13:18 ` [PATCH 09/20] f2fs: " Carlos Maiolino
2018-10-31  6:10   ` Chao Yu
2018-10-30 13:18 ` [PATCH 10/20] Btrfs: " Carlos Maiolino
2018-10-30 13:18 ` [PATCH 11/20] nilfs2: " Carlos Maiolino
2018-10-30 13:18 ` [PATCH 12/20] ocfs2: " Carlos Maiolino
2018-10-30 13:18 ` [PATCH 13/20] iomap: " Carlos Maiolino
2018-10-30 13:18 ` [PATCH 14/20] fiemap: Use fiemap_ctx as fiemap_fill_next_extent argument Carlos Maiolino
2018-11-16 15:54   ` Christoph Hellwig
2018-10-30 13:18 ` [PATCH 15/20] fiemap: Start using new callback from fiemap_ctx Carlos Maiolino
2018-11-05 22:14   ` Andreas Dilger
2018-11-06  8:52     ` Carlos Maiolino [this message]
2018-11-16 15:55       ` Christoph Hellwig
2018-11-19 12:26         ` Carlos Maiolino
2018-11-16 15:57   ` Christoph Hellwig
2018-11-19 12:37     ` Carlos Maiolino
2018-10-30 13:18 ` [PATCH 16/20] fibmap: Use bmap instead of ->bmap method in ioctl_fibmap Carlos Maiolino
2018-11-16 15:58   ` Christoph Hellwig
2018-11-19 12:41     ` Carlos Maiolino
2018-10-30 13:18 ` [PATCH 17/20] fiemap: Get rid of fiemap_extent_info Carlos Maiolino
2018-11-05 22:14   ` Andreas Dilger
2018-11-06  8:56     ` Carlos Maiolino
2018-11-16 16:04   ` Christoph Hellwig
2018-11-19 12:47     ` Carlos Maiolino
2018-10-30 13:18 ` [PATCH 18/20] Use FIEMAP for FIBMAP calls Carlos Maiolino
2018-11-05 22:15   ` Andreas Dilger
2018-11-06  9:11     ` Carlos Maiolino
2018-11-16 16:06   ` Christoph Hellwig
2018-11-19 12:50     ` Carlos Maiolino
2018-11-20  8:53       ` Christoph Hellwig
2018-10-30 13:18 ` [PATCH 19/20] xfs: Get rid of ->bmap Carlos Maiolino
2018-10-30 13:18 ` [PATCH 20/20] ext4: Get rid of ->bmap interface Carlos Maiolino
2018-11-16 16:07   ` Christoph Hellwig

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181106085203.cvncdzndhjnnybrv@odin.usersys.redhat.com \
    --to=cmaiolino@redhat.com \
    --cc=adilger@dilger.ca \
    --cc=darrick.wong@oracle.com \
    --cc=david@fromorbit.com \
    --cc=hch@lst.de \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=sandeen@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.