mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
fs: introduce f_op->mmap_capabilities for nommu mmap support
Since "BDI: Provide backing device capability information [try #3]" the backing_dev_info structure also provides flags for the kind of mmap operation available in a nommu environment, which is entirely unrelated to it's original purpose. Introduce a new nommu-only file operation to provide this information to the nommu mmap code instead. Splitting this from the backing_dev_info structure allows to remove lots of backing_dev_info instance that aren't otherwise needed, and entirely gets rid of the concept of providing a backing_dev_info for a character device. It also removes the need for the mtd_inodefs filesystem. Signed-off-by: Christoph Hellwig <[email protected]> Reviewed-by: Tejun Heo <[email protected]> Acked-by: Brian Norris <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
This commit is contained in:
parent
97b713ba3e
commit
b4caecd480
32 changed files with 169 additions and 346 deletions
|
|
@ -70,8 +70,6 @@ extern int configfs_is_root(struct config_item *item);
|
|||
|
||||
extern struct inode * configfs_new_inode(umode_t mode, struct configfs_dirent *, struct super_block *);
|
||||
extern int configfs_create(struct dentry *, umode_t mode, int (*init)(struct inode *));
|
||||
extern int configfs_inode_init(void);
|
||||
extern void configfs_inode_exit(void);
|
||||
|
||||
extern int configfs_create_file(struct config_item *, const struct configfs_attribute *);
|
||||
extern int configfs_make_dirent(struct configfs_dirent *,
|
||||
|
|
|
|||
|
|
@ -50,12 +50,6 @@ static const struct address_space_operations configfs_aops = {
|
|||
.write_end = simple_write_end,
|
||||
};
|
||||
|
||||
static struct backing_dev_info configfs_backing_dev_info = {
|
||||
.name = "configfs",
|
||||
.ra_pages = 0, /* No readahead */
|
||||
.capabilities = BDI_CAP_NO_ACCT_AND_WRITEBACK,
|
||||
};
|
||||
|
||||
static const struct inode_operations configfs_inode_operations ={
|
||||
.setattr = configfs_setattr,
|
||||
};
|
||||
|
|
@ -137,7 +131,7 @@ struct inode *configfs_new_inode(umode_t mode, struct configfs_dirent *sd,
|
|||
if (inode) {
|
||||
inode->i_ino = get_next_ino();
|
||||
inode->i_mapping->a_ops = &configfs_aops;
|
||||
inode->i_mapping->backing_dev_info = &configfs_backing_dev_info;
|
||||
inode->i_mapping->backing_dev_info = &noop_backing_dev_info;
|
||||
inode->i_op = &configfs_inode_operations;
|
||||
|
||||
if (sd->s_iattr) {
|
||||
|
|
@ -283,13 +277,3 @@ void configfs_hash_and_remove(struct dentry * dir, const char * name)
|
|||
}
|
||||
mutex_unlock(&dir->d_inode->i_mutex);
|
||||
}
|
||||
|
||||
int __init configfs_inode_init(void)
|
||||
{
|
||||
return bdi_init(&configfs_backing_dev_info);
|
||||
}
|
||||
|
||||
void configfs_inode_exit(void)
|
||||
{
|
||||
bdi_destroy(&configfs_backing_dev_info);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -145,19 +145,13 @@ static int __init configfs_init(void)
|
|||
if (!config_kobj)
|
||||
goto out2;
|
||||
|
||||
err = configfs_inode_init();
|
||||
err = register_filesystem(&configfs_fs_type);
|
||||
if (err)
|
||||
goto out3;
|
||||
|
||||
err = register_filesystem(&configfs_fs_type);
|
||||
if (err)
|
||||
goto out4;
|
||||
|
||||
return 0;
|
||||
out4:
|
||||
pr_err("Unable to register filesystem!\n");
|
||||
configfs_inode_exit();
|
||||
out3:
|
||||
pr_err("Unable to register filesystem!\n");
|
||||
kobject_put(config_kobj);
|
||||
out2:
|
||||
kmem_cache_destroy(configfs_dir_cachep);
|
||||
|
|
@ -172,7 +166,6 @@ static void __exit configfs_exit(void)
|
|||
kobject_put(config_kobj);
|
||||
kmem_cache_destroy(configfs_dir_cachep);
|
||||
configfs_dir_cachep = NULL;
|
||||
configfs_inode_exit();
|
||||
}
|
||||
|
||||
MODULE_AUTHOR("Oracle");
|
||||
|
|
|
|||
Loading…
Reference in a new issue