Skip to content

Commit

Permalink
switch logfs to ->mount()
Browse files Browse the repository at this point in the history
Signed-off-by: Al Viro <[email protected]>
  • Loading branch information
Al Viro committed Oct 29, 2010
1 parent e5a0726 commit a1da9e8
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 27 deletions.
3 changes: 0 additions & 3 deletions fs/logfs/logfs.h
Original file line number Diff line number Diff line change
Expand Up @@ -620,9 +620,6 @@ void emergency_read_end(struct page *page);
void logfs_crash_dump(struct super_block *sb);
void *memchr_inv(const void *s, int c, size_t n);
int logfs_statfs(struct dentry *dentry, struct kstatfs *stats);
int logfs_get_sb_device(struct logfs_super *s,
struct file_system_type *type, int flags,
struct vfsmount *mnt);
int logfs_check_ds(struct logfs_disk_super *ds);
int logfs_write_sb(struct super_block *sb);

Expand Down
47 changes: 23 additions & 24 deletions fs/logfs/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,7 @@ static int logfs_make_writeable(struct super_block *sb)
return 0;
}

static int logfs_get_sb_final(struct super_block *sb, struct vfsmount *mnt)
static int logfs_get_sb_final(struct super_block *sb)
{
struct logfs_super *super = logfs_super(sb);
struct inode *rootdir;
Expand Down Expand Up @@ -356,7 +356,6 @@ static int logfs_get_sb_final(struct super_block *sb, struct vfsmount *mnt)
}

log_super("LogFS: Finished mounting\n");
simple_set_mnt(mnt, sb);
return 0;

fail:
Expand Down Expand Up @@ -536,9 +535,8 @@ static void logfs_kill_sb(struct super_block *sb)
log_super("LogFS: Finished unmounting\n");
}

int logfs_get_sb_device(struct logfs_super *super,
struct file_system_type *type, int flags,
struct vfsmount *mnt)
static struct dentry *logfs_get_sb_device(struct logfs_super *super,
struct file_system_type *type, int flags)
{
struct super_block *sb;
int err = -ENOMEM;
Expand All @@ -548,14 +546,17 @@ int logfs_get_sb_device(struct logfs_super *super,

err = -EINVAL;
sb = sget(type, logfs_sb_test, logfs_sb_set, super);
if (IS_ERR(sb))
goto err0;
if (IS_ERR(sb)) {
super->s_devops->put_device(super);
kfree(super);
return ERR_CAST(sb);
}

if (sb->s_root) {
/* Device is already in use */
err = 0;
simple_set_mnt(mnt, sb);
goto err0;
super->s_devops->put_device(super);
kfree(super);
return dget(sb->s_root);
}

/*
Expand All @@ -573,34 +574,32 @@ int logfs_get_sb_device(struct logfs_super *super,
goto err1;

sb->s_flags |= MS_ACTIVE;
err = logfs_get_sb_final(sb, mnt);
if (err)
err = logfs_get_sb_final(sb);
if (err) {
deactivate_locked_super(sb);
return err;
return ERR_PTR(err);
}
return dget(sb->s_root);

err1:
/* no ->s_root, no ->put_super() */
iput(super->s_master_inode);
iput(super->s_segfile_inode);
iput(super->s_mapping_inode);
deactivate_locked_super(sb);
return err;
err0:
super->s_devops->put_device(super);
kfree(super);
return err;
return ERR_PTR(err);
}

static int logfs_get_sb(struct file_system_type *type, int flags,
const char *devname, void *data, struct vfsmount *mnt)
static struct dentry *logfs_mount(struct file_system_type *type, int flags,
const char *devname, void *data)
{
ulong mtdnr;
struct logfs_super *super;
int err;

super = kzalloc(sizeof(*super), GFP_KERNEL);
if (!super)
return -ENOMEM;
return ERR_PTR(-ENOMEM);

if (!devname)
err = logfs_get_sb_bdev(super, type, devname);
Expand All @@ -617,16 +616,16 @@ static int logfs_get_sb(struct file_system_type *type, int flags,

if (err) {
kfree(super);
return err;
return ERR_PTR(err);
}

return logfs_get_sb_device(super, type, flags, mnt);
return logfs_get_sb_device(super, type, flags);
}

static struct file_system_type logfs_fs_type = {
.owner = THIS_MODULE,
.name = "logfs",
.get_sb = logfs_get_sb,
.mount = logfs_mount,
.kill_sb = logfs_kill_sb,
.fs_flags = FS_REQUIRES_DEV,

Expand Down

0 comments on commit a1da9e8

Please sign in to comment.