linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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).