* [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).