2008-07-31 17:24:10

by Eric Sandeen

[permalink] [raw]
Subject: [PATCH] missing journal_stop in ext4_da_write_begin error case

ext4_da_write_begin needs to call journal_stop before returning,
if the page allocation fails.

Signed-off-by: Eric Sandeen <[email protected]>
---

Index: linux-2.6/fs/ext4/inode.c
===================================================================
--- linux-2.6.orig/fs/ext4/inode.c 2008-07-29 17:18:26.000000000 -0500
+++ linux-2.6/fs/ext4/inode.c 2008-07-31 12:21:03.866229084 -0500
@@ -2280,8 +2280,11 @@ retry:
}

page = __grab_cache_page(mapping, index);
- if (!page)
- return -ENOMEM;
+ if (!page) {
+ ext4_journal_stop(handle);
+ ret = -ENOMEM;
+ goto out;
+ }
*pagep = page;

ret = block_write_begin(file, mapping, pos, len, flags, pagep, fsdata,



2008-07-31 18:09:47

by Mingming Cao

[permalink] [raw]
Subject: Re: [PATCH] missing journal_stop in ext4_da_write_begin error case


在 2008-07-31四的 12:23 -0500,Eric Sandeen写道:
> ext4_da_write_begin needs to call journal_stop before returning,
> if the page allocation fails.
>
> Signed-off-by: Eric Sandeen <[email protected]>
Ackd-by: Mingming Cao <[email protected]>

> ---
>
> Index: linux-2.6/fs/ext4/inode.c
> ===================================================================
> --- linux-2.6.orig/fs/ext4/inode.c 2008-07-29 17:18:26.000000000 -0500
> +++ linux-2.6/fs/ext4/inode.c 2008-07-31 12:21:03.866229084 -0500
> @@ -2280,8 +2280,11 @@ retry:
> }
>
> page = __grab_cache_page(mapping, index);
> - if (!page)
> - return -ENOMEM;
> + if (!page) {
> + ext4_journal_stop(handle);
> + ret = -ENOMEM;
> + goto out;
> + }
> *pagep = page;
>
> ret = block_write_begin(file, mapping, pos, len, flags, pagep, fsdata,
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html