* [Ocfs2-devel] [PATCH] ocfs2: do not put bh when buffer_uptodate failed
@ 2014-03-25 7:05 alex chen
2014-03-25 18:45 ` Srinivas Eeda
2014-03-27 2:22 ` Joel Becker
0 siblings, 2 replies; 6+ messages in thread
From: alex chen @ 2014-03-25 7:05 UTC (permalink / raw)
To: ocfs2-devel
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".
Signed-off-by: Alex Chen <alex.chen@huawei.com>
Reviewed-by: Joseph Qi <joseph.qi@huawei.com>
---
fs/ocfs2/buffer_head_io.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/fs/ocfs2/buffer_head_io.c b/fs/ocfs2/buffer_head_io.c
index 5b704c6..1edcb14 100644
--- a/fs/ocfs2/buffer_head_io.c
+++ b/fs/ocfs2/buffer_head_io.c
@@ -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);
}
--
1.8.4.3
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Ocfs2-devel] [PATCH] ocfs2: do not put bh when buffer_uptodate failed
2014-03-25 7:05 [Ocfs2-devel] [PATCH] ocfs2: do not put bh when buffer_uptodate failed alex chen
@ 2014-03-25 18:45 ` Srinivas Eeda
2014-03-26 1:25 ` alex chen
2014-03-27 2:22 ` Joel Becker
1 sibling, 1 reply; 6+ messages in thread
From: Srinivas Eeda @ 2014-03-25 18:45 UTC (permalink / raw)
To: ocfs2-devel
These changes looks good to me. However ocfs2_read_blocks and
ocfs2_read_blocks_sync needs the same fix ? :)
On 03/25/2014 12:05 AM, alex chen wrote:
> 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".
>
> Signed-off-by: Alex Chen <alex.chen@huawei.com>
> Reviewed-by: Joseph Qi <joseph.qi@huawei.com>
> ---
> fs/ocfs2/buffer_head_io.c | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/fs/ocfs2/buffer_head_io.c b/fs/ocfs2/buffer_head_io.c
> index 5b704c6..1edcb14 100644
> --- a/fs/ocfs2/buffer_head_io.c
> +++ b/fs/ocfs2/buffer_head_io.c
> @@ -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);
> }
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Ocfs2-devel] [PATCH] ocfs2: do not put bh when buffer_uptodate failed
2014-03-25 18:45 ` Srinivas Eeda
@ 2014-03-26 1:25 ` alex chen
2014-03-26 17:10 ` Srinivas Eeda
0 siblings, 1 reply; 6+ messages in thread
From: alex chen @ 2014-03-26 1:25 UTC (permalink / raw)
To: ocfs2-devel
On 2014/3/26 2:45, Srinivas Eeda wrote:
> These changes looks good to me. However ocfs2_read_blocks and
> ocfs2_read_blocks_sync needs 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.
>
> On 03/25/2014 12:05 AM, alex chen wrote:
>> 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".
>>
>> Signed-off-by: Alex Chen <alex.chen@huawei.com>
>> Reviewed-by: Joseph Qi <joseph.qi@huawei.com>
>> ---
>> fs/ocfs2/buffer_head_io.c | 2 --
>> 1 file changed, 2 deletions(-)
>>
>> diff --git a/fs/ocfs2/buffer_head_io.c b/fs/ocfs2/buffer_head_io.c
>> index 5b704c6..1edcb14 100644
>> --- a/fs/ocfs2/buffer_head_io.c
>> +++ b/fs/ocfs2/buffer_head_io.c
>> @@ -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);
>> }
>>
>
>
> _______________________________________________
> Ocfs2-devel mailing list
> Ocfs2-devel at oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/ocfs2-devel
>
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Ocfs2-devel] [PATCH] ocfs2: do not put bh when buffer_uptodate failed
2014-03-26 1:25 ` alex chen
@ 2014-03-26 17:10 ` Srinivas Eeda
0 siblings, 0 replies; 6+ messages in thread
From: Srinivas Eeda @ 2014-03-26 17:10 UTC (permalink / raw)
To: ocfs2-devel
Thanks for explaining
Reviewed-by: Srinivas Eeda <srinivas.eeda@oracle.com>
On 03/25/2014 06:25 PM, alex chen wrote:
> On 2014/3/26 2:45, Srinivas Eeda wrote:
>> These changes looks good to me. However ocfs2_read_blocks and
>> ocfs2_read_blocks_sync needs 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.
>
>> On 03/25/2014 12:05 AM, alex chen wrote:
>>> 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".
>>>
>>> Signed-off-by: Alex Chen <alex.chen@huawei.com>
>>> Reviewed-by: Joseph Qi <joseph.qi@huawei.com>
>>> ---
>>> fs/ocfs2/buffer_head_io.c | 2 --
>>> 1 file changed, 2 deletions(-)
>>>
>>> diff --git a/fs/ocfs2/buffer_head_io.c b/fs/ocfs2/buffer_head_io.c
>>> index 5b704c6..1edcb14 100644
>>> --- a/fs/ocfs2/buffer_head_io.c
>>> +++ b/fs/ocfs2/buffer_head_io.c
>>> @@ -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);
>>> }
>>>
>>
>> _______________________________________________
>> Ocfs2-devel mailing list
>> Ocfs2-devel at oss.oracle.com
>> https://oss.oracle.com/mailman/listinfo/ocfs2-devel
>>
>>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Ocfs2-devel] [PATCH] ocfs2: do not put bh when buffer_uptodate failed
2014-03-25 7:05 [Ocfs2-devel] [PATCH] ocfs2: do not put bh when buffer_uptodate failed alex chen
2014-03-25 18:45 ` Srinivas Eeda
@ 2014-03-27 2:22 ` Joel Becker
2014-03-28 1:33 ` alex chen
1 sibling, 1 reply; 6+ messages in thread
From: Joel Becker @ 2014-03-27 2:22 UTC (permalink / raw)
To: ocfs2-devel
On Tue, Mar 25, 2014 at 03:05:58PM +0800, alex chen wrote:
> 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".
>
> Signed-off-by: Alex Chen <alex.chen@huawei.com>
> Reviewed-by: Joseph Qi <joseph.qi@huawei.com>
Good catch. Can you tell me what testing or workload found this issue?
Just for future reference.
Acked-by: Joel Becker <jlbec@evilplan.org>
> ---
> fs/ocfs2/buffer_head_io.c | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/fs/ocfs2/buffer_head_io.c b/fs/ocfs2/buffer_head_io.c
> index 5b704c6..1edcb14 100644
> --- a/fs/ocfs2/buffer_head_io.c
> +++ b/fs/ocfs2/buffer_head_io.c
> @@ -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);
> }
>
> --
> 1.8.4.3
>
>
> _______________________________________________
> Ocfs2-devel mailing list
> Ocfs2-devel at oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/ocfs2-devel
--
Life's Little Instruction Book #497
"Go down swinging."
http://www.jlbec.org/
jlbec at evilplan.org
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Ocfs2-devel] [PATCH] ocfs2: do not put bh when buffer_uptodate failed
2014-03-27 2:22 ` Joel Becker
@ 2014-03-28 1:33 ` alex chen
0 siblings, 0 replies; 6+ messages in thread
From: alex chen @ 2014-03-28 1:33 UTC (permalink / raw)
To: ocfs2-devel
On 2014/3/27 10:22, Joel Becker wrote:
> On Tue, Mar 25, 2014 at 03:05:58PM +0800, alex chen wrote:
>> 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".
>>
>> Signed-off-by: Alex Chen <alex.chen@huawei.com>
>> Reviewed-by: Joseph Qi <joseph.qi@huawei.com>
>
> Good catch. Can you tell me what testing or workload found this issue?
> Just for future reference.
>
> Acked-by: Joel Becker <jlbec@evilplan.org>
>
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.
>> ---
>> fs/ocfs2/buffer_head_io.c | 2 --
>> 1 file changed, 2 deletions(-)
>>
>> diff --git a/fs/ocfs2/buffer_head_io.c b/fs/ocfs2/buffer_head_io.c
>> index 5b704c6..1edcb14 100644
>> --- a/fs/ocfs2/buffer_head_io.c
>> +++ b/fs/ocfs2/buffer_head_io.c
>> @@ -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);
>> }
>>
>> --
>> 1.8.4.3
>>
>>
>> _______________________________________________
>> Ocfs2-devel mailing list
>> Ocfs2-devel at oss.oracle.com
>> https://oss.oracle.com/mailman/listinfo/ocfs2-devel
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2014-03-28 1:33 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-25 7:05 [Ocfs2-devel] [PATCH] ocfs2: do not put bh when buffer_uptodate failed alex chen
2014-03-25 18:45 ` Srinivas Eeda
2014-03-26 1:25 ` alex chen
2014-03-26 17:10 ` Srinivas Eeda
2014-03-27 2:22 ` Joel Becker
2014-03-28 1:33 ` alex chen
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.