diff options
Diffstat (limited to 'drivers/xen/xenfs/super.c')
| -rw-r--r-- | drivers/xen/xenfs/super.c | 46 |
1 files changed, 7 insertions, 39 deletions
diff --git a/drivers/xen/xenfs/super.c b/drivers/xen/xenfs/super.c index f6339d11d59c..1aa389719846 100644 --- a/drivers/xen/xenfs/super.c +++ b/drivers/xen/xenfs/super.c | |||
| @@ -12,8 +12,6 @@ | |||
| 12 | #include <linux/module.h> | 12 | #include <linux/module.h> |
| 13 | #include <linux/fs.h> | 13 | #include <linux/fs.h> |
| 14 | #include <linux/magic.h> | 14 | #include <linux/magic.h> |
| 15 | #include <linux/mm.h> | ||
| 16 | #include <linux/backing-dev.h> | ||
| 17 | 15 | ||
| 18 | #include <xen/xen.h> | 16 | #include <xen/xen.h> |
| 19 | 17 | ||
| @@ -24,28 +22,12 @@ | |||
| 24 | MODULE_DESCRIPTION("Xen filesystem"); | 22 | MODULE_DESCRIPTION("Xen filesystem"); |
| 25 | MODULE_LICENSE("GPL"); | 23 | MODULE_LICENSE("GPL"); |
| 26 | 24 | ||
| 27 | static int xenfs_set_page_dirty(struct page *page) | ||
| 28 | { | ||
| 29 | return !TestSetPageDirty(page); | ||
| 30 | } | ||
| 31 | |||
| 32 | static const struct address_space_operations xenfs_aops = { | ||
| 33 | .set_page_dirty = xenfs_set_page_dirty, | ||
| 34 | }; | ||
| 35 | |||
| 36 | static struct backing_dev_info xenfs_backing_dev_info = { | ||
| 37 | .ra_pages = 0, /* No readahead */ | ||
| 38 | .capabilities = BDI_CAP_NO_ACCT_AND_WRITEBACK, | ||
| 39 | }; | ||
| 40 | |||
| 41 | static struct inode *xenfs_make_inode(struct super_block *sb, int mode) | 25 | static struct inode *xenfs_make_inode(struct super_block *sb, int mode) |
| 42 | { | 26 | { |
| 43 | struct inode *ret = new_inode(sb); | 27 | struct inode *ret = new_inode(sb); |
| 44 | 28 | ||
| 45 | if (ret) { | 29 | if (ret) { |
| 46 | ret->i_mode = mode; | 30 | ret->i_mode = mode; |
| 47 | ret->i_mapping->a_ops = &xenfs_aops; | ||
| 48 | ret->i_mapping->backing_dev_info = &xenfs_backing_dev_info; | ||
| 49 | ret->i_uid = ret->i_gid = 0; | 31 | ret->i_uid = ret->i_gid = 0; |
| 50 | ret->i_blocks = 0; | 32 | ret->i_blocks = 0; |
| 51 | ret->i_atime = ret->i_mtime = ret->i_ctime = CURRENT_TIME; | 33 | ret->i_atime = ret->i_mtime = ret->i_ctime = CURRENT_TIME; |
| @@ -121,9 +103,9 @@ static int xenfs_fill_super(struct super_block *sb, void *data, int silent) | |||
| 121 | return rc; | 103 | return rc; |
| 122 | } | 104 | } |
| 123 | 105 | ||
| 124 | static int xenfs_mount(struct file_system_type *fs_type, | 106 | static struct dentry *xenfs_mount(struct file_system_type *fs_type, |
| 125 | int flags, const char *dev_name, | 107 | int flags, const char *dev_name, |
| 126 | void *data) | 108 | void *data) |
| 127 | { | 109 | { |
| 128 | return mount_single(fs_type, flags, data, xenfs_fill_super); | 110 | return mount_single(fs_type, flags, data, xenfs_fill_super); |
| 129 | } | 111 | } |
| @@ -137,25 +119,11 @@ static struct file_system_type xenfs_type = { | |||
| 137 | 119 | ||
| 138 | static int __init xenfs_init(void) | 120 | static int __init xenfs_init(void) |
| 139 | { | 121 | { |
| 140 | int err; | 122 | if (xen_domain()) |
| 141 | if (!xen_domain()) { | 123 | return register_filesystem(&xenfs_type); |
| 142 | printk(KERN_INFO "xenfs: not registering filesystem on non-xen platform\n"); | ||
| 143 | return 0; | ||
| 144 | } | ||
| 145 | |||
| 146 | err = register_filesystem(&xenfs_type); | ||
| 147 | if (err) { | ||
| 148 | printk(KERN_ERR "xenfs: Unable to register filesystem!\n"); | ||
| 149 | goto out; | ||
| 150 | } | ||
| 151 | |||
| 152 | err = bdi_init(&xenfs_backing_dev_info); | ||
| 153 | if (err) | ||
| 154 | unregister_filesystem(&xenfs_type); | ||
| 155 | |||
| 156 | out: | ||
| 157 | 124 | ||
| 158 | return err; | 125 | printk(KERN_INFO "XENFS: not registering filesystem on non-xen platform\n"); |
| 126 | return 0; | ||
| 159 | } | 127 | } |
| 160 | 128 | ||
| 161 | static void __exit xenfs_exit(void) | 129 | static void __exit xenfs_exit(void) |
