* [PATCH] iomap: Add inline data support to iomap_readpage_actor [not found] <20180615130209.1970-2-hch@lst.de> @ 2018-06-29 14:44 ` Andreas Gruenbacher 2018-07-01 6:21 ` Christoph Hellwig 0 siblings, 1 reply; 5+ messages in thread From: Andreas Gruenbacher @ 2018-06-29 14:44 UTC (permalink / raw) To: Christoph Hellwig; +Cc: cluster-devel, linux-fsdevel, linux-ext4 Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com> --- fs/iomap.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/fs/iomap.c b/fs/iomap.c index 4f10c6b..d393bb0 100644 --- a/fs/iomap.c +++ b/fs/iomap.c @@ -155,6 +155,12 @@ struct iomap_readpage_ctx { bool is_contig = false; sector_t sector; + if (iomap->type == IOMAP_INLINE) { + iomap_read_inline_data(inode, page, iomap); + plen = PAGE_SIZE - poff; + goto done; + } + /* we don't support blocksize < PAGE_SIZE quite yet. */ WARN_ON_ONCE(pos != page_offset(page)); WARN_ON_ONCE(plen != PAGE_SIZE); -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] iomap: Add inline data support to iomap_readpage_actor 2018-06-29 14:44 ` [PATCH] iomap: Add inline data support to iomap_readpage_actor Andreas Gruenbacher @ 2018-07-01 6:21 ` Christoph Hellwig 2018-07-01 21:43 ` Andreas Gruenbacher 0 siblings, 1 reply; 5+ messages in thread From: Christoph Hellwig @ 2018-07-01 6:21 UTC (permalink / raw) To: Andreas Gruenbacher Cc: cluster-devel, linux-fsdevel, linux-ext4, Christoph Hellwig Looks sensible, although I think it could use some more sanity checking and a changelog. Does the version below work for you? --- >From e4603b7acde9b77e7a4aad6038c7ac42ca35772d Mon Sep 17 00:00:00 2001 From: Andreas Gruenbacher <agruenba@redhat.com> Date: Fri, 29 Jun 2018 16:44:44 +0200 Subject: iomap: Add inline data support to iomap_readpage_actor Just copy the inline data into the page using the existing helper. Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com> Signed-off-by: Christoph Hellwig <hch@lst.de> --- fs/iomap.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/fs/iomap.c b/fs/iomap.c index 4d8ff0f5ecc9..966ffad9706a 100644 --- a/fs/iomap.c +++ b/fs/iomap.c @@ -155,6 +155,13 @@ iomap_readpage_actor(struct inode *inode, loff_t pos, loff_t length, void *data, bool is_contig = false; sector_t sector; + if (iomap->type == IOMAP_INLINE) { + WARN_ON_ONCE(poff); + WARN_ON_ONCE(plen != PAGE_SIZE); + iomap_read_inline_data(inode, page, iomap); + return PAGE_SIZE; + } + /* we don't support blocksize < PAGE_SIZE quite yet. */ WARN_ON_ONCE(pos != page_offset(page)); WARN_ON_ONCE(plen != PAGE_SIZE); -- 2.18.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] iomap: Add inline data support to iomap_readpage_actor 2018-07-01 6:21 ` Christoph Hellwig @ 2018-07-01 21:43 ` Andreas Gruenbacher 2018-07-02 12:52 ` Christoph Hellwig 0 siblings, 1 reply; 5+ messages in thread From: Andreas Gruenbacher @ 2018-07-01 21:43 UTC (permalink / raw) To: Christoph Hellwig; +Cc: cluster-devel, linux-fsdevel, linux-ext4 On 1 July 2018 at 08:21, Christoph Hellwig <hch@lst.de> wrote: > Looks sensible, although I think it could use some more sanity checking > and a changelog. Does the version below work for you? Almost. > --- > From e4603b7acde9b77e7a4aad6038c7ac42ca35772d Mon Sep 17 00:00:00 2001 > From: Andreas Gruenbacher <agruenba@redhat.com> > Date: Fri, 29 Jun 2018 16:44:44 +0200 > Subject: iomap: Add inline data support to iomap_readpage_actor > > Just copy the inline data into the page using the existing helper. > > Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com> > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- > fs/iomap.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/fs/iomap.c b/fs/iomap.c > index 4d8ff0f5ecc9..966ffad9706a 100644 > --- a/fs/iomap.c > +++ b/fs/iomap.c > @@ -155,6 +155,13 @@ iomap_readpage_actor(struct inode *inode, loff_t pos, loff_t length, void *data, > bool is_contig = false; > sector_t sector; > > + if (iomap->type == IOMAP_INLINE) { > + WARN_ON_ONCE(poff); This is ok. > + WARN_ON_ONCE(plen != PAGE_SIZE); Inline mappings only extend to the end of the file (iomap->offset == 0 && iomap->length == inode->i_size), so length and plen will be inode->i_size here. This assertion should just be removed. > + iomap_read_inline_data(inode, page, iomap); > + return PAGE_SIZE; > + } > + > /* we don't support blocksize < PAGE_SIZE quite yet. */ > WARN_ON_ONCE(pos != page_offset(page)); > WARN_ON_ONCE(plen != PAGE_SIZE); > -- > 2.18.0 > Thanks, Andreas ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] iomap: Add inline data support to iomap_readpage_actor 2018-07-01 21:43 ` Andreas Gruenbacher @ 2018-07-02 12:52 ` Christoph Hellwig 2018-07-02 15:05 ` Andreas Gruenbacher 0 siblings, 1 reply; 5+ messages in thread From: Christoph Hellwig @ 2018-07-02 12:52 UTC (permalink / raw) To: Andreas Gruenbacher Cc: cluster-devel, linux-fsdevel, linux-ext4, Christoph Hellwig On Sun, Jul 01, 2018 at 11:43:43PM +0200, Andreas Gruenbacher wrote: > > + WARN_ON_ONCE(plen != PAGE_SIZE); > > Inline mappings only extend to the end of the file (iomap->offset == 0 > && iomap->length == inode->i_size), so length and plen will be > inode->i_size here. This assertion should just be removed. But we should generally still return PAGE_SIZE from iomap_begin because we cover the whole page and zero the rest, don't we? Either way, I can remove the assert from now. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] iomap: Add inline data support to iomap_readpage_actor 2018-07-02 12:52 ` Christoph Hellwig @ 2018-07-02 15:05 ` Andreas Gruenbacher 0 siblings, 0 replies; 5+ messages in thread From: Andreas Gruenbacher @ 2018-07-02 15:05 UTC (permalink / raw) To: Christoph Hellwig; +Cc: cluster-devel, linux-fsdevel, linux-ext4 On 2 July 2018 at 14:52, Christoph Hellwig <hch@lst.de> wrote: > On Sun, Jul 01, 2018 at 11:43:43PM +0200, Andreas Gruenbacher wrote: >> > + WARN_ON_ONCE(plen != PAGE_SIZE); >> >> Inline mappings only extend to the end of the file (iomap->offset == 0 >> && iomap->length == inode->i_size), so length and plen will be >> inode->i_size here. This assertion should just be removed. > > But we should generally still return PAGE_SIZE from iomap_begin > because we cover the whole page and zero the rest, don't we? iomap_begin doesn't know when it's being called for readpage. Direct I/O reads don't pad to the page size, for example, so handling the padding in the caller seems reasonable. If you compare with regular block-based mappings, those are also block but not necessarily page aligned. For stuffed files, iomap_begin will return an IOMAP_HOLE mapping for offsets beyond the end of the file, so iterating beyond the end of the file is fine (even if readpage doesn't do that). > Either way, I can remove the assert from now. Yes, thanks. Andreas ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2018-07-02 15:05 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <20180615130209.1970-2-hch@lst.de> 2018-06-29 14:44 ` [PATCH] iomap: Add inline data support to iomap_readpage_actor Andreas Gruenbacher 2018-07-01 6:21 ` Christoph Hellwig 2018-07-01 21:43 ` Andreas Gruenbacher 2018-07-02 12:52 ` Christoph Hellwig 2018-07-02 15:05 ` Andreas Gruenbacher
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).