diff options
author | Anatol Pomozov <anatol.pomozov@gmail.com> | 2012-09-18 13:38:59 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2012-09-18 13:38:59 -0400 |
commit | c9b92530a723ac5ef8e352885a1862b18f31b2f5 (patch) | |
tree | f58f88720dbf430ee33bee03d978dddf54584c33 /fs/ext4/namei.c | |
parent | b5e2368baeddf401bf3da9e364fc1c96676279cd (diff) |
ext4: make orphan functions be no-op in no-journal mode
Instead of checking whether the handle is valid, we check if journal
is enabled. This avoids taking the s_orphan_lock mutex in all cases
when there is no journal in use, including the error paths where
ext4_orphan_del() is called with a handle set to NULL.
Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/ext4/namei.c')
-rw-r--r-- | fs/ext4/namei.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c index 37c03b32e194..8f4bda75122e 100644 --- a/fs/ext4/namei.c +++ b/fs/ext4/namei.c | |||
@@ -2369,7 +2369,7 @@ int ext4_orphan_add(handle_t *handle, struct inode *inode) | |||
2369 | struct ext4_iloc iloc; | 2369 | struct ext4_iloc iloc; |
2370 | int err = 0, rc; | 2370 | int err = 0, rc; |
2371 | 2371 | ||
2372 | if (!ext4_handle_valid(handle)) | 2372 | if (!EXT4_SB(sb)->s_journal) |
2373 | return 0; | 2373 | return 0; |
2374 | 2374 | ||
2375 | mutex_lock(&EXT4_SB(sb)->s_orphan_lock); | 2375 | mutex_lock(&EXT4_SB(sb)->s_orphan_lock); |
@@ -2443,8 +2443,7 @@ int ext4_orphan_del(handle_t *handle, struct inode *inode) | |||
2443 | struct ext4_iloc iloc; | 2443 | struct ext4_iloc iloc; |
2444 | int err = 0; | 2444 | int err = 0; |
2445 | 2445 | ||
2446 | /* ext4_handle_valid() assumes a valid handle_t pointer */ | 2446 | if (!EXT4_SB(inode->i_sb)->s_journal) |
2447 | if (handle && !ext4_handle_valid(handle)) | ||
2448 | return 0; | 2447 | return 0; |
2449 | 2448 | ||
2450 | mutex_lock(&EXT4_SB(inode->i_sb)->s_orphan_lock); | 2449 | mutex_lock(&EXT4_SB(inode->i_sb)->s_orphan_lock); |
@@ -2463,7 +2462,7 @@ int ext4_orphan_del(handle_t *handle, struct inode *inode) | |||
2463 | * transaction handle with which to update the orphan list on | 2462 | * transaction handle with which to update the orphan list on |
2464 | * disk, but we still need to remove the inode from the linked | 2463 | * disk, but we still need to remove the inode from the linked |
2465 | * list in memory. */ | 2464 | * list in memory. */ |
2466 | if (sbi->s_journal && !handle) | 2465 | if (!handle) |
2467 | goto out; | 2466 | goto out; |
2468 | 2467 | ||
2469 | err = ext4_reserve_inode_write(handle, inode, &iloc); | 2468 | err = ext4_reserve_inode_write(handle, inode, &iloc); |