All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] ext4: fix over-defensive complain after journal abort
@ 2014-09-23  7:02 Dmitry Monakhov
  2014-09-23  7:02 ` [PATCH 2/3] ext4: get rid of code duplication Dmitry Monakhov
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Dmitry Monakhov @ 2014-09-23  7:02 UTC (permalink / raw)
  To: linux-ext4; +Cc: Dmitry Monakhov

Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
---
 fs/ext4/ext4_jbd2.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/ext4/ext4_jbd2.c b/fs/ext4/ext4_jbd2.c
index 0074e0d..3445035 100644
--- a/fs/ext4/ext4_jbd2.c
+++ b/fs/ext4/ext4_jbd2.c
@@ -256,8 +256,8 @@ int __ext4_handle_dirty_metadata(const char *where, unsigned int line,
 	set_buffer_prio(bh);
 	if (ext4_handle_valid(handle)) {
 		err = jbd2_journal_dirty_metadata(handle, bh);
-		/* Errors can only happen if there is a bug */
-		if (WARN_ON_ONCE(err)) {
+		/* Errors can only happen due to aborted journal or a nasty bug */
+		if (!is_handle_aborted(handle) && WARN_ON_ONCE(err)) {
 			ext4_journal_abort_handle(where, line, __func__, bh,
 						  handle, err);
 			if (inode == NULL) {
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/3] ext4: get rid of code duplication
  2014-09-23  7:02 [PATCH 1/3] ext4: fix over-defensive complain after journal abort Dmitry Monakhov
@ 2014-09-23  7:02 ` Dmitry Monakhov
  2014-09-23  9:54   ` Jan Kara
  2014-09-23  7:02 ` [PATCH 3/3] ext4: optimize block allocation on grow indepth Dmitry Monakhov
  2014-10-02  2:24 ` [PATCH 1/3] ext4: fix over-defensive complain after journal abort Theodore Ts'o
  2 siblings, 1 reply; 9+ messages in thread
From: Dmitry Monakhov @ 2014-09-23  7:02 UTC (permalink / raw)
  To: linux-ext4; +Cc: Dmitry Monakhov


Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
---
 fs/ext4/mballoc.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index 65cca28..eab825f 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -3155,9 +3155,8 @@ ext4_mb_normalize_request(struct ext4_allocation_context *ac,
 			 "start %lu, size %lu, fe_logical %lu",
 			 (unsigned long) start, (unsigned long) size,
 			 (unsigned long) ac->ac_o_ex.fe_logical);
+		BUG();
 	}
-	BUG_ON(start + size <= ac->ac_o_ex.fe_logical &&
-			start > ac->ac_o_ex.fe_logical);
 	BUG_ON(size <= 0 || size > EXT4_BLOCKS_PER_GROUP(ac->ac_sb));
 
 	/* now prepare goal request */
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 3/3] ext4: optimize block allocation on grow indepth
  2014-09-23  7:02 [PATCH 1/3] ext4: fix over-defensive complain after journal abort Dmitry Monakhov
  2014-09-23  7:02 ` [PATCH 2/3] ext4: get rid of code duplication Dmitry Monakhov
@ 2014-09-23  7:02 ` Dmitry Monakhov
  2014-09-23 10:00   ` Jan Kara
  2014-10-02  2:52   ` Theodore Ts'o
  2014-10-02  2:24 ` [PATCH 1/3] ext4: fix over-defensive complain after journal abort Theodore Ts'o
  2 siblings, 2 replies; 9+ messages in thread
From: Dmitry Monakhov @ 2014-09-23  7:02 UTC (permalink / raw)
  To: linux-ext4; +Cc: Dmitry Monakhov

It is reasonable to prepent newly created index to older one.

Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
---
 fs/ext4/extents.c |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
index 8170b32..37267ea 100644
--- a/fs/ext4/extents.c
+++ b/fs/ext4/extents.c
@@ -1268,11 +1268,20 @@ static int ext4_ext_grow_indepth(handle_t *handle, struct inode *inode,
 {
 	struct ext4_extent_header *neh;
 	struct buffer_head *bh;
-	ext4_fsblk_t newblock;
+	ext4_fsblk_t newblock, goal = 0;
+	struct ext4_super_block *es = EXT4_SB(inode->i_sb)->s_es;
 	int err = 0;
 
-	newblock = ext4_ext_new_meta_block(handle, inode, NULL,
-		newext, &err, flags);
+	/* Try to prepend new index to old one */
+	if (ext_depth(inode))
+		goal = ext4_idx_pblock(EXT_FIRST_INDEX(ext_inode_hdr(inode)));
+	if (goal > le32_to_cpu(es->s_first_data_block)) {
+		flags |= EXT4_MB_HINT_TRY_GOAL;
+		goal--;
+	} else
+		goal =  ext4_inode_to_goal_block(inode);
+	newblock = ext4_new_meta_blocks(handle, inode, goal, flags,
+					NULL, &err);
 	if (newblock == 0)
 		return err;
 
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/3] ext4: get rid of code duplication
  2014-09-23  7:02 ` [PATCH 2/3] ext4: get rid of code duplication Dmitry Monakhov
@ 2014-09-23  9:54   ` Jan Kara
  2014-10-02  2:27     ` Theodore Ts'o
  0 siblings, 1 reply; 9+ messages in thread
From: Jan Kara @ 2014-09-23  9:54 UTC (permalink / raw)
  To: Dmitry Monakhov; +Cc: linux-ext4

On Tue 23-09-14 11:02:31, Dmitry Monakhov wrote:
> 
> Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
  Looks good. You can add:
Reviewed-by: Jan Kara <jack@suse.cz>

								Honza

> ---
>  fs/ext4/mballoc.c |    3 +--
>  1 files changed, 1 insertions(+), 2 deletions(-)
> 
> diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
> index 65cca28..eab825f 100644
> --- a/fs/ext4/mballoc.c
> +++ b/fs/ext4/mballoc.c
> @@ -3155,9 +3155,8 @@ ext4_mb_normalize_request(struct ext4_allocation_context *ac,
>  			 "start %lu, size %lu, fe_logical %lu",
>  			 (unsigned long) start, (unsigned long) size,
>  			 (unsigned long) ac->ac_o_ex.fe_logical);
> +		BUG();
>  	}
> -	BUG_ON(start + size <= ac->ac_o_ex.fe_logical &&
> -			start > ac->ac_o_ex.fe_logical);
>  	BUG_ON(size <= 0 || size > EXT4_BLOCKS_PER_GROUP(ac->ac_sb));
>  
>  	/* now prepare goal request */
> -- 
> 1.7.1
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
-- 
Jan Kara <jack@suse.cz>
SUSE Labs, CR

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 3/3] ext4: optimize block allocation on grow indepth
  2014-09-23  7:02 ` [PATCH 3/3] ext4: optimize block allocation on grow indepth Dmitry Monakhov
@ 2014-09-23 10:00   ` Jan Kara
  2014-09-23 10:26     ` Dmitry Monakhov
  2014-10-02  2:52   ` Theodore Ts'o
  1 sibling, 1 reply; 9+ messages in thread
From: Jan Kara @ 2014-09-23 10:00 UTC (permalink / raw)
  To: Dmitry Monakhov; +Cc: linux-ext4

On Tue 23-09-14 11:02:32, Dmitry Monakhov wrote:
> It is reasonable to prepent newly created index to older one.
...
> -	newblock = ext4_ext_new_meta_block(handle, inode, NULL,
> -		newext, &err, flags);
> +	/* Try to prepend new index to old one */
> +	if (ext_depth(inode))
> +		goal = ext4_idx_pblock(EXT_FIRST_INDEX(ext_inode_hdr(inode)));
> +	if (goal > le32_to_cpu(es->s_first_data_block)) {
> +		flags |= EXT4_MB_HINT_TRY_GOAL;
> +		goal--;
> +	} else
> +		goal =  ext4_inode_to_goal_block(inode);
> +	newblock = ext4_new_meta_blocks(handle, inode, goal, flags,
> +					NULL, &err);
>  	if (newblock == 0)
>  		return err;
  Hum, did you actually observe any improvement in file layout with this
patch?

								Honza
-- 
Jan Kara <jack@suse.cz>
SUSE Labs, CR

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 3/3] ext4: optimize block allocation on grow indepth
  2014-09-23 10:00   ` Jan Kara
@ 2014-09-23 10:26     ` Dmitry Monakhov
  0 siblings, 0 replies; 9+ messages in thread
From: Dmitry Monakhov @ 2014-09-23 10:26 UTC (permalink / raw)
  To: Jan Kara; +Cc: linux-ext4

On Tue, 23 Sep 2014 12:00:31 +0200, Jan Kara <jack@suse.cz> wrote:
> On Tue 23-09-14 11:02:32, Dmitry Monakhov wrote:
> > It is reasonable to prepent newly created index to older one.
> ...
> > -	newblock = ext4_ext_new_meta_block(handle, inode, NULL,
> > -		newext, &err, flags);
> > +	/* Try to prepend new index to old one */
> > +	if (ext_depth(inode))
> > +		goal = ext4_idx_pblock(EXT_FIRST_INDEX(ext_inode_hdr(inode)));
> > +	if (goal > le32_to_cpu(es->s_first_data_block)) {
> > +		flags |= EXT4_MB_HINT_TRY_GOAL;
> > +		goal--;
> > +	} else
> > +		goal =  ext4_inode_to_goal_block(inode);
> > +	newblock = ext4_new_meta_blocks(handle, inode, goal, flags,
> > +					NULL, &err);
> >  	if (newblock == 0)
> >  		return err;
>   Hum, did you actually observe any improvement in file layout with this
> patch?
Hmmm.... well this patch itself unlikely result in improvements because
the block we asks is likely used already. This is because non optimal block
allocation for mdata. I hope to fix it once we start working on ideas
which was described in "fast fsck" tread
(http://comments.gmane.org/gmane.comp.file-systems.ext4/41472)

> 
> 								Honza
> -- 
> Jan Kara <jack@suse.cz>
> SUSE Labs, CR

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/3] ext4: fix over-defensive complain after journal abort
  2014-09-23  7:02 [PATCH 1/3] ext4: fix over-defensive complain after journal abort Dmitry Monakhov
  2014-09-23  7:02 ` [PATCH 2/3] ext4: get rid of code duplication Dmitry Monakhov
  2014-09-23  7:02 ` [PATCH 3/3] ext4: optimize block allocation on grow indepth Dmitry Monakhov
@ 2014-10-02  2:24 ` Theodore Ts'o
  2 siblings, 0 replies; 9+ messages in thread
From: Theodore Ts'o @ 2014-10-02  2:24 UTC (permalink / raw)
  To: Dmitry Monakhov; +Cc: linux-ext4

On Tue, Sep 23, 2014 at 11:02:30AM +0400, Dmitry Monakhov wrote:
> Reviewed-by: Jan Kara <jack@suse.cz>
> Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>

Applied, thanks.

					- Ted

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/3] ext4: get rid of code duplication
  2014-09-23  9:54   ` Jan Kara
@ 2014-10-02  2:27     ` Theodore Ts'o
  0 siblings, 0 replies; 9+ messages in thread
From: Theodore Ts'o @ 2014-10-02  2:27 UTC (permalink / raw)
  To: Jan Kara; +Cc: Dmitry Monakhov, linux-ext4

On Tue, Sep 23, 2014 at 11:54:37AM +0200, Jan Kara wrote:
> On Tue 23-09-14 11:02:31, Dmitry Monakhov wrote:
> > 
> > Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
>   Looks good. You can add:
> Reviewed-by: Jan Kara <jack@suse.cz>

Applied, thanks.

	 				- Ted

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 3/3] ext4: optimize block allocation on grow indepth
  2014-09-23  7:02 ` [PATCH 3/3] ext4: optimize block allocation on grow indepth Dmitry Monakhov
  2014-09-23 10:00   ` Jan Kara
@ 2014-10-02  2:52   ` Theodore Ts'o
  1 sibling, 0 replies; 9+ messages in thread
From: Theodore Ts'o @ 2014-10-02  2:52 UTC (permalink / raw)
  To: Dmitry Monakhov; +Cc: linux-ext4

On Tue, Sep 23, 2014 at 11:02:32AM +0400, Dmitry Monakhov wrote:
> It is reasonable to prepent newly created index to older one.
> 
> Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>

Thanks, applied with a minor change.

				- Ted

commit c69c690d41e6438ef8e3e9b09d9eb4f2fe669be2
Author: Dmitry Monakhov <dmonakhov@openvz.org>
Date:   Wed Oct 1 22:52:39 2014 -0400

    ext4: optimize block allocation on grow indepth
    
    It is reasonable to prepent newld created index to older one.
    
    [ Dropped no longer used function parameter newext. -tytso ]
    
    Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>

diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
index 8170b32..c3ed9af2 100644
--- a/fs/ext4/extents.c
+++ b/fs/ext4/extents.c
@@ -1263,16 +1263,24 @@ cleanup:
  *   just created block
  */
 static int ext4_ext_grow_indepth(handle_t *handle, struct inode *inode,
-				 unsigned int flags,
-				 struct ext4_extent *newext)
+				 unsigned int flags)
 {
 	struct ext4_extent_header *neh;
 	struct buffer_head *bh;
-	ext4_fsblk_t newblock;
+	ext4_fsblk_t newblock, goal = 0;
+	struct ext4_super_block *es = EXT4_SB(inode->i_sb)->s_es;
 	int err = 0;
 
-	newblock = ext4_ext_new_meta_block(handle, inode, NULL,
-		newext, &err, flags);
+	/* Try to prepend new index to old one */
+	if (ext_depth(inode))
+		goal = ext4_idx_pblock(EXT_FIRST_INDEX(ext_inode_hdr(inode)));
+	if (goal > le32_to_cpu(es->s_first_data_block)) {
+		flags |= EXT4_MB_HINT_TRY_GOAL;
+		goal--;
+	} else
+		goal = ext4_inode_to_goal_block(inode);
+	newblock = ext4_new_meta_blocks(handle, inode, goal, flags,
+					NULL, &err);
 	if (newblock == 0)
 		return err;
 
@@ -1373,7 +1381,7 @@ repeat:
 			err = PTR_ERR(path);
 	} else {
 		/* tree is full, time to grow in depth */
-		err = ext4_ext_grow_indepth(handle, inode, mb_flags, newext);
+		err = ext4_ext_grow_indepth(handle, inode, mb_flags);
 		if (err)
 			goto out;
 

^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2014-10-02  2:53 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-09-23  7:02 [PATCH 1/3] ext4: fix over-defensive complain after journal abort Dmitry Monakhov
2014-09-23  7:02 ` [PATCH 2/3] ext4: get rid of code duplication Dmitry Monakhov
2014-09-23  9:54   ` Jan Kara
2014-10-02  2:27     ` Theodore Ts'o
2014-09-23  7:02 ` [PATCH 3/3] ext4: optimize block allocation on grow indepth Dmitry Monakhov
2014-09-23 10:00   ` Jan Kara
2014-09-23 10:26     ` Dmitry Monakhov
2014-10-02  2:52   ` Theodore Ts'o
2014-10-02  2:24 ` [PATCH 1/3] ext4: fix over-defensive complain after journal abort Theodore Ts'o

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.