ocfs2: do not put bh when buffer_uptodate failed
PATCH 1/1 ocfs2: do not put bh when buffer_uptodate failed
Do not put bh when buffer_uptodate failed in ocfs2_write_block and ocfs2_write_super_or_backup, because it will put bh in b_end_io. Otherwise it will hit a warning "VFS: brelse: Trying to free free buffer".
--- fs/ocfs2/buffer_head_io.c | 2 -- 1 file changed, 2 deletions(-)
fs/ocfs2/buffer_head_io.c +0 -2
@@ -90,7 +90,6 @@ int ocfs2_write_block(struct ocfs2_super *osb, struct buffer_head *bh,* information for this bh as it's not marked locally * uptodate. */ ret = -EIO ; -put_bh (bh);mlog_errno (ret); }
@@ -420,7 +419,6 @@ int ocfs2_write_super_or_backup(struct ocfs2_super *osb,if (!buffer_uptodate (bh)) { ret = -EIO ; -put_bh (bh);mlog_errno (ret); }
Signature · 1 line
1.8.4.3
PATCH 1/1 ocfs2: do not put bh when buffer_uptodate failed
These changes looks good to me. However ocfs2_read_blocks and ocfs2_read_blocks_sync needs the same fix ? :)
Quoted 31 lines · alex chen
Do not put bh when
buffer_uptodatefailed inocfs2_write_blockandocfs2_write_super_or_backup, because it will put bh inb_end_io. Otherwise it will hit a warning "VFS: brelse: Trying to free free buffer".Signed-off-by Alex Chen <[email protected]>Reviewed-by Joseph Qi <[email protected]>--- fs/ocfs2/buffer_head_io.c | 2 -- 1 file changed, 2 deletions(-)fs/ocfs2/buffer_head_io.c +0
-2@@ -90,7 +90,6 @@ int ocfs2_write_block(struct ocfs2_super *osb, struct buffer_head *bh,* information for this bh as it's not marked locally * uptodate. */ ret = -EIO ; -put_bh (bh);mlog_errno (ret); }@@ -420,7 +419,6 @@ int ocfs2_write_super_or_backup(struct ocfs2_super *osb,if (!buffer_uptodate (bh)) { ret = -EIO ; -put_bh (bh);mlog_errno (ret); }
PATCH 1/1 ocfs2: do not put bh when buffer_uptodate failed
Quoted 2 lines · Srinivas Eeda
These changes looks good to me. However
ocfs2_read_blocksandocfs2_read_blocks_syncneeds the same fix ? :)
There is no need to do this in ocfs2_read_blocks and ocfs2_read_blocks_sync, because bh will be set to NULL after put_bh, and brelse will handle it.
Quoted 41 lines · alex chen
Quoted 24 lines
Do not put bh when
buffer_uptodatefailed inocfs2_write_blockandocfs2_write_super_or_backup, because it will put bh inb_end_io. Otherwise it will hit a warning "VFS: brelse: Trying to free free buffer".Signed-off-by Alex Chen <[email protected]>Reviewed-by Joseph Qi <[email protected]>--- fs/ocfs2/buffer_head_io.c | 2 -- 1 file changed, 2 deletions(-)fs/ocfs2/buffer_head_io.c +0
-1@@ -90,7 +90,6 @@ int ocfs2_write_block(struct ocfs2_super *osb, struct buffer_head *bh,* information for this bh as it's not marked locally * uptodate. */ ret = -EIO ; -put_bh (bh);mlog_errno (ret); }fs/ocfs2/buffer_head_io.c int ocfs2_write_super_or_backup(struct ocfs2_super *osb, · line 424
Quoted 7 lines
fs/ocfs2/buffer_head_io.c +0
-1@@ -420,7 +419,6 @@ int ocfs2_write_super_or_backup(struct ocfs2_super *osb,if (!buffer_uptodate (bh)) { ret = -EIO ; -put_bh (bh);mlog_errno (ret); }_______________________________________________
Ocfs2-devel mailing list
Ocfs2-devel at oss.oracle.com
https://oss.oracle.com/mailman/listinfo/ocfs2-devel
PATCH 1/1 ocfs2: do not put bh when buffer_uptodate failed
Thanks for explaining
Quoted 46 lines · alex chen
Quoted 2 lines · Srinivas Eeda
These changes looks good to me. However
ocfs2_read_blocksandocfs2_read_blocks_syncneeds the same fix ? :)There is no need to do this in
ocfs2_read_blocksandocfs2_read_blocks_sync, because bh will be set to NULL afterput_bh, and brelse will handle it.Quoted 39 lines · alex chen
Quoted 24 lines
Do not put bh when
buffer_uptodatefailed inocfs2_write_blockandocfs2_write_super_or_backup, because it will put bh inb_end_io. Otherwise it will hit a warning "VFS: brelse: Trying to free free buffer".Signed-off-by Alex Chen <[email protected]>Reviewed-by Joseph Qi <[email protected]>--- fs/ocfs2/buffer_head_io.c | 2 -- 1 file changed, 2 deletions(-)fs/ocfs2/buffer_head_io.c +0
-1@@ -90,7 +90,6 @@ int ocfs2_write_block(struct ocfs2_super *osb, struct buffer_head *bh,* information for this bh as it's not marked locally * uptodate. */ ret = -EIO ; -put_bh (bh);mlog_errno (ret); }fs/ocfs2/buffer_head_io.c int ocfs2_write_super_or_backup(struct ocfs2_super *osb, · line 424
Quoted 7 lines
fs/ocfs2/buffer_head_io.c +0
-1@@ -420,7 +419,6 @@ int ocfs2_write_super_or_backup(struct ocfs2_super *osb,if (!buffer_uptodate (bh)) { ret = -EIO ; -put_bh (bh);mlog_errno (ret); }_______________________________________________
Ocfs2-devel mailing list
Ocfs2-devel at oss.oracle.com
https://oss.oracle.com/mailman/listinfo/ocfs2-devel
Joel Becker
maintainerPATCH 1/1 ocfs2: do not put bh when buffer_uptodate failed
In reply to alex chenQuoted 7 lines · alex chen
Do not put bh when
buffer_uptodatefailed inocfs2_write_blockandocfs2_write_super_or_backup, because it will put bh inb_end_io. Otherwise it will hit a warning "VFS: brelse: Trying to free free buffer".Signed-off-by Alex Chen <[email protected]>Reviewed-by Joseph Qi <[email protected]>
Good catch. Can you tell me what testing or workload found this issue? Just for future reference.
Quoted 32 lines
--- fs/ocfs2/buffer_head_io.c | 2 -- 1 file changed, 2 deletions(-)fs/ocfs2/buffer_head_io.c +0
-2@@ -90,7 +90,6 @@ int ocfs2_write_block(struct ocfs2_super *osb, struct buffer_head *bh,* information for this bh as it's not marked locally * uptodate. */ ret = -EIO ; -put_bh (bh);mlog_errno (ret); }@@ -420,7 +419,6 @@ int ocfs2_write_super_or_backup(struct ocfs2_super *osb,if (!buffer_uptodate (bh)) { ret = -EIO ; -put_bh (bh);mlog_errno (ret); }Signature · 7 lines
1.8.4.3 _______________________________________________ Ocfs2-devel mailing list Ocfs2-devel at oss.oracle.com https://oss.oracle.com/mailman/listinfo/ocfs2-devel
Signature · 6 lines
Life's Little Instruction Book #497 "Go down swinging." http://www.jlbec.org/ jlbec at evilplan.org
PATCH 1/1 ocfs2: do not put bh when buffer_uptodate failed
Quoted 6 lines · Joel Becker
Quoted 5 lines · alex chen
Do not put bh when
buffer_uptodatefailed inocfs2_write_blockandocfs2_write_super_or_backup, because it will put bh inb_end_io. Otherwise it will hit a warning "VFS: brelse: Trying to free free buffer".
Quoted 8 lines
Quoted 2 lines
Signed-off-by Alex Chen <[email protected]>Reviewed-by Joseph Qi <[email protected]>Good catch. Can you tell me what testing or workload found this issue? Just for future reference.
Acked-by Joel Becker <[email protected]>
This issue was found when resizing volume. During the resize, storage link was not steady and continuing up and down. Uptodate buffer failed because of EIO in ocfs2_write_super_or_backup and then this warning occurs.
Quoted 33 lines
Quoted 32 lines
--- fs/ocfs2/buffer_head_io.c | 2 -- 1 file changed, 2 deletions(-)fs/ocfs2/buffer_head_io.c +0
-2@@ -90,7 +90,6 @@ int ocfs2_write_block(struct ocfs2_super *osb, struct buffer_head *bh,* information for this bh as it's not marked locally * uptodate. */ ret = -EIO ; -put_bh (bh);mlog_errno (ret); }@@ -420,7 +419,6 @@ int ocfs2_write_super_or_backup(struct ocfs2_super *osb,if (!buffer_uptodate (bh)) { ret = -EIO ; -put_bh (bh);mlog_errno (ret); }Signature · 7 lines
1.8.4.3 _______________________________________________ Ocfs2-devel mailing list Ocfs2-devel at oss.oracle.com https://oss.oracle.com/mailman/listinfo/ocfs2-devel