Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 357657 | Differences between
and this patch

Collapse All | Expand All

(-)a/fs/inode.c (-7 / +14 lines)
Lines 256-261 void destroy_inode(struct inode *inode) Link Here
256
		kmem_cache_free(inode_cachep, (inode));
256
		kmem_cache_free(inode_cachep, (inode));
257
}
257
}
258
258
259
void address_space_init_once(struct address_space *mapping)
260
{
261
	memset(mapping, 0, sizeof(*mapping));
262
	INIT_RADIX_TREE(&mapping->page_tree, GFP_ATOMIC);
263
	spin_lock_init(&mapping->tree_lock);
264
	spin_lock_init(&mapping->i_mmap_lock);
265
	INIT_LIST_HEAD(&mapping->private_list);
266
	spin_lock_init(&mapping->private_lock);
267
	INIT_RAW_PRIO_TREE_ROOT(&mapping->i_mmap);
268
	INIT_LIST_HEAD(&mapping->i_mmap_nonlinear);
269
	mutex_init(&mapping->unmap_mutex);
270
}
271
259
/*
272
/*
260
 * These are initializations that only need to be done
273
 * These are initializations that only need to be done
261
 * once, because the fields are idempotent across use
274
 * once, because the fields are idempotent across use
Lines 267-279 void inode_init_once(struct inode *inode Link Here
267
	INIT_HLIST_NODE(&inode->i_hash);
280
	INIT_HLIST_NODE(&inode->i_hash);
268
	INIT_LIST_HEAD(&inode->i_dentry);
281
	INIT_LIST_HEAD(&inode->i_dentry);
269
	INIT_LIST_HEAD(&inode->i_devices);
282
	INIT_LIST_HEAD(&inode->i_devices);
270
	INIT_RADIX_TREE(&inode->i_data.page_tree, GFP_ATOMIC);
283
	address_space_init_once(&inode->i_data);
271
	spin_lock_init(&inode->i_data.tree_lock);
272
	spin_lock_init(&inode->i_data.i_mmap_lock);
273
	INIT_LIST_HEAD(&inode->i_data.private_list);
274
	spin_lock_init(&inode->i_data.private_lock);
275
	INIT_RAW_PRIO_TREE_ROOT(&inode->i_data.i_mmap);
276
	INIT_LIST_HEAD(&inode->i_data.i_mmap_nonlinear);
277
	i_size_ordered_init(inode);
284
	i_size_ordered_init(inode);
278
#ifdef CONFIG_INOTIFY
285
#ifdef CONFIG_INOTIFY
279
	INIT_LIST_HEAD(&inode->inotify_watches);
286
	INIT_LIST_HEAD(&inode->inotify_watches);
(-)a/fs/nilfs2/btnode.c (-13 lines)
Lines 34-52 Link Here
34
#include "btnode.h"
34
#include "btnode.h"
35
35
36
36
37
void nilfs_btnode_cache_init_once(struct address_space *btnc)
38
{
39
	memset(btnc, 0, sizeof(*btnc));
40
	INIT_RADIX_TREE(&btnc->page_tree, GFP_ATOMIC);
41
	spin_lock_init(&btnc->tree_lock);
42
	INIT_LIST_HEAD(&btnc->private_list);
43
	spin_lock_init(&btnc->private_lock);
44
45
	spin_lock_init(&btnc->i_mmap_lock);
46
	INIT_RAW_PRIO_TREE_ROOT(&btnc->i_mmap);
47
	INIT_LIST_HEAD(&btnc->i_mmap_nonlinear);
48
}
49
50
static const struct address_space_operations def_btnode_aops = {
37
static const struct address_space_operations def_btnode_aops = {
51
	.sync_page		= block_sync_page,
38
	.sync_page		= block_sync_page,
52
};
39
};
(-)a/fs/nilfs2/btnode.h (-1 lines)
Lines 37-43 struct nilfs_btnode_chkey_ctxt { Link Here
37
	struct buffer_head *newbh;
37
	struct buffer_head *newbh;
38
};
38
};
39
39
40
void nilfs_btnode_cache_init_once(struct address_space *);
41
void nilfs_btnode_cache_init(struct address_space *, struct backing_dev_info *);
40
void nilfs_btnode_cache_init(struct address_space *, struct backing_dev_info *);
42
void nilfs_btnode_cache_clear(struct address_space *);
41
void nilfs_btnode_cache_clear(struct address_space *);
43
int nilfs_btnode_submit_block(struct address_space *, __u64, sector_t,
42
int nilfs_btnode_submit_block(struct address_space *, __u64, sector_t,
(-)a/fs/nilfs2/super.c (-1 / +1 lines)
Lines 166-172 static void init_once(void *obj) Link Here
166
#ifdef CONFIG_NILFS_XATTR
166
#ifdef CONFIG_NILFS_XATTR
167
	init_rwsem(&ii->xattr_sem);
167
	init_rwsem(&ii->xattr_sem);
168
#endif
168
#endif
169
	nilfs_btnode_cache_init_once(&ii->i_btnode_cache);
169
	address_space_init_once(&ii->i_btnode_cache);
170
	ii->i_bmap = (struct nilfs_bmap *)&ii->i_bmap_union;
170
	ii->i_bmap = (struct nilfs_bmap *)&ii->i_bmap_union;
171
	inode_init_once(&ii->vfs_inode);
171
	inode_init_once(&ii->vfs_inode);
172
}
172
}
(-)a/include/linux/fs.h (+2 lines)
Lines 640-645 struct address_space { Link Here
640
	spinlock_t		private_lock;	/* for use by the address_space */
640
	spinlock_t		private_lock;	/* for use by the address_space */
641
	struct list_head	private_list;	/* ditto */
641
	struct list_head	private_list;	/* ditto */
642
	struct address_space	*assoc_mapping;	/* ditto */
642
	struct address_space	*assoc_mapping;	/* ditto */
643
	struct mutex		unmap_mutex;	/* to protect unmapping */
643
} __attribute__((aligned(sizeof(long))));
644
} __attribute__((aligned(sizeof(long))));
644
	/*
645
	/*
645
	 * On most architectures that alignment is already the case; but
646
	 * On most architectures that alignment is already the case; but
Lines 2163-2168 extern loff_t vfs_llseek(struct file *fi Link Here
2163
2164
2164
extern int inode_init_always(struct super_block *, struct inode *);
2165
extern int inode_init_always(struct super_block *, struct inode *);
2165
extern void inode_init_once(struct inode *);
2166
extern void inode_init_once(struct inode *);
2167
extern void address_space_init_once(struct address_space *mapping);
2166
extern void inode_add_to_lists(struct super_block *, struct inode *);
2168
extern void inode_add_to_lists(struct super_block *, struct inode *);
2167
extern void iput(struct inode *);
2169
extern void iput(struct inode *);
2168
extern struct inode * igrab(struct inode *);
2170
extern struct inode * igrab(struct inode *);
(-)a/mm/memory.c (+2 lines)
Lines 2668-2673 void unmap_mapping_range(struct address_ Link Here
2668
		details.last_index = ULONG_MAX;
2668
		details.last_index = ULONG_MAX;
2669
	details.i_mmap_lock = &mapping->i_mmap_lock;
2669
	details.i_mmap_lock = &mapping->i_mmap_lock;
2670
2670
2671
	mutex_lock(&mapping->unmap_mutex);
2671
	spin_lock(&mapping->i_mmap_lock);
2672
	spin_lock(&mapping->i_mmap_lock);
2672
2673
2673
	/* Protect against endless unmapping loops */
2674
	/* Protect against endless unmapping loops */
Lines 2684-2689 void unmap_mapping_range(struct address_ Link Here
2684
	if (unlikely(!list_empty(&mapping->i_mmap_nonlinear)))
2685
	if (unlikely(!list_empty(&mapping->i_mmap_nonlinear)))
2685
		unmap_mapping_range_list(&mapping->i_mmap_nonlinear, &details);
2686
		unmap_mapping_range_list(&mapping->i_mmap_nonlinear, &details);
2686
	spin_unlock(&mapping->i_mmap_lock);
2687
	spin_unlock(&mapping->i_mmap_lock);
2688
	mutex_unlock(&mapping->unmap_mutex);
2687
}
2689
}
2688
EXPORT_SYMBOL(unmap_mapping_range);
2690
EXPORT_SYMBOL(unmap_mapping_range);
2689
2691

Return to bug 357657