* [PATCH 1/2] hfsplus: fix return value of hfsplus_get_block()
@ 2018-10-10 18:23 Ernesto A. Fernández
2018-10-10 18:24 ` [PATCH 2/2] hfs: fix return value of hfs_get_block() Ernesto A. Fernández
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Ernesto A. Fernández @ 2018-10-10 18:23 UTC (permalink / raw)
To: linux-fsdevel; +Cc: Andrew Morton
Direct writes to empty inodes fail with EIO. The generic direct-io code
is in part to blame (a patch has been submitted as "direct-io: allow
direct writes to empty inodes"), but hfsplus is worse affected than the
other filesystems because the fallback to buffered I/O doesn't happen.
The problem is the return value of hfsplus_get_block() when called with
!create. Change it to be more consistent with the other modules.
Signed-off-by: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
---
fs/hfsplus/extents.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/fs/hfsplus/extents.c b/fs/hfsplus/extents.c
index 8a8893d522ef..a930ddd15681 100644
--- a/fs/hfsplus/extents.c
+++ b/fs/hfsplus/extents.c
@@ -237,7 +237,9 @@ int hfsplus_get_block(struct inode *inode, sector_t iblock,
ablock = iblock >> sbi->fs_shift;
if (iblock >= hip->fs_blocks) {
- if (iblock > hip->fs_blocks || !create)
+ if (!create)
+ return 0;
+ if (iblock > hip->fs_blocks)
return -EIO;
if (ablock >= hip->alloc_blocks) {
res = hfsplus_file_extend(inode, false);
--
2.11.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/2] hfs: fix return value of hfs_get_block()
2018-10-10 18:23 [PATCH 1/2] hfsplus: fix return value of hfsplus_get_block() Ernesto A. Fernández
@ 2018-10-10 18:24 ` Ernesto A. Fernández
2018-10-20 1:56 ` Viacheslav Dubeyko
2018-10-11 18:05 ` [PATCH 1/2] hfsplus: fix return value of hfsplus_get_block() Viacheslav Dubeyko
2018-10-20 1:55 ` Viacheslav Dubeyko
2 siblings, 1 reply; 10+ messages in thread
From: Ernesto A. Fernández @ 2018-10-10 18:24 UTC (permalink / raw)
To: linux-fsdevel; +Cc: Andrew Morton
Direct writes to empty inodes fail with EIO. The generic direct-io code
is in part to blame (a patch has been submitted as "direct-io: allow
direct writes to empty inodes"), but hfs is worse affected than the
other filesystems because the fallback to buffered I/O doesn't happen.
The problem is the return value of hfs_get_block() when called with
!create. Change it to be more consistent with the other modules.
Signed-off-by: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
---
fs/hfs/extent.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/fs/hfs/extent.c b/fs/hfs/extent.c
index 0c638c612152..5f1ff97a3b98 100644
--- a/fs/hfs/extent.c
+++ b/fs/hfs/extent.c
@@ -345,7 +345,9 @@ int hfs_get_block(struct inode *inode, sector_t block,
ablock = (u32)block / HFS_SB(sb)->fs_div;
if (block >= HFS_I(inode)->fs_blocks) {
- if (block > HFS_I(inode)->fs_blocks || !create)
+ if (!create)
+ return 0;
+ if (block > HFS_I(inode)->fs_blocks)
return -EIO;
if (ablock >= HFS_I(inode)->alloc_blocks) {
res = hfs_extend_file(inode);
--
2.11.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] hfsplus: fix return value of hfsplus_get_block()
2018-10-10 18:23 [PATCH 1/2] hfsplus: fix return value of hfsplus_get_block() Ernesto A. Fernández
2018-10-10 18:24 ` [PATCH 2/2] hfs: fix return value of hfs_get_block() Ernesto A. Fernández
@ 2018-10-11 18:05 ` Viacheslav Dubeyko
2018-10-11 19:40 ` Ernesto A. Fernández
2018-10-20 1:55 ` Viacheslav Dubeyko
2 siblings, 1 reply; 10+ messages in thread
From: Viacheslav Dubeyko @ 2018-10-11 18:05 UTC (permalink / raw)
To: Ernesto A. Fernández; +Cc: linux-fsdevel, Andrew Morton
On Wed, 2018-10-10 at 15:23 -0300, Ernesto A. Fernández wrote:
> Direct writes to empty inodes fail with EIO. The generic direct-io code
> is in part to blame (a patch has been submitted as "direct-io: allow
> direct writes to empty inodes"), but hfsplus is worse affected than the
> other filesystems because the fallback to buffered I/O doesn't happen.
>
Could you please share more detailed explanation of the patch that
affects the HFS+ behavior? It's hard to follow what patch you mean.
Thanks,
Vyacheslav Dubeyko.
> The problem is the return value of hfsplus_get_block() when called with
> !create. Change it to be more consistent with the other modules.
>
> Signed-off-by: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
> ---
> fs/hfsplus/extents.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/fs/hfsplus/extents.c b/fs/hfsplus/extents.c
> index 8a8893d522ef..a930ddd15681 100644
> --- a/fs/hfsplus/extents.c
> +++ b/fs/hfsplus/extents.c
> @@ -237,7 +237,9 @@ int hfsplus_get_block(struct inode *inode, sector_t iblock,
> ablock = iblock >> sbi->fs_shift;
>
> if (iblock >= hip->fs_blocks) {
> - if (iblock > hip->fs_blocks || !create)
> + if (!create)
> + return 0;
> + if (iblock > hip->fs_blocks)
> return -EIO;
> if (ablock >= hip->alloc_blocks) {
> res = hfsplus_file_extend(inode, false);
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] hfsplus: fix return value of hfsplus_get_block()
2018-10-11 18:05 ` [PATCH 1/2] hfsplus: fix return value of hfsplus_get_block() Viacheslav Dubeyko
@ 2018-10-11 19:40 ` Ernesto A. Fernández
2018-10-12 0:38 ` Viacheslav Dubeyko
0 siblings, 1 reply; 10+ messages in thread
From: Ernesto A. Fernández @ 2018-10-11 19:40 UTC (permalink / raw)
To: Viacheslav Dubeyko; +Cc: linux-fsdevel, Andrew Morton
On Thu, Oct 11, 2018 at 11:05:36AM -0700, Viacheslav Dubeyko wrote:
> On Wed, 2018-10-10 at 15:23 -0300, Ernesto A. Fernández wrote:
> > Direct writes to empty inodes fail with EIO. The generic direct-io code
> > is in part to blame (a patch has been submitted as "direct-io: allow
> > direct writes to empty inodes"), but hfsplus is worse affected than the
> > other filesystems because the fallback to buffered I/O doesn't happen.
> >
>
> Could you please share more detailed explanation of the patch that
> affects the HFS+ behavior? It's hard to follow what patch you mean.
It was sent to linux-fsdevel: "direct-io: allow direct writes to empty
inodes."
>
> Thanks,
> Vyacheslav Dubeyko.
>
> > The problem is the return value of hfsplus_get_block() when called with
> > !create. Change it to be more consistent with the other modules.
> >
> > Signed-off-by: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
> > ---
> > fs/hfsplus/extents.c | 4 +++-
> > 1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/fs/hfsplus/extents.c b/fs/hfsplus/extents.c
> > index 8a8893d522ef..a930ddd15681 100644
> > --- a/fs/hfsplus/extents.c
> > +++ b/fs/hfsplus/extents.c
> > @@ -237,7 +237,9 @@ int hfsplus_get_block(struct inode *inode, sector_t iblock,
> > ablock = iblock >> sbi->fs_shift;
> >
> > if (iblock >= hip->fs_blocks) {
> > - if (iblock > hip->fs_blocks || !create)
> > + if (!create)
> > + return 0;
> > + if (iblock > hip->fs_blocks)
> > return -EIO;
> > if (ablock >= hip->alloc_blocks) {
> > res = hfsplus_file_extend(inode, false);
>
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] hfsplus: fix return value of hfsplus_get_block()
2018-10-11 19:40 ` Ernesto A. Fernández
@ 2018-10-12 0:38 ` Viacheslav Dubeyko
2018-10-12 0:48 ` Ernesto A. Fernández
0 siblings, 1 reply; 10+ messages in thread
From: Viacheslav Dubeyko @ 2018-10-12 0:38 UTC (permalink / raw)
To: Ernesto A. Fernández; +Cc: linux-fsdevel, Andrew Morton
On Thu, 2018-10-11 at 16:40 -0300, Ernesto A. Fernández wrote:
> On Thu, Oct 11, 2018 at 11:05:36AM -0700, Viacheslav Dubeyko wrote:
> > On Wed, 2018-10-10 at 15:23 -0300, Ernesto A. Fernández wrote:
> > > Direct writes to empty inodes fail with EIO. The generic direct-io code
> > > is in part to blame (a patch has been submitted as "direct-io: allow
> > > direct writes to empty inodes"), but hfsplus is worse affected than the
> > > other filesystems because the fallback to buffered I/O doesn't happen.
> > >
> >
> > Could you please share more detailed explanation of the patch that
> > affects the HFS+ behavior? It's hard to follow what patch you mean.
>
> It was sent to linux-fsdevel: "direct-io: allow direct writes to empty
> inodes."
>
The git provides the commit ID and the annotation for every commit. It
will be great to see these details. Could you please share this
information?
Thanks,
Vyacheslav Dubeyko.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] hfsplus: fix return value of hfsplus_get_block()
2018-10-12 0:38 ` Viacheslav Dubeyko
@ 2018-10-12 0:48 ` Ernesto A. Fernández
2018-10-12 18:43 ` Viacheslav Dubeyko
0 siblings, 1 reply; 10+ messages in thread
From: Ernesto A. Fernández @ 2018-10-12 0:48 UTC (permalink / raw)
To: Viacheslav Dubeyko; +Cc: linux-fsdevel, Andrew Morton
On Thu, Oct 11, 2018 at 05:38:35PM -0700, Viacheslav Dubeyko wrote:
> On Thu, 2018-10-11 at 16:40 -0300, Ernesto A. Fernández wrote:
> > On Thu, Oct 11, 2018 at 11:05:36AM -0700, Viacheslav Dubeyko wrote:
> > > On Wed, 2018-10-10 at 15:23 -0300, Ernesto A. Fernández wrote:
> > > > Direct writes to empty inodes fail with EIO. The generic direct-io code
> > > > is in part to blame (a patch has been submitted as "direct-io: allow
> > > > direct writes to empty inodes"), but hfsplus is worse affected than the
> > > > other filesystems because the fallback to buffered I/O doesn't happen.
> > > >
> > >
> > > Could you please share more detailed explanation of the patch that
> > > affects the HFS+ behavior? It's hard to follow what patch you mean.
> >
> > It was sent to linux-fsdevel: "direct-io: allow direct writes to empty
> > inodes."
> >
>
> The git provides the commit ID and the annotation for every commit. It
> will be great to see these details. Could you please share this
> information?
The patch hasn't been merged yet.
>
> Thanks,
> Vyacheslav Dubeyko.
>
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] hfsplus: fix return value of hfsplus_get_block()
2018-10-12 0:48 ` Ernesto A. Fernández
@ 2018-10-12 18:43 ` Viacheslav Dubeyko
2018-10-12 21:00 ` Ernesto A. Fernández
0 siblings, 1 reply; 10+ messages in thread
From: Viacheslav Dubeyko @ 2018-10-12 18:43 UTC (permalink / raw)
To: Ernesto A. Fernández; +Cc: linux-fsdevel, Andrew Morton
On Thu, 2018-10-11 at 21:48 -0300, Ernesto A. Fernández wrote:
> On Thu, Oct 11, 2018 at 05:38:35PM -0700, Viacheslav Dubeyko wrote:
> > On Thu, 2018-10-11 at 16:40 -0300, Ernesto A. Fernández wrote:
> > > On Thu, Oct 11, 2018 at 11:05:36AM -0700, Viacheslav Dubeyko wrote:
> > > > On Wed, 2018-10-10 at 15:23 -0300, Ernesto A. Fernández wrote:
> > > > > Direct writes to empty inodes fail with EIO. The generic direct-io code
> > > > > is in part to blame (a patch has been submitted as "direct-io: allow
> > > > > direct writes to empty inodes"), but hfsplus is worse affected than the
> > > > > other filesystems because the fallback to buffered I/O doesn't happen.
> > > > >
> > > >
> > > > Could you please share more detailed explanation of the patch that
> > > > affects the HFS+ behavior? It's hard to follow what patch you mean.
> > >
> > > It was sent to linux-fsdevel: "direct-io: allow direct writes to empty
> > > inodes."
> > >
> >
> > The git provides the commit ID and the annotation for every commit. It
> > will be great to see these details. Could you please share this
> > information?
>
> The patch hasn't been merged yet.
>
I am not completely sure how to review the patch in such case. I believe
that the best strategy is to wait till the mentioned patch will be
merged and to resend this patch again.
Thanks,
Vyacheslav Dubeyko.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] hfsplus: fix return value of hfsplus_get_block()
2018-10-12 18:43 ` Viacheslav Dubeyko
@ 2018-10-12 21:00 ` Ernesto A. Fernández
0 siblings, 0 replies; 10+ messages in thread
From: Ernesto A. Fernández @ 2018-10-12 21:00 UTC (permalink / raw)
To: Viacheslav Dubeyko; +Cc: linux-fsdevel, Andrew Morton
On Fri, Oct 12, 2018 at 11:43:06AM -0700, Viacheslav Dubeyko wrote:
> On Thu, 2018-10-11 at 21:48 -0300, Ernesto A. Fernández wrote:
> > On Thu, Oct 11, 2018 at 05:38:35PM -0700, Viacheslav Dubeyko wrote:
> > > On Thu, 2018-10-11 at 16:40 -0300, Ernesto A. Fernández wrote:
> > > > On Thu, Oct 11, 2018 at 11:05:36AM -0700, Viacheslav Dubeyko wrote:
> > > > > On Wed, 2018-10-10 at 15:23 -0300, Ernesto A. Fernández wrote:
> > > > > > Direct writes to empty inodes fail with EIO. The generic direct-io code
> > > > > > is in part to blame (a patch has been submitted as "direct-io: allow
> > > > > > direct writes to empty inodes"), but hfsplus is worse affected than the
> > > > > > other filesystems because the fallback to buffered I/O doesn't happen.
> > > > > >
> > > > >
> > > > > Could you please share more detailed explanation of the patch that
> > > > > affects the HFS+ behavior? It's hard to follow what patch you mean.
> > > >
> > > > It was sent to linux-fsdevel: "direct-io: allow direct writes to empty
> > > > inodes."
> > > >
> > >
> > > The git provides the commit ID and the annotation for every commit. It
> > > will be great to see these details. Could you please share this
> > > information?
> >
> > The patch hasn't been merged yet.
> >
>
> I am not completely sure how to review the patch in such case. I believe
> that the best strategy is to wait till the mentioned patch will be
> merged and to resend this patch again.
You can just ignore the direct-io patch if you find it confusing. It's
a separate issue, and the hfs/hfsplus patches are actually easier to
test by themselves.
> Thanks,
> Vyacheslav Dubeyko.
>
>
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] hfsplus: fix return value of hfsplus_get_block()
2018-10-10 18:23 [PATCH 1/2] hfsplus: fix return value of hfsplus_get_block() Ernesto A. Fernández
2018-10-10 18:24 ` [PATCH 2/2] hfs: fix return value of hfs_get_block() Ernesto A. Fernández
2018-10-11 18:05 ` [PATCH 1/2] hfsplus: fix return value of hfsplus_get_block() Viacheslav Dubeyko
@ 2018-10-20 1:55 ` Viacheslav Dubeyko
2 siblings, 0 replies; 10+ messages in thread
From: Viacheslav Dubeyko @ 2018-10-20 1:55 UTC (permalink / raw)
To: Ernesto A. Fernández; +Cc: linux-fsdevel, Andrew Morton
On Wed, 2018-10-10 at 15:23 -0300, Ernesto A. Fernández wrote:
> Direct writes to empty inodes fail with EIO. The generic direct-io code
> is in part to blame (a patch has been submitted as "direct-io: allow
> direct writes to empty inodes"), but hfsplus is worse affected than the
> other filesystems because the fallback to buffered I/O doesn't happen.
>
> The problem is the return value of hfsplus_get_block() when called with
> !create. Change it to be more consistent with the other modules.
>
> Signed-off-by: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
> ---
> fs/hfsplus/extents.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/fs/hfsplus/extents.c b/fs/hfsplus/extents.c
> index 8a8893d522ef..a930ddd15681 100644
> --- a/fs/hfsplus/extents.c
> +++ b/fs/hfsplus/extents.c
> @@ -237,7 +237,9 @@ int hfsplus_get_block(struct inode *inode, sector_t iblock,
> ablock = iblock >> sbi->fs_shift;
>
> if (iblock >= hip->fs_blocks) {
> - if (iblock > hip->fs_blocks || !create)
> + if (!create)
> + return 0;
> + if (iblock > hip->fs_blocks)
> return -EIO;
> if (ablock >= hip->alloc_blocks) {
> res = hfsplus_file_extend(inode, false);
Looks good. Finally, I think it should work properly.
Reviewed-by: Vyacheslav Dubeyko <slava@dubeyko.com>
Thanks,
Vyacheslav Dubeyko.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] hfs: fix return value of hfs_get_block()
2018-10-10 18:24 ` [PATCH 2/2] hfs: fix return value of hfs_get_block() Ernesto A. Fernández
@ 2018-10-20 1:56 ` Viacheslav Dubeyko
0 siblings, 0 replies; 10+ messages in thread
From: Viacheslav Dubeyko @ 2018-10-20 1:56 UTC (permalink / raw)
To: Ernesto A. Fernández; +Cc: linux-fsdevel, Andrew Morton
On Wed, 2018-10-10 at 15:24 -0300, Ernesto A. Fernández wrote:
> Direct writes to empty inodes fail with EIO. The generic direct-io code
> is in part to blame (a patch has been submitted as "direct-io: allow
> direct writes to empty inodes"), but hfs is worse affected than the
> other filesystems because the fallback to buffered I/O doesn't happen.
>
> The problem is the return value of hfs_get_block() when called with
> !create. Change it to be more consistent with the other modules.
>
> Signed-off-by: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
> ---
> fs/hfs/extent.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/fs/hfs/extent.c b/fs/hfs/extent.c
> index 0c638c612152..5f1ff97a3b98 100644
> --- a/fs/hfs/extent.c
> +++ b/fs/hfs/extent.c
> @@ -345,7 +345,9 @@ int hfs_get_block(struct inode *inode, sector_t block,
> ablock = (u32)block / HFS_SB(sb)->fs_div;
>
> if (block >= HFS_I(inode)->fs_blocks) {
> - if (block > HFS_I(inode)->fs_blocks || !create)
> + if (!create)
> + return 0;
> + if (block > HFS_I(inode)->fs_blocks)
> return -EIO;
> if (ablock >= HFS_I(inode)->alloc_blocks) {
> res = hfs_extend_file(inode);
Looks good. Finally, I think it should work properly.
Reviewed-by: Vyacheslav Dubeyko <slava@dubeyko.com>
Thanks,
Vyacheslav Dubeyko.
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2018-10-20 10:04 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-10 18:23 [PATCH 1/2] hfsplus: fix return value of hfsplus_get_block() Ernesto A. Fernández
2018-10-10 18:24 ` [PATCH 2/2] hfs: fix return value of hfs_get_block() Ernesto A. Fernández
2018-10-20 1:56 ` Viacheslav Dubeyko
2018-10-11 18:05 ` [PATCH 1/2] hfsplus: fix return value of hfsplus_get_block() Viacheslav Dubeyko
2018-10-11 19:40 ` Ernesto A. Fernández
2018-10-12 0:38 ` Viacheslav Dubeyko
2018-10-12 0:48 ` Ernesto A. Fernández
2018-10-12 18:43 ` Viacheslav Dubeyko
2018-10-12 21:00 ` Ernesto A. Fernández
2018-10-20 1:55 ` Viacheslav Dubeyko
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).