diff options
author | Theodore Ts'o <tytso@mit.edu> | 2009-01-20 09:50:19 -0500 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2009-01-20 09:50:19 -0500 |
commit | e7f07968c16bdd9480001c0a9de013ba56889cf9 (patch) | |
tree | 89aaa3c147d8f6abd10711a030aa0a57b630176d /fs/ext4 | |
parent | 08ec8c3878cea0bf91f2ba3c0badf44b383752d0 (diff) | |
download | op-kernel-dev-e7f07968c16bdd9480001c0a9de013ba56889cf9.zip op-kernel-dev-e7f07968c16bdd9480001c0a9de013ba56889cf9.tar.gz |
ext4: Fix ext4_free_blocks() w/o a journal when files have indirect blocks
When trying to unlink a file with indirect blocks on a filesystem
without a journal, the "circular indirect block" sanity test was
getting falsely triggered.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/ext4')
-rw-r--r-- | fs/ext4/inode.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 49484ba..b4386da 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -3622,7 +3622,7 @@ static void ext4_free_data(handle_t *handle, struct inode *inode, * block pointed to itself, it would have been detached when * the block was cleared. Check for this instead of OOPSing. */ - if (bh2jh(this_bh)) + if ((EXT4_JOURNAL(inode) == NULL) || bh2jh(this_bh)) ext4_handle_dirty_metadata(handle, inode, this_bh); else ext4_error(inode->i_sb, __func__, |