Browse Source

isofs: cleanup mount option processing

Remove unused variables from isofs_sb_info (used to be some mount
options), unify variables for option to use 0/1 (some options used
'y'/'n'), use bit fields for option flags in superblock.

Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
master
Jan Kara 13 years ago
committed by Linus Torvalds
parent
commit
5404ac8e44
  1. 5
      fs/isofs/dir.c
  2. 48
      fs/isofs/inode.c
  3. 28
      fs/isofs/isofs.h
  4. 4
      fs/isofs/namei.c

5
fs/isofs/dir.c

@ -195,9 +195,8 @@ static int do_isofs_readdir(struct inode *inode, struct file *filp,
* Do not report hidden files if so instructed, or associated
* files unless instructed to do so
*/
if ((sbi->s_hide == 'y' &&
(de->flags[-sbi->s_high_sierra] & 1)) ||
(sbi->s_showassoc =='n' &&
if ((sbi->s_hide && (de->flags[-sbi->s_high_sierra] & 1)) ||
(!sbi->s_showassoc &&
(de->flags[-sbi->s_high_sierra] & 4))) {
filp->f_pos += de_len;
continue;

48
fs/isofs/inode.c

@ -141,24 +141,24 @@ static const struct dentry_operations isofs_dentry_ops[] = {
};
struct iso9660_options{
char map;
char rock;
unsigned int rock:1;
unsigned int cruft:1;
unsigned int hide:1;
unsigned int showassoc:1;
unsigned int nocompress:1;
unsigned int overriderockperm:1;
unsigned int uid_set:1;
unsigned int gid_set:1;
unsigned int utf8:1;
unsigned char map;
char joliet;
char cruft;
char hide;
char showassoc;
char nocompress;
char overriderockperm;
unsigned char check;
unsigned int blocksize;
mode_t fmode;
mode_t dmode;
char uid_set;
char gid_set;
gid_t gid;
uid_t uid;
char *iocharset;
unsigned char utf8;
/* LVE */
s32 session;
s32 sbsector;
@ -363,11 +363,11 @@ static int parse_options(char *options, struct iso9660_options *popt)
int option;
popt->map = 'n';
popt->rock = 'y';
popt->joliet = 'y';
popt->cruft = 'n';
popt->hide = 'n';
popt->showassoc = 'n';
popt->rock = 1;
popt->joliet = 1;
popt->cruft = 0;
popt->hide = 0;
popt->showassoc = 0;
popt->check = 'u'; /* unset */
popt->nocompress = 0;
popt->blocksize = 1024;
@ -395,20 +395,20 @@ static int parse_options(char *options, struct iso9660_options *popt)
token = match_token(p, tokens, args);
switch (token) {
case Opt_norock:
popt->rock = 'n';
popt->rock = 0;
break;
case Opt_nojoliet:
popt->joliet = 'n';
popt->joliet = 0;
break;
case Opt_hide:
popt->hide = 'y';
popt->hide = 1;
break;
case Opt_unhide:
case Opt_showassoc:
popt->showassoc = 'y';
popt->showassoc = 1;
break;
case Opt_cruft:
popt->cruft = 'y';
popt->cruft = 1;
break;
case Opt_utf8:
popt->utf8 = 1;
@ -657,7 +657,7 @@ static int isofs_fill_super(struct super_block *s, void *data, int silent)
goto out_freebh;
sbi->s_high_sierra = 1;
opt.rock = 'n';
opt.rock = 0;
h_pri = (struct hs_primary_descriptor *)vdp;
goto root_found;
}
@ -680,7 +680,7 @@ static int isofs_fill_super(struct super_block *s, void *data, int silent)
root_found:
if (joliet_level && (pri == NULL || opt.rock == 'n')) {
if (joliet_level && (pri == NULL || !opt.rock)) {
/* This is the case of Joliet with the norock mount flag.
* A disc with both Joliet and Rock Ridge is handled later
*/
@ -809,7 +809,7 @@ root_found:
s->s_op = &isofs_sops;
s->s_export_op = &isofs_export_ops;
sbi->s_mapping = opt.map;
sbi->s_rock = (opt.rock == 'y' ? 2 : 0);
sbi->s_rock = (opt.rock ? 2 : 0);
sbi->s_rock_offset = -1; /* initial offset, will guess until SP is found*/
sbi->s_cruft = opt.cruft;
sbi->s_hide = opt.hide;
@ -1315,7 +1315,7 @@ static int isofs_read_inode(struct inode *inode)
* this CDROM was mounted with the cruft option.
*/
if (sbi->s_cruft == 'y')
if (sbi->s_cruft)
inode->i_size &= 0x00ffffff;
if (de->interleave[0]) {

28
fs/isofs/isofs.h

@ -35,24 +35,20 @@ struct isofs_sb_info {
unsigned long s_log_zone_size;
unsigned long s_max_size;
unsigned char s_high_sierra; /* A simple flag */
unsigned char s_mapping;
int s_rock_offset; /* offset of SUSP fields within SU area */
unsigned char s_rock;
unsigned char s_joliet_level;
unsigned char s_utf8;
unsigned char s_cruft; /* Broken disks with high
byte of length containing
junk */
unsigned char s_unhide;
unsigned char s_nosuid;
unsigned char s_nodev;
unsigned char s_nocompress;
unsigned char s_hide;
unsigned char s_showassoc;
unsigned char s_overriderockperm;
unsigned char s_uid_set;
unsigned char s_gid_set;
unsigned char s_mapping;
unsigned int s_high_sierra:1;
unsigned int s_rock:2;
unsigned int s_utf8:1;
unsigned int s_cruft:1; /* Broken disks with high byte of length
* containing junk */
unsigned int s_nocompress:1;
unsigned int s_hide:1;
unsigned int s_showassoc:1;
unsigned int s_overriderockperm:1;
unsigned int s_uid_set:1;
unsigned int s_gid_set:1;
mode_t s_fmode;
mode_t s_dmode;

4
fs/isofs/namei.c

@ -142,9 +142,9 @@ isofs_find_entry(struct inode *dir, struct dentry *dentry,
*/
match = 0;
if (dlen > 0 &&
(sbi->s_hide =='n' ||
(!sbi->s_hide ||
(!(de->flags[-sbi->s_high_sierra] & 1))) &&
(sbi->s_showassoc =='y' ||
(sbi->s_showassoc ||
(!(de->flags[-sbi->s_high_sierra] & 4)))) {
match = (isofs_cmp(dentry, dpnt, dlen) == 0);
}

Loading…
Cancel
Save