vfs: Use const for kernel parser table

This is a much better version of a previous patch to make the parser
tables constant. Rather than changing the typedef, we put the "const" in
all the various places where its required, allowing the __initconst
exception for nfsroot which was the cause of the previous trouble.

This was posted for review some time ago and I believe its been in -mm
since then.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Cc: Alexander Viro <aviro@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Steven Whitehouse 2008-10-13 10:46:57 +01:00 коммит произвёл Linus Torvalds
Родитель 54cebc68c8
Коммит a447c09324
38 изменённых файлов: 43 добавлений и 43 удалений

Просмотреть файл

@ -659,7 +659,7 @@ enum {
Opt_uid, Opt_gid, Opt_mode, Opt_debug, Opt_err, Opt_uid, Opt_gid, Opt_mode, Opt_debug, Opt_err,
}; };
static match_table_t spufs_tokens = { static const match_table_t spufs_tokens = {
{ Opt_uid, "uid=%d" }, { Opt_uid, "uid=%d" },
{ Opt_gid, "gid=%d" }, { Opt_gid, "gid=%d" },
{ Opt_mode, "mode=%o" }, { Opt_mode, "mode=%o" },

Просмотреть файл

@ -219,7 +219,7 @@ static int hypfs_release(struct inode *inode, struct file *filp)
enum { opt_uid, opt_gid, opt_err }; enum { opt_uid, opt_gid, opt_err };
static match_table_t hypfs_tokens = { static const match_table_t hypfs_tokens = {
{opt_uid, "uid=%u"}, {opt_uid, "uid=%u"},
{opt_gid, "gid=%u"}, {opt_gid, "gid=%u"},
{opt_err, NULL} {opt_err, NULL}

Просмотреть файл

@ -1683,7 +1683,7 @@ enum {
SRP_OPT_SERVICE_ID), SRP_OPT_SERVICE_ID),
}; };
static match_table_t srp_opt_tokens = { static const match_table_t srp_opt_tokens = {
{ SRP_OPT_ID_EXT, "id_ext=%s" }, { SRP_OPT_ID_EXT, "id_ext=%s" },
{ SRP_OPT_IOC_GUID, "ioc_guid=%s" }, { SRP_OPT_IOC_GUID, "ioc_guid=%s" },
{ SRP_OPT_DGID, "dgid=%s" }, { SRP_OPT_DGID, "dgid=%s" },

Просмотреть файл

@ -97,7 +97,7 @@ enum {
Opt_err, Opt_err,
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{Opt_devuid, "devuid=%u"}, {Opt_devuid, "devuid=%u"},
{Opt_devgid, "devgid=%u"}, {Opt_devgid, "devgid=%u"},
{Opt_devmode, "devmode=%o"}, {Opt_devmode, "devmode=%o"},

Просмотреть файл

@ -55,7 +55,7 @@ enum {
Opt_err Opt_err
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{Opt_debug, "debug=%x"}, {Opt_debug, "debug=%x"},
{Opt_dfltuid, "dfltuid=%u"}, {Opt_dfltuid, "dfltuid=%u"},
{Opt_dfltgid, "dfltgid=%u"}, {Opt_dfltgid, "dfltgid=%u"},

Просмотреть файл

@ -157,7 +157,7 @@ static int adfs_show_options(struct seq_file *seq, struct vfsmount *mnt)
enum {Opt_uid, Opt_gid, Opt_ownmask, Opt_othmask, Opt_err}; enum {Opt_uid, Opt_gid, Opt_ownmask, Opt_othmask, Opt_err};
static match_table_t tokens = { static const match_table_t tokens = {
{Opt_uid, "uid=%u"}, {Opt_uid, "uid=%u"},
{Opt_gid, "gid=%u"}, {Opt_gid, "gid=%u"},
{Opt_ownmask, "ownmask=%o"}, {Opt_ownmask, "ownmask=%o"},

Просмотреть файл

@ -135,7 +135,7 @@ enum {
Opt_verbose, Opt_volume, Opt_ignore, Opt_err, Opt_verbose, Opt_volume, Opt_ignore, Opt_err,
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{Opt_bs, "bs=%u"}, {Opt_bs, "bs=%u"},
{Opt_mode, "mode=%o"}, {Opt_mode, "mode=%o"},
{Opt_mufs, "mufs"}, {Opt_mufs, "mufs"},

Просмотреть файл

@ -64,7 +64,7 @@ enum {
afs_opt_vol, afs_opt_vol,
}; };
static match_table_t afs_options_list = { static const match_table_t afs_options_list = {
{ afs_opt_cell, "cell=%s" }, { afs_opt_cell, "cell=%s" },
{ afs_opt_rwpath, "rwpath" }, { afs_opt_rwpath, "rwpath" },
{ afs_opt_vol, "vol=%s" }, { afs_opt_vol, "vol=%s" },

Просмотреть файл

@ -59,7 +59,7 @@ static const struct super_operations autofs_sops = {
enum {Opt_err, Opt_fd, Opt_uid, Opt_gid, Opt_pgrp, Opt_minproto, Opt_maxproto}; enum {Opt_err, Opt_fd, Opt_uid, Opt_gid, Opt_pgrp, Opt_minproto, Opt_maxproto};
static match_table_t autofs_tokens = { static const match_table_t autofs_tokens = {
{Opt_fd, "fd=%u"}, {Opt_fd, "fd=%u"},
{Opt_uid, "uid=%u"}, {Opt_uid, "uid=%u"},
{Opt_gid, "gid=%u"}, {Opt_gid, "gid=%u"},

Просмотреть файл

@ -213,7 +213,7 @@ static const struct super_operations autofs4_sops = {
enum {Opt_err, Opt_fd, Opt_uid, Opt_gid, Opt_pgrp, Opt_minproto, Opt_maxproto, enum {Opt_err, Opt_fd, Opt_uid, Opt_gid, Opt_pgrp, Opt_minproto, Opt_maxproto,
Opt_indirect, Opt_direct, Opt_offset}; Opt_indirect, Opt_direct, Opt_offset};
static match_table_t tokens = { static const match_table_t tokens = {
{Opt_fd, "fd=%u"}, {Opt_fd, "fd=%u"},
{Opt_uid, "uid=%u"}, {Opt_uid, "uid=%u"},
{Opt_gid, "gid=%u"}, {Opt_gid, "gid=%u"},

Просмотреть файл

@ -650,7 +650,7 @@ enum {
Opt_uid, Opt_gid, Opt_charset, Opt_debug, Opt_err, Opt_uid, Opt_gid, Opt_charset, Opt_debug, Opt_err,
}; };
static match_table_t befs_tokens = { static const match_table_t befs_tokens = {
{Opt_uid, "uid=%d"}, {Opt_uid, "uid=%d"},
{Opt_gid, "gid=%d"}, {Opt_gid, "gid=%d"},
{Opt_charset, "iocharset=%s"}, {Opt_charset, "iocharset=%s"},

Просмотреть файл

@ -49,7 +49,7 @@ enum {
Opt_err Opt_err
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{Opt_uid, "uid=%u"}, {Opt_uid, "uid=%u"},
{Opt_gid, "gid=%u"}, {Opt_gid, "gid=%u"},
{Opt_mode, "mode=%o"}, {Opt_mode, "mode=%o"},

Просмотреть файл

@ -211,7 +211,7 @@ enum { ecryptfs_opt_sig, ecryptfs_opt_ecryptfs_sig,
ecryptfs_opt_passthrough, ecryptfs_opt_xattr_metadata, ecryptfs_opt_passthrough, ecryptfs_opt_xattr_metadata,
ecryptfs_opt_encrypted_view, ecryptfs_opt_err }; ecryptfs_opt_encrypted_view, ecryptfs_opt_err };
static match_table_t tokens = { static const match_table_t tokens = {
{ecryptfs_opt_sig, "sig=%s"}, {ecryptfs_opt_sig, "sig=%s"},
{ecryptfs_opt_ecryptfs_sig, "ecryptfs_sig=%s"}, {ecryptfs_opt_ecryptfs_sig, "ecryptfs_sig=%s"},
{ecryptfs_opt_cipher, "cipher=%s"}, {ecryptfs_opt_cipher, "cipher=%s"},

Просмотреть файл

@ -393,7 +393,7 @@ enum {
Opt_usrquota, Opt_grpquota, Opt_reservation, Opt_noreservation Opt_usrquota, Opt_grpquota, Opt_reservation, Opt_noreservation
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{Opt_bsd_df, "bsddf"}, {Opt_bsd_df, "bsddf"},
{Opt_minix_df, "minixdf"}, {Opt_minix_df, "minixdf"},
{Opt_grpid, "grpid"}, {Opt_grpid, "grpid"},

Просмотреть файл

@ -760,7 +760,7 @@ enum {
Opt_grpquota Opt_grpquota
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{Opt_bsd_df, "bsddf"}, {Opt_bsd_df, "bsddf"},
{Opt_minix_df, "minixdf"}, {Opt_minix_df, "minixdf"},
{Opt_grpid, "grpid"}, {Opt_grpid, "grpid"},

Просмотреть файл

@ -919,7 +919,7 @@ enum {
Opt_inode_readahead_blks Opt_inode_readahead_blks
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{Opt_bsd_df, "bsddf"}, {Opt_bsd_df, "bsddf"},
{Opt_minix_df, "minixdf"}, {Opt_minix_df, "minixdf"},
{Opt_grpid, "grpid"}, {Opt_grpid, "grpid"},

Просмотреть файл

@ -855,7 +855,7 @@ enum {
Opt_obsolate, Opt_flush, Opt_tz_utc, Opt_err, Opt_obsolate, Opt_flush, Opt_tz_utc, Opt_err,
}; };
static match_table_t fat_tokens = { static const match_table_t fat_tokens = {
{Opt_check_r, "check=relaxed"}, {Opt_check_r, "check=relaxed"},
{Opt_check_s, "check=strict"}, {Opt_check_s, "check=strict"},
{Opt_check_n, "check=normal"}, {Opt_check_n, "check=normal"},
@ -890,14 +890,14 @@ static match_table_t fat_tokens = {
{Opt_tz_utc, "tz=UTC"}, {Opt_tz_utc, "tz=UTC"},
{Opt_err, NULL}, {Opt_err, NULL},
}; };
static match_table_t msdos_tokens = { static const match_table_t msdos_tokens = {
{Opt_nodots, "nodots"}, {Opt_nodots, "nodots"},
{Opt_nodots, "dotsOK=no"}, {Opt_nodots, "dotsOK=no"},
{Opt_dots, "dots"}, {Opt_dots, "dots"},
{Opt_dots, "dotsOK=yes"}, {Opt_dots, "dotsOK=yes"},
{Opt_err, NULL} {Opt_err, NULL}
}; };
static match_table_t vfat_tokens = { static const match_table_t vfat_tokens = {
{Opt_charset, "iocharset=%s"}, {Opt_charset, "iocharset=%s"},
{Opt_shortname_lower, "shortname=lower"}, {Opt_shortname_lower, "shortname=lower"},
{Opt_shortname_win95, "shortname=win95"}, {Opt_shortname_win95, "shortname=win95"},

Просмотреть файл

@ -354,7 +354,7 @@ enum {
OPT_ERR OPT_ERR
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{OPT_FD, "fd=%u"}, {OPT_FD, "fd=%u"},
{OPT_ROOTMODE, "rootmode=%o"}, {OPT_ROOTMODE, "rootmode=%o"},
{OPT_USER_ID, "user_id=%u"}, {OPT_USER_ID, "user_id=%u"},

Просмотреть файл

@ -46,7 +46,7 @@ enum {
Opt_err, Opt_err,
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{Opt_lockproto, "lockproto=%s"}, {Opt_lockproto, "lockproto=%s"},
{Opt_locktable, "locktable=%s"}, {Opt_locktable, "locktable=%s"},
{Opt_hostdata, "hostdata=%s"}, {Opt_hostdata, "hostdata=%s"},

Просмотреть файл

@ -173,7 +173,7 @@ enum {
opt_err opt_err
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{ opt_uid, "uid=%u" }, { opt_uid, "uid=%u" },
{ opt_gid, "gid=%u" }, { opt_gid, "gid=%u" },
{ opt_umask, "umask=%o" }, { opt_umask, "umask=%o" },

Просмотреть файл

@ -25,7 +25,7 @@ enum {
opt_force, opt_err opt_force, opt_err
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{ opt_creator, "creator=%s" }, { opt_creator, "creator=%s" },
{ opt_type, "type=%s" }, { opt_type, "type=%s" },
{ opt_umask, "umask=%o" }, { opt_umask, "umask=%o" },

Просмотреть файл

@ -215,7 +215,7 @@ enum {
Opt_timeshift, Opt_err, Opt_timeshift, Opt_err,
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{Opt_help, "help"}, {Opt_help, "help"},
{Opt_uid, "uid=%u"}, {Opt_uid, "uid=%u"},
{Opt_gid, "gid=%u"}, {Opt_gid, "gid=%u"},

Просмотреть файл

@ -57,7 +57,7 @@ enum {
Opt_err, Opt_err,
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{Opt_size, "size=%s"}, {Opt_size, "size=%s"},
{Opt_nr_inodes, "nr_inodes=%s"}, {Opt_nr_inodes, "nr_inodes=%s"},
{Opt_mode, "mode=%o"}, {Opt_mode, "mode=%o"},

Просмотреть файл

@ -310,7 +310,7 @@ enum {
Opt_nocompress, Opt_hide, Opt_showassoc, Opt_dmode, Opt_nocompress, Opt_hide, Opt_showassoc, Opt_dmode,
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{Opt_norock, "norock"}, {Opt_norock, "norock"},
{Opt_nojoliet, "nojoliet"}, {Opt_nojoliet, "nojoliet"},
{Opt_unhide, "unhide"}, {Opt_unhide, "unhide"},

Просмотреть файл

@ -199,7 +199,7 @@ enum {
Opt_usrquota, Opt_grpquota, Opt_uid, Opt_gid, Opt_umask Opt_usrquota, Opt_grpquota, Opt_uid, Opt_gid, Opt_umask
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{Opt_integrity, "integrity"}, {Opt_integrity, "integrity"},
{Opt_nointegrity, "nointegrity"}, {Opt_nointegrity, "nointegrity"},
{Opt_iocharset, "iocharset=%s"}, {Opt_iocharset, "iocharset=%s"},

Просмотреть файл

@ -127,7 +127,7 @@ enum {
Opt_err Opt_err
}; };
static match_table_t __initdata tokens = { static match_table_t __initconst tokens = {
{Opt_port, "port=%u"}, {Opt_port, "port=%u"},
{Opt_rsize, "rsize=%u"}, {Opt_rsize, "rsize=%u"},
{Opt_wsize, "wsize=%u"}, {Opt_wsize, "wsize=%u"},

Просмотреть файл

@ -98,7 +98,7 @@ enum {
Opt_err Opt_err
}; };
static match_table_t nfs_mount_option_tokens = { static const match_table_t nfs_mount_option_tokens = {
{ Opt_userspace, "bg" }, { Opt_userspace, "bg" },
{ Opt_userspace, "fg" }, { Opt_userspace, "fg" },
{ Opt_userspace, "retry=%s" }, { Opt_userspace, "retry=%s" },
@ -163,7 +163,7 @@ enum {
Opt_xprt_err Opt_xprt_err
}; };
static match_table_t nfs_xprt_protocol_tokens = { static const match_table_t nfs_xprt_protocol_tokens = {
{ Opt_xprt_udp, "udp" }, { Opt_xprt_udp, "udp" },
{ Opt_xprt_tcp, "tcp" }, { Opt_xprt_tcp, "tcp" },
{ Opt_xprt_rdma, "rdma" }, { Opt_xprt_rdma, "rdma" },
@ -180,7 +180,7 @@ enum {
Opt_sec_err Opt_sec_err
}; };
static match_table_t nfs_secflavor_tokens = { static const match_table_t nfs_secflavor_tokens = {
{ Opt_sec_none, "none" }, { Opt_sec_none, "none" },
{ Opt_sec_none, "null" }, { Opt_sec_none, "null" },
{ Opt_sec_sys, "sys" }, { Opt_sec_sys, "sys" },

Просмотреть файл

@ -157,7 +157,7 @@ enum {
Opt_err, Opt_err,
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{Opt_barrier, "barrier=%u"}, {Opt_barrier, "barrier=%u"},
{Opt_err_panic, "errors=panic"}, {Opt_err_panic, "errors=panic"},
{Opt_err_ro, "errors=remount-ro"}, {Opt_err_ro, "errors=remount-ro"},

Просмотреть файл

@ -346,7 +346,7 @@ enum {
Opt_uid, Opt_gid, Opt_umask, Opt_dmask, Opt_fmask Opt_uid, Opt_gid, Opt_umask, Opt_dmask, Opt_fmask
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{Opt_uid, "uid=%u"}, {Opt_uid, "uid=%u"},
{Opt_gid, "gid=%u"}, {Opt_gid, "gid=%u"},
{Opt_umask, "umask=%o"}, {Opt_umask, "umask=%o"},

Просмотреть файл

@ -848,7 +848,7 @@ enum {
Opt_err, Opt_err,
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{Opt_fast_unmount, "fast_unmount"}, {Opt_fast_unmount, "fast_unmount"},
{Opt_norm_unmount, "norm_unmount"}, {Opt_norm_unmount, "norm_unmount"},
{Opt_err, NULL}, {Opt_err, NULL},

Просмотреть файл

@ -369,7 +369,7 @@ enum {
Opt_err, Opt_uforget, Opt_uignore, Opt_gforget, Opt_gignore Opt_err, Opt_uforget, Opt_uignore, Opt_gforget, Opt_gignore
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{Opt_novrs, "novrs"}, {Opt_novrs, "novrs"},
{Opt_nostrict, "nostrict"}, {Opt_nostrict, "nostrict"},
{Opt_bs, "bs=%u"}, {Opt_bs, "bs=%u"},

Просмотреть файл

@ -309,7 +309,7 @@ enum {
Opt_err Opt_err
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{Opt_type_old, "ufstype=old"}, {Opt_type_old, "ufstype=old"},
{Opt_type_sunx86, "ufstype=sunx86"}, {Opt_type_sunx86, "ufstype=sunx86"},
{Opt_type_sun, "ufstype=sun"}, {Opt_type_sun, "ufstype=sun"},
@ -1233,7 +1233,7 @@ static int ufs_show_options(struct seq_file *seq, struct vfsmount *vfs)
{ {
struct ufs_sb_info *sbi = UFS_SB(vfs->mnt_sb); struct ufs_sb_info *sbi = UFS_SB(vfs->mnt_sb);
unsigned mval = sbi->s_mount_opt & UFS_MOUNT_UFSTYPE; unsigned mval = sbi->s_mount_opt & UFS_MOUNT_UFSTYPE;
struct match_token *tp = tokens; const struct match_token *tp = tokens;
while (tp->token != Opt_onerror_panic && tp->token != mval) while (tp->token != Opt_onerror_panic && tp->token != mval)
++tp; ++tp;

Просмотреть файл

@ -158,7 +158,7 @@ enum {
Opt_barrier, Opt_nobarrier, Opt_err Opt_barrier, Opt_nobarrier, Opt_err
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{Opt_barrier, "barrier"}, {Opt_barrier, "barrier"},
{Opt_nobarrier, "nobarrier"}, {Opt_nobarrier, "nobarrier"},
{Opt_err, NULL} {Opt_err, NULL}

Просмотреть файл

@ -25,7 +25,7 @@ typedef struct {
char *to; char *to;
} substring_t; } substring_t;
int match_token(char *, match_table_t table, substring_t args[]); int match_token(char *, const match_table_t table, substring_t args[]);
int match_int(substring_t *, int *result); int match_int(substring_t *, int *result);
int match_octal(substring_t *, int *result); int match_octal(substring_t *, int *result);
int match_hex(substring_t *, int *result); int match_hex(substring_t *, int *result);

Просмотреть файл

@ -100,7 +100,7 @@ static int match_one(char *s, const char *p, substring_t args[])
* format identifiers which will be taken into account when matching the * format identifiers which will be taken into account when matching the
* tokens, and whose locations will be returned in the @args array. * tokens, and whose locations will be returned in the @args array.
*/ */
int match_token(char *s, match_table_t table, substring_t args[]) int match_token(char *s, const match_table_t table, substring_t args[])
{ {
const struct match_token *p; const struct match_token *p;

Просмотреть файл

@ -52,7 +52,7 @@ enum {
Opt_err, Opt_err,
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{Opt_msize, "msize=%u"}, {Opt_msize, "msize=%u"},
{Opt_legacy, "noextend"}, {Opt_legacy, "noextend"},
{Opt_trans, "trans=%s"}, {Opt_trans, "trans=%s"},

Просмотреть файл

@ -86,7 +86,7 @@ enum {
Opt_port, Opt_rfdno, Opt_wfdno, Opt_err, Opt_port, Opt_rfdno, Opt_wfdno, Opt_err,
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{Opt_port, "port=%u"}, {Opt_port, "port=%u"},
{Opt_rfdno, "rfdno=%u"}, {Opt_rfdno, "rfdno=%u"},
{Opt_wfdno, "wfdno=%u"}, {Opt_wfdno, "wfdno=%u"},

Просмотреть файл

@ -325,7 +325,7 @@ enum {
Opt_rootcontext = 4, Opt_rootcontext = 4,
}; };
static match_table_t tokens = { static const match_table_t tokens = {
{Opt_context, CONTEXT_STR "%s"}, {Opt_context, CONTEXT_STR "%s"},
{Opt_fscontext, FSCONTEXT_STR "%s"}, {Opt_fscontext, FSCONTEXT_STR "%s"},
{Opt_defcontext, DEFCONTEXT_STR "%s"}, {Opt_defcontext, DEFCONTEXT_STR "%s"},