diff options
Diffstat (limited to 'fs/fuse/control.c')
-rw-r--r-- | fs/fuse/control.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/fs/fuse/control.c b/fs/fuse/control.c index 3773fd63d2f9..85542a7daf40 100644 --- a/fs/fuse/control.c +++ b/fs/fuse/control.c | |||
@@ -179,23 +179,27 @@ static ssize_t fuse_conn_congestion_threshold_write(struct file *file, | |||
179 | static const struct file_operations fuse_ctl_abort_ops = { | 179 | static const struct file_operations fuse_ctl_abort_ops = { |
180 | .open = nonseekable_open, | 180 | .open = nonseekable_open, |
181 | .write = fuse_conn_abort_write, | 181 | .write = fuse_conn_abort_write, |
182 | .llseek = no_llseek, | ||
182 | }; | 183 | }; |
183 | 184 | ||
184 | static const struct file_operations fuse_ctl_waiting_ops = { | 185 | static const struct file_operations fuse_ctl_waiting_ops = { |
185 | .open = nonseekable_open, | 186 | .open = nonseekable_open, |
186 | .read = fuse_conn_waiting_read, | 187 | .read = fuse_conn_waiting_read, |
188 | .llseek = no_llseek, | ||
187 | }; | 189 | }; |
188 | 190 | ||
189 | static const struct file_operations fuse_conn_max_background_ops = { | 191 | static const struct file_operations fuse_conn_max_background_ops = { |
190 | .open = nonseekable_open, | 192 | .open = nonseekable_open, |
191 | .read = fuse_conn_max_background_read, | 193 | .read = fuse_conn_max_background_read, |
192 | .write = fuse_conn_max_background_write, | 194 | .write = fuse_conn_max_background_write, |
195 | .llseek = no_llseek, | ||
193 | }; | 196 | }; |
194 | 197 | ||
195 | static const struct file_operations fuse_conn_congestion_threshold_ops = { | 198 | static const struct file_operations fuse_conn_congestion_threshold_ops = { |
196 | .open = nonseekable_open, | 199 | .open = nonseekable_open, |
197 | .read = fuse_conn_congestion_threshold_read, | 200 | .read = fuse_conn_congestion_threshold_read, |
198 | .write = fuse_conn_congestion_threshold_write, | 201 | .write = fuse_conn_congestion_threshold_write, |
202 | .llseek = no_llseek, | ||
199 | }; | 203 | }; |
200 | 204 | ||
201 | static struct dentry *fuse_ctl_add_dentry(struct dentry *parent, | 205 | static struct dentry *fuse_ctl_add_dentry(struct dentry *parent, |
@@ -218,6 +222,7 @@ static struct dentry *fuse_ctl_add_dentry(struct dentry *parent, | |||
218 | if (!inode) | 222 | if (!inode) |
219 | return NULL; | 223 | return NULL; |
220 | 224 | ||
225 | inode->i_ino = get_next_ino(); | ||
221 | inode->i_mode = mode; | 226 | inode->i_mode = mode; |
222 | inode->i_uid = fc->user_id; | 227 | inode->i_uid = fc->user_id; |
223 | inode->i_gid = fc->group_id; | 228 | inode->i_gid = fc->group_id; |
@@ -317,12 +322,10 @@ static int fuse_ctl_fill_super(struct super_block *sb, void *data, int silent) | |||
317 | return 0; | 322 | return 0; |
318 | } | 323 | } |
319 | 324 | ||
320 | static int fuse_ctl_get_sb(struct file_system_type *fs_type, int flags, | 325 | static struct dentry *fuse_ctl_mount(struct file_system_type *fs_type, |
321 | const char *dev_name, void *raw_data, | 326 | int flags, const char *dev_name, void *raw_data) |
322 | struct vfsmount *mnt) | ||
323 | { | 327 | { |
324 | return get_sb_single(fs_type, flags, raw_data, | 328 | return mount_single(fs_type, flags, raw_data, fuse_ctl_fill_super); |
325 | fuse_ctl_fill_super, mnt); | ||
326 | } | 329 | } |
327 | 330 | ||
328 | static void fuse_ctl_kill_sb(struct super_block *sb) | 331 | static void fuse_ctl_kill_sb(struct super_block *sb) |
@@ -341,7 +344,7 @@ static void fuse_ctl_kill_sb(struct super_block *sb) | |||
341 | static struct file_system_type fuse_ctl_fs_type = { | 344 | static struct file_system_type fuse_ctl_fs_type = { |
342 | .owner = THIS_MODULE, | 345 | .owner = THIS_MODULE, |
343 | .name = "fusectl", | 346 | .name = "fusectl", |
344 | .get_sb = fuse_ctl_get_sb, | 347 | .mount = fuse_ctl_mount, |
345 | .kill_sb = fuse_ctl_kill_sb, | 348 | .kill_sb = fuse_ctl_kill_sb, |
346 | }; | 349 | }; |
347 | 350 | ||