| From f6312955fc27ef8acb0cdd99db2159961274cd5b Mon Sep 17 00:00:00 2001 |
| From: Anatol Pomozov <anatol.pomozov@gmail.com> |
| Date: Tue, 18 Sep 2012 13:38:59 -0400 |
| Subject: [PATCH] ext4: make orphan functions be no-op in no-journal mode |
| |
| commit c9b92530a723ac5ef8e352885a1862b18f31b2f5 upstream. |
| |
| 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> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| --- |
| fs/ext4/namei.c | 7 +++---- |
| 1 file changed, 3 insertions(+), 4 deletions(-) |
| |
| diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c |
| index 683c0f9d8a83..d64e5f4f12ed 100644 |
| --- a/fs/ext4/namei.c |
| +++ b/fs/ext4/namei.c |
| @@ -2000,7 +2000,7 @@ int ext4_orphan_add(handle_t *handle, struct inode *inode) |
| struct ext4_iloc iloc; |
| int err = 0, rc; |
| |
| - if (!ext4_handle_valid(handle)) |
| + if (!EXT4_SB(sb)->s_journal) |
| return 0; |
| |
| mutex_lock(&EXT4_SB(sb)->s_orphan_lock); |
| @@ -2081,8 +2081,7 @@ int ext4_orphan_del(handle_t *handle, struct inode *inode) |
| struct ext4_iloc iloc; |
| int err = 0; |
| |
| - /* ext4_handle_valid() assumes a valid handle_t pointer */ |
| - if (handle && !ext4_handle_valid(handle)) |
| + if (!EXT4_SB(inode->i_sb)->s_journal) |
| return 0; |
| |
| mutex_lock(&EXT4_SB(inode->i_sb)->s_orphan_lock); |
| @@ -2101,7 +2100,7 @@ int ext4_orphan_del(handle_t *handle, struct inode *inode) |
| * transaction handle with which to update the orphan list on |
| * disk, but we still need to remove the inode from the linked |
| * list in memory. */ |
| - if (sbi->s_journal && !handle) |
| + if (!handle) |
| goto out; |
| |
| err = ext4_reserve_inode_write(handle, inode, &iloc); |
| -- |
| 1.8.5.2 |
| |