Loading fs/buffer.c +2 −0 Original line number Diff line number Diff line Loading @@ -2736,6 +2736,8 @@ has_buffers: pos += blocksize; } map_bh.b_size = blocksize; map_bh.b_state = 0; err = get_block(inode, iblock, &map_bh, 0); if (err) goto unlock; Loading fs/inode.c +25 −6 Original line number Diff line number Diff line Loading @@ -1053,13 +1053,22 @@ int insert_inode_locked(struct inode *inode) struct super_block *sb = inode->i_sb; ino_t ino = inode->i_ino; struct hlist_head *head = inode_hashtable + hash(sb, ino); struct inode *old; inode->i_state |= I_LOCK|I_NEW; while (1) { struct hlist_node *node; struct inode *old = NULL; spin_lock(&inode_lock); old = find_inode_fast(sb, head, ino); if (likely(!old)) { hlist_for_each_entry(old, node, head, i_hash) { if (old->i_ino != ino) continue; if (old->i_sb != sb) continue; if (old->i_state & (I_FREEING|I_CLEAR|I_WILL_FREE)) continue; break; } if (likely(!node)) { hlist_add_head(&inode->i_hash, head); spin_unlock(&inode_lock); return 0; Loading @@ -1081,14 +1090,24 @@ int insert_inode_locked4(struct inode *inode, unsigned long hashval, { struct super_block *sb = inode->i_sb; struct hlist_head *head = inode_hashtable + hash(sb, hashval); struct inode *old; inode->i_state |= I_LOCK|I_NEW; while (1) { struct hlist_node *node; struct inode *old = NULL; spin_lock(&inode_lock); old = find_inode(sb, head, test, data); if (likely(!old)) { hlist_for_each_entry(old, node, head, i_hash) { if (old->i_sb != sb) continue; if (!test(old, data)) continue; if (old->i_state & (I_FREEING|I_CLEAR|I_WILL_FREE)) continue; break; } if (likely(!node)) { hlist_add_head(&inode->i_hash, head); spin_unlock(&inode_lock); return 0; Loading Loading
fs/buffer.c +2 −0 Original line number Diff line number Diff line Loading @@ -2736,6 +2736,8 @@ has_buffers: pos += blocksize; } map_bh.b_size = blocksize; map_bh.b_state = 0; err = get_block(inode, iblock, &map_bh, 0); if (err) goto unlock; Loading
fs/inode.c +25 −6 Original line number Diff line number Diff line Loading @@ -1053,13 +1053,22 @@ int insert_inode_locked(struct inode *inode) struct super_block *sb = inode->i_sb; ino_t ino = inode->i_ino; struct hlist_head *head = inode_hashtable + hash(sb, ino); struct inode *old; inode->i_state |= I_LOCK|I_NEW; while (1) { struct hlist_node *node; struct inode *old = NULL; spin_lock(&inode_lock); old = find_inode_fast(sb, head, ino); if (likely(!old)) { hlist_for_each_entry(old, node, head, i_hash) { if (old->i_ino != ino) continue; if (old->i_sb != sb) continue; if (old->i_state & (I_FREEING|I_CLEAR|I_WILL_FREE)) continue; break; } if (likely(!node)) { hlist_add_head(&inode->i_hash, head); spin_unlock(&inode_lock); return 0; Loading @@ -1081,14 +1090,24 @@ int insert_inode_locked4(struct inode *inode, unsigned long hashval, { struct super_block *sb = inode->i_sb; struct hlist_head *head = inode_hashtable + hash(sb, hashval); struct inode *old; inode->i_state |= I_LOCK|I_NEW; while (1) { struct hlist_node *node; struct inode *old = NULL; spin_lock(&inode_lock); old = find_inode(sb, head, test, data); if (likely(!old)) { hlist_for_each_entry(old, node, head, i_hash) { if (old->i_sb != sb) continue; if (!test(old, data)) continue; if (old->i_state & (I_FREEING|I_CLEAR|I_WILL_FREE)) continue; break; } if (likely(!node)) { hlist_add_head(&inode->i_hash, head); spin_unlock(&inode_lock); return 0; Loading