#include <linux/ctype.h>
#include <linux/namei.h>
#include <linux/miscdevice.h>
+#include <linux/version.h>
+#include "compat.h"
#include "ctree.h"
#include "disk-io.h"
#include "transaction.h"
static void btrfs_put_super (struct super_block * sb)
{
struct btrfs_root *root = btrfs_sb(sb);
- struct btrfs_fs_info *fs = root->fs_info;
int ret;
ret = close_ctree(root);
if (ret) {
printk("close ctree returns %d\n", ret);
}
- btrfs_sysfs_del_super(fs);
+#if 0
+ btrfs_sysfs_del_super(root->fs_info);
+#endif
sb->s_fs_info = NULL;
}
* All other options will be parsed on much later in the mount process and
* only when we need to allocate a new super block.
*/
-static int btrfs_parse_early_options(const char *options, int flags,
+static int btrfs_parse_early_options(const char *options, fmode_t flags,
void *holder, char **subvol_name,
struct btrfs_fs_devices **fs_devices)
{
err = -ENOMEM;
goto fail_close;
}
-
+#if 0
/* this does the super kobj at the same time */
err = btrfs_sysfs_add_super(tree_root->fs_info);
if (err)
goto fail_close;
+#endif
sb->s_root = root_dentry;
struct super_block *s;
struct dentry *root;
struct btrfs_fs_devices *fs_devices = NULL;
+ fmode_t mode = FMODE_READ;
int error = 0;
- error = btrfs_parse_early_options(data, flags, fs_type,
+ if (!(flags & MS_RDONLY))
+ mode |= FMODE_WRITE;
+
+ error = btrfs_parse_early_options(data, mode, fs_type,
&subvol_name, &fs_devices);
if (error)
goto error;
- error = btrfs_scan_one_device(dev_name, flags, fs_type, &fs_devices);
+ error = btrfs_scan_one_device(dev_name, mode, fs_type, &fs_devices);
if (error)
goto error_free_subvol_name;
- error = btrfs_open_devices(fs_devices, flags, fs_type);
+ error = btrfs_open_devices(fs_devices, mode, fs_type);
if (error)
goto error_free_subvol_name;
len = strnlen(vol->name, BTRFS_PATH_NAME_MAX);
switch (cmd) {
case BTRFS_IOC_SCAN_DEV:
- ret = btrfs_scan_one_device(vol->name, MS_RDONLY,
+ ret = btrfs_scan_one_device(vol->name, FMODE_READ,
&btrfs_fs_type, &fs_devices);
break;
}
return misc_register(&btrfs_misc);
}
-void btrfs_interface_exit(void)
+static void btrfs_interface_exit(void)
{
if (misc_deregister(&btrfs_misc) < 0)
printk("misc_deregister failed for control device");