Commit ed97bd37 authored by Andreas Mohr's avatar Andreas Mohr Committed by Linus Torvalds

[PATCH] fs/inode.c tweaks

Only touch inode's i_mtime and i_ctime to make them equal to "now" in case
they aren't yet (don't just update timestamp unconditionally).  Uninline
the hash function to save 259 Bytes.

This tiny inode change which may improve cache behaviour also shaves off 8
Bytes from file_update_time() on i386.

Included a tiny codestyle cleanup, too.
Signed-off-by: default avatarAndreas Mohr <andi@lisas.de>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 07acaf28
...@@ -657,7 +657,7 @@ static struct inode * get_new_inode_fast(struct super_block *sb, struct hlist_he ...@@ -657,7 +657,7 @@ static struct inode * get_new_inode_fast(struct super_block *sb, struct hlist_he
return inode; return inode;
} }
static inline unsigned long hash(struct super_block *sb, unsigned long hashval) static unsigned long hash(struct super_block *sb, unsigned long hashval)
{ {
unsigned long tmp; unsigned long tmp;
...@@ -1003,7 +1003,7 @@ void generic_delete_inode(struct inode *inode) ...@@ -1003,7 +1003,7 @@ void generic_delete_inode(struct inode *inode)
list_del_init(&inode->i_list); list_del_init(&inode->i_list);
list_del_init(&inode->i_sb_list); list_del_init(&inode->i_sb_list);
inode->i_state|=I_FREEING; inode->i_state |= I_FREEING;
inodes_stat.nr_inodes--; inodes_stat.nr_inodes--;
spin_unlock(&inode_lock); spin_unlock(&inode_lock);
...@@ -1210,13 +1210,15 @@ void file_update_time(struct file *file) ...@@ -1210,13 +1210,15 @@ void file_update_time(struct file *file)
return; return;
now = current_fs_time(inode->i_sb); now = current_fs_time(inode->i_sb);
if (!timespec_equal(&inode->i_mtime, &now)) if (!timespec_equal(&inode->i_mtime, &now)) {
sync_it = 1;
inode->i_mtime = now; inode->i_mtime = now;
if (!timespec_equal(&inode->i_ctime, &now))
sync_it = 1; sync_it = 1;
}
if (!timespec_equal(&inode->i_ctime, &now)) {
inode->i_ctime = now; inode->i_ctime = now;
sync_it = 1;
}
if (sync_it) if (sync_it)
mark_inode_dirty_sync(inode); mark_inode_dirty_sync(inode);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment