From: Andrew Morton Use `create' to work out whether we're doing a read, not `handle'. Because journal_current_handle() can be true if some other filesystem has a transaction open and then calls in here for a pagefault. Cc: Mingming Cao Cc: Badari Pulavarty Signed-off-by: Andrew Morton --- fs/ext3/inode.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN fs/ext3/inode.c~ext3-get-blocks-maping-multiple-blocks-at-a-once-journal-reentry-fix fs/ext3/inode.c --- devel/fs/ext3/inode.c~ext3-get-blocks-maping-multiple-blocks-at-a-once-journal-reentry-fix 2006-03-12 14:25:04.000000000 -0800 +++ devel-akpm/fs/ext3/inode.c 2006-03-12 14:25:04.000000000 -0800 @@ -830,7 +830,7 @@ ext3_direct_io_get_blocks(struct inode * handle_t *handle = journal_current_handle(); int ret = 0; - if (!handle) + if (!create) goto get_block; /* A read */ if (max_blocks == 1) _