ufs: implement show_options
An implementation of show_options method for UFS. Signed-off-by: Evgeniy Dushistov <dushistov@mail.ru> Cc: "Randy.Dunlap" <rdunlap@xenotime.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
252e211e90
commit
2a9807c0d3
1 changed files with 39 additions and 4 deletions
|
@ -88,6 +88,8 @@
|
|||
#include <linux/buffer_head.h>
|
||||
#include <linux/vfs.h>
|
||||
#include <linux/log2.h>
|
||||
#include <linux/mount.h>
|
||||
#include <linux/seq_file.h>
|
||||
|
||||
#include "swab.h"
|
||||
#include "util.h"
|
||||
|
@ -286,10 +288,21 @@ void ufs_warning (struct super_block * sb, const char * function,
|
|||
}
|
||||
|
||||
enum {
|
||||
Opt_type_old, Opt_type_sunx86, Opt_type_sun, Opt_type_sunos, Opt_type_44bsd,
|
||||
Opt_type_ufs2, Opt_type_hp, Opt_type_nextstepcd, Opt_type_nextstep,
|
||||
Opt_type_openstep, Opt_onerror_panic, Opt_onerror_lock,
|
||||
Opt_onerror_umount, Opt_onerror_repair, Opt_err
|
||||
Opt_type_old = UFS_MOUNT_UFSTYPE_OLD,
|
||||
Opt_type_sunx86 = UFS_MOUNT_UFSTYPE_SUNx86,
|
||||
Opt_type_sun = UFS_MOUNT_UFSTYPE_SUN,
|
||||
Opt_type_sunos = UFS_MOUNT_UFSTYPE_SUNOS,
|
||||
Opt_type_44bsd = UFS_MOUNT_UFSTYPE_44BSD,
|
||||
Opt_type_ufs2 = UFS_MOUNT_UFSTYPE_UFS2,
|
||||
Opt_type_hp = UFS_MOUNT_UFSTYPE_HP,
|
||||
Opt_type_nextstepcd = UFS_MOUNT_UFSTYPE_NEXTSTEP_CD,
|
||||
Opt_type_nextstep = UFS_MOUNT_UFSTYPE_NEXTSTEP,
|
||||
Opt_type_openstep = UFS_MOUNT_UFSTYPE_OPENSTEP,
|
||||
Opt_onerror_panic = UFS_MOUNT_ONERROR_PANIC,
|
||||
Opt_onerror_lock = UFS_MOUNT_ONERROR_LOCK,
|
||||
Opt_onerror_umount = UFS_MOUNT_ONERROR_UMOUNT,
|
||||
Opt_onerror_repair = UFS_MOUNT_ONERROR_REPAIR,
|
||||
Opt_err
|
||||
};
|
||||
|
||||
static match_table_t tokens = {
|
||||
|
@ -304,6 +317,7 @@ static match_table_t tokens = {
|
|||
{Opt_type_nextstepcd, "ufstype=nextstep-cd"},
|
||||
{Opt_type_nextstep, "ufstype=nextstep"},
|
||||
{Opt_type_openstep, "ufstype=openstep"},
|
||||
/*end of possible ufs types */
|
||||
{Opt_onerror_panic, "onerror=panic"},
|
||||
{Opt_onerror_lock, "onerror=lock"},
|
||||
{Opt_onerror_umount, "onerror=umount"},
|
||||
|
@ -1206,6 +1220,26 @@ static int ufs_remount (struct super_block *sb, int *mount_flags, char *data)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int ufs_show_options(struct seq_file *seq, struct vfsmount *vfs)
|
||||
{
|
||||
struct ufs_sb_info *sbi = UFS_SB(vfs->mnt_sb);
|
||||
unsigned mval = sbi->s_mount_opt & UFS_MOUNT_UFSTYPE;
|
||||
struct match_token *tp = tokens;
|
||||
|
||||
while (tp->token != Opt_onerror_panic && tp->token != mval)
|
||||
++tp;
|
||||
BUG_ON(tp->token == Opt_onerror_panic);
|
||||
seq_printf(seq, ",%s", tp->pattern);
|
||||
|
||||
mval = sbi->s_mount_opt & UFS_MOUNT_ONERROR;
|
||||
while (tp->token != Opt_err && tp->token != mval)
|
||||
++tp;
|
||||
BUG_ON(tp->token == Opt_err);
|
||||
seq_printf(seq, ",%s", tp->pattern);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ufs_statfs(struct dentry *dentry, struct kstatfs *buf)
|
||||
{
|
||||
struct super_block *sb = dentry->d_sb;
|
||||
|
@ -1298,6 +1332,7 @@ static const struct super_operations ufs_super_ops = {
|
|||
.write_super = ufs_write_super,
|
||||
.statfs = ufs_statfs,
|
||||
.remount_fs = ufs_remount,
|
||||
.show_options = ufs_show_options,
|
||||
#ifdef CONFIG_QUOTA
|
||||
.quota_read = ufs_quota_read,
|
||||
.quota_write = ufs_quota_write,
|
||||
|
|
Loading…
Reference in a new issue