@@ -289,7 +289,7 @@ void ufs_error (struct super_block * sb, const char * function,
289289 va_start (args , fmt );
290290 vaf .fmt = fmt ;
291291 vaf .va = & args ;
292- switch (UFS_SB (sb )-> s_mount_opt & UFS_MOUNT_ONERROR ) {
292+ switch (UFS_SB (sb )-> s_on_err ) {
293293 case UFS_MOUNT_ONERROR_PANIC :
294294 panic ("panic (device %s): %s: %pV\n" ,
295295 sb -> s_id , function , & vaf );
@@ -380,7 +380,7 @@ static const match_table_t tokens = {
380380 {Opt_err , NULL }
381381};
382382
383- static int ufs_parse_options (char * options , unsigned * mount_options )
383+ static int ufs_parse_options (char * options , unsigned * flavour , unsigned * on_err )
384384{
385385 char * p ;
386386
@@ -398,61 +398,47 @@ static int ufs_parse_options (char * options, unsigned * mount_options)
398398 token = match_token (p , tokens , args );
399399 switch (token ) {
400400 case Opt_type_old :
401- ufs_clear_opt (* mount_options , UFSTYPE );
402- ufs_set_opt (* mount_options , UFSTYPE_OLD );
401+ * flavour = UFS_MOUNT_UFSTYPE_OLD ;
403402 break ;
404403 case Opt_type_sunx86 :
405- ufs_clear_opt (* mount_options , UFSTYPE );
406- ufs_set_opt (* mount_options , UFSTYPE_SUNx86 );
404+ * flavour = UFS_MOUNT_UFSTYPE_SUNx86 ;
407405 break ;
408406 case Opt_type_sun :
409- ufs_clear_opt (* mount_options , UFSTYPE );
410- ufs_set_opt (* mount_options , UFSTYPE_SUN );
407+ * flavour = UFS_MOUNT_UFSTYPE_SUN ;
411408 break ;
412409 case Opt_type_sunos :
413- ufs_clear_opt (* mount_options , UFSTYPE );
414- ufs_set_opt (* mount_options , UFSTYPE_SUNOS );
410+ * flavour = UFS_MOUNT_UFSTYPE_SUNOS ;
415411 break ;
416412 case Opt_type_44bsd :
417- ufs_clear_opt (* mount_options , UFSTYPE );
418- ufs_set_opt (* mount_options , UFSTYPE_44BSD );
413+ * flavour = UFS_MOUNT_UFSTYPE_44BSD ;
419414 break ;
420415 case Opt_type_ufs2 :
421- ufs_clear_opt (* mount_options , UFSTYPE );
422- ufs_set_opt (* mount_options , UFSTYPE_UFS2 );
416+ * flavour = UFS_MOUNT_UFSTYPE_UFS2 ;
423417 break ;
424418 case Opt_type_hp :
425- ufs_clear_opt (* mount_options , UFSTYPE );
426- ufs_set_opt (* mount_options , UFSTYPE_HP );
419+ * flavour = UFS_MOUNT_UFSTYPE_HP ;
427420 break ;
428421 case Opt_type_nextstepcd :
429- ufs_clear_opt (* mount_options , UFSTYPE );
430- ufs_set_opt (* mount_options , UFSTYPE_NEXTSTEP_CD );
422+ * flavour = UFS_MOUNT_UFSTYPE_NEXTSTEP_CD ;
431423 break ;
432424 case Opt_type_nextstep :
433- ufs_clear_opt (* mount_options , UFSTYPE );
434- ufs_set_opt (* mount_options , UFSTYPE_NEXTSTEP );
425+ * flavour = UFS_MOUNT_UFSTYPE_NEXTSTEP ;
435426 break ;
436427 case Opt_type_openstep :
437- ufs_clear_opt (* mount_options , UFSTYPE );
438- ufs_set_opt (* mount_options , UFSTYPE_OPENSTEP );
428+ * flavour = UFS_MOUNT_UFSTYPE_OPENSTEP ;
439429 break ;
440430 case Opt_onerror_panic :
441- ufs_clear_opt (* mount_options , ONERROR );
442- ufs_set_opt (* mount_options , ONERROR_PANIC );
431+ * on_err = UFS_MOUNT_ONERROR_PANIC ;
443432 break ;
444433 case Opt_onerror_lock :
445- ufs_clear_opt (* mount_options , ONERROR );
446- ufs_set_opt (* mount_options , ONERROR_LOCK );
434+ * on_err = UFS_MOUNT_ONERROR_LOCK ;
447435 break ;
448436 case Opt_onerror_umount :
449- ufs_clear_opt (* mount_options , ONERROR );
450- ufs_set_opt (* mount_options , ONERROR_UMOUNT );
437+ * on_err = UFS_MOUNT_ONERROR_UMOUNT ;
451438 break ;
452439 case Opt_onerror_repair :
440+ * on_err = UFS_MOUNT_ONERROR_REPAIR ;
453441 pr_err ("Unable to do repair on error, will lock lock instead\n" );
454- ufs_clear_opt (* mount_options , ONERROR );
455- ufs_set_opt (* mount_options , ONERROR_REPAIR );
456442 break ;
457443 default :
458444 pr_err ("Invalid option: \"%s\" or missing value\n" , p );
@@ -474,7 +460,7 @@ static void ufs_setup_cstotal(struct super_block *sb)
474460 struct ufs_super_block_first * usb1 ;
475461 struct ufs_super_block_second * usb2 ;
476462 struct ufs_super_block_third * usb3 ;
477- unsigned mtype = sbi -> s_mount_opt & UFS_MOUNT_UFSTYPE ;
463+ unsigned mtype = sbi -> s_flavour ;
478464
479465 UFSD ("ENTER, mtype=%u\n" , mtype );
480466 usb1 = ubh_get_usb_first (uspi );
@@ -580,7 +566,7 @@ static int ufs_read_cylinder_structures(struct super_block *sb)
580566 */
581567static void ufs_put_cstotal (struct super_block * sb )
582568{
583- unsigned mtype = UFS_SB (sb )-> s_mount_opt & UFS_MOUNT_UFSTYPE ;
569+ unsigned mtype = UFS_SB (sb )-> s_flavour ;
584570 struct ufs_sb_private_info * uspi = UFS_SB (sb )-> s_uspi ;
585571 struct ufs_super_block_first * usb1 ;
586572 struct ufs_super_block_second * usb2 ;
@@ -807,20 +793,20 @@ static int ufs_fill_super(struct super_block *sb, void *data, int silent)
807793 * Set default mount options
808794 * Parse mount options
809795 */
810- sbi -> s_mount_opt = 0 ;
811- ufs_set_opt ( sbi -> s_mount_opt , ONERROR_LOCK ) ;
812- if (!ufs_parse_options (( char * ) data , & sbi -> s_mount_opt )) {
796+ sbi -> s_flavour = 0 ;
797+ sbi -> s_on_err = UFS_MOUNT_ONERROR_LOCK ;
798+ if (!ufs_parse_options ( data , & sbi -> s_flavour , & sbi -> s_on_err )) {
813799 pr_err ("wrong mount options\n" );
814800 goto failed ;
815801 }
816- if (!( sbi -> s_mount_opt & UFS_MOUNT_UFSTYPE ) ) {
802+ if (!sbi -> s_flavour ) {
817803 if (!silent )
818804 pr_err ("You didn't specify the type of your ufs filesystem\n\n"
819805 "mount -t ufs -o ufstype="
820806 "sun|sunx86|44bsd|ufs2|5xbsd|old|hp|nextstep|nextstep-cd|openstep ...\n\n"
821807 ">>>WARNING<<< Wrong ufstype may corrupt your filesystem, "
822808 "default is ufstype=old\n" );
823- ufs_set_opt ( sbi -> s_mount_opt , UFSTYPE_OLD ) ;
809+ sbi -> s_flavour = UFS_MOUNT_UFSTYPE_OLD ;
824810 }
825811
826812 uspi = kzalloc (sizeof (struct ufs_sb_private_info ), GFP_KERNEL );
@@ -836,7 +822,7 @@ static int ufs_fill_super(struct super_block *sb, void *data, int silent)
836822 sb -> s_time_min = S32_MIN ;
837823 sb -> s_time_max = S32_MAX ;
838824
839- switch (sbi -> s_mount_opt & UFS_MOUNT_UFSTYPE ) {
825+ switch (sbi -> s_flavour ) {
840826 case UFS_MOUNT_UFSTYPE_44BSD :
841827 UFSD ("ufstype=44bsd\n" );
842828 uspi -> s_fsize = block_size = 512 ;
@@ -1035,9 +1021,9 @@ static int ufs_fill_super(struct super_block *sb, void *data, int silent)
10351021 goto magic_found ;
10361022 }
10371023
1038- if (((( sbi -> s_mount_opt & UFS_MOUNT_UFSTYPE ) == UFS_MOUNT_UFSTYPE_NEXTSTEP )
1039- || (( sbi -> s_mount_opt & UFS_MOUNT_UFSTYPE ) == UFS_MOUNT_UFSTYPE_NEXTSTEP_CD )
1040- || (( sbi -> s_mount_opt & UFS_MOUNT_UFSTYPE ) == UFS_MOUNT_UFSTYPE_OPENSTEP ))
1024+ if ((sbi -> s_flavour == UFS_MOUNT_UFSTYPE_NEXTSTEP
1025+ || sbi -> s_flavour == UFS_MOUNT_UFSTYPE_NEXTSTEP_CD
1026+ || sbi -> s_flavour == UFS_MOUNT_UFSTYPE_OPENSTEP )
10411027 && uspi -> s_sbbase < 256 ) {
10421028 ubh_brelse_uspi (uspi );
10431029 ubh = NULL ;
@@ -1237,8 +1223,8 @@ static int ufs_fill_super(struct super_block *sb, void *data, int silent)
12371223 uspi -> s_bpf = uspi -> s_fsize << 3 ;
12381224 uspi -> s_bpfshift = uspi -> s_fshift + 3 ;
12391225 uspi -> s_bpfmask = uspi -> s_bpf - 1 ;
1240- if (( sbi -> s_mount_opt & UFS_MOUNT_UFSTYPE ) == UFS_MOUNT_UFSTYPE_44BSD ||
1241- ( sbi -> s_mount_opt & UFS_MOUNT_UFSTYPE ) == UFS_MOUNT_UFSTYPE_UFS2 )
1226+ if (sbi -> s_flavour == UFS_MOUNT_UFSTYPE_44BSD ||
1227+ sbi -> s_flavour == UFS_MOUNT_UFSTYPE_UFS2 )
12421228 uspi -> s_maxsymlinklen =
12431229 fs32_to_cpu (sb , usb3 -> fs_un2 .fs_44 .fs_maxsymlinklen );
12441230
@@ -1295,7 +1281,7 @@ static int ufs_remount (struct super_block *sb, int *mount_flags, char *data)
12951281 struct ufs_sb_private_info * uspi ;
12961282 struct ufs_super_block_first * usb1 ;
12971283 struct ufs_super_block_third * usb3 ;
1298- unsigned new_mount_opt , ufstype ;
1284+ unsigned on_err , ufstype ;
12991285 unsigned flags ;
13001286
13011287 sync_filesystem (sb );
@@ -1309,23 +1295,22 @@ static int ufs_remount (struct super_block *sb, int *mount_flags, char *data)
13091295 * Allow the "check" option to be passed as a remount option.
13101296 * It is not possible to change ufstype option during remount
13111297 */
1312- ufstype = UFS_SB (sb )-> s_mount_opt & UFS_MOUNT_UFSTYPE ;
1313- new_mount_opt = 0 ;
1314- ufs_set_opt (new_mount_opt , ONERROR_LOCK );
1315- if (!ufs_parse_options (data , & new_mount_opt )) {
1298+ ufstype = 0 ;
1299+ on_err = UFS_MOUNT_ONERROR_LOCK ;
1300+ if (!ufs_parse_options (data , & ufstype , & on_err )) {
13161301 mutex_unlock (& UFS_SB (sb )-> s_lock );
13171302 return - EINVAL ;
13181303 }
1319- if (!( new_mount_opt & UFS_MOUNT_UFSTYPE )) {
1320- new_mount_opt |= ufstype ;
1321- } else if (( new_mount_opt & UFS_MOUNT_UFSTYPE ) != ufstype ) {
1304+ if (!ufstype )
1305+ ufstype = UFS_SB ( sb ) -> s_flavour ;
1306+ else if (ufstype != UFS_SB ( sb ) -> s_flavour ) {
13221307 pr_err ("ufstype can't be changed during remount\n" );
13231308 mutex_unlock (& UFS_SB (sb )-> s_lock );
13241309 return - EINVAL ;
13251310 }
13261311
13271312 if ((bool )(* mount_flags & SB_RDONLY ) == sb_rdonly (sb )) {
1328- UFS_SB (sb )-> s_mount_opt = new_mount_opt ;
1313+ UFS_SB (sb )-> s_on_err = on_err ;
13291314 mutex_unlock (& UFS_SB (sb )-> s_lock );
13301315 return 0 ;
13311316 }
@@ -1369,23 +1354,23 @@ static int ufs_remount (struct super_block *sb, int *mount_flags, char *data)
13691354 sb -> s_flags &= ~SB_RDONLY ;
13701355#endif
13711356 }
1372- UFS_SB (sb )-> s_mount_opt = new_mount_opt ;
1357+ UFS_SB (sb )-> s_on_err = on_err ;
13731358 mutex_unlock (& UFS_SB (sb )-> s_lock );
13741359 return 0 ;
13751360}
13761361
13771362static int ufs_show_options (struct seq_file * seq , struct dentry * root )
13781363{
13791364 struct ufs_sb_info * sbi = UFS_SB (root -> d_sb );
1380- unsigned mval = sbi -> s_mount_opt & UFS_MOUNT_UFSTYPE ;
1365+ unsigned mval = sbi -> s_flavour ;
13811366 const struct match_token * tp = tokens ;
13821367
13831368 while (tp -> token != Opt_onerror_panic && tp -> token != mval )
13841369 ++ tp ;
13851370 BUG_ON (tp -> token == Opt_onerror_panic );
13861371 seq_printf (seq , ",%s" , tp -> pattern );
13871372
1388- mval = sbi -> s_mount_opt & UFS_MOUNT_ONERROR ;
1373+ mval = sbi -> s_on_err ;
13891374 while (tp -> token != Opt_err && tp -> token != mval )
13901375 ++ tp ;
13911376 BUG_ON (tp -> token == Opt_err );
0 commit comments