@@ -289,7 +289,7 @@ void ufs_error (struct super_block * sb, const char * function,
289
289
va_start (args , fmt );
290
290
vaf .fmt = fmt ;
291
291
vaf .va = & args ;
292
- switch (UFS_SB (sb )-> s_mount_opt & UFS_MOUNT_ONERROR ) {
292
+ switch (UFS_SB (sb )-> s_on_err ) {
293
293
case UFS_MOUNT_ONERROR_PANIC :
294
294
panic ("panic (device %s): %s: %pV\n" ,
295
295
sb -> s_id , function , & vaf );
@@ -380,7 +380,7 @@ static const match_table_t tokens = {
380
380
{Opt_err , NULL }
381
381
};
382
382
383
- static int ufs_parse_options (char * options , unsigned * mount_options )
383
+ static int ufs_parse_options (char * options , unsigned * flavour , unsigned * on_err )
384
384
{
385
385
char * p ;
386
386
@@ -398,61 +398,47 @@ static int ufs_parse_options (char * options, unsigned * mount_options)
398
398
token = match_token (p , tokens , args );
399
399
switch (token ) {
400
400
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 ;
403
402
break ;
404
403
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 ;
407
405
break ;
408
406
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 ;
411
408
break ;
412
409
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 ;
415
411
break ;
416
412
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 ;
419
414
break ;
420
415
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 ;
423
417
break ;
424
418
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 ;
427
420
break ;
428
421
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 ;
431
423
break ;
432
424
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 ;
435
426
break ;
436
427
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 ;
439
429
break ;
440
430
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 ;
443
432
break ;
444
433
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 ;
447
435
break ;
448
436
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 ;
451
438
break ;
452
439
case Opt_onerror_repair :
440
+ * on_err = UFS_MOUNT_ONERROR_REPAIR ;
453
441
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 );
456
442
break ;
457
443
default :
458
444
pr_err ("Invalid option: \"%s\" or missing value\n" , p );
@@ -474,7 +460,7 @@ static void ufs_setup_cstotal(struct super_block *sb)
474
460
struct ufs_super_block_first * usb1 ;
475
461
struct ufs_super_block_second * usb2 ;
476
462
struct ufs_super_block_third * usb3 ;
477
- unsigned mtype = sbi -> s_mount_opt & UFS_MOUNT_UFSTYPE ;
463
+ unsigned mtype = sbi -> s_flavour ;
478
464
479
465
UFSD ("ENTER, mtype=%u\n" , mtype );
480
466
usb1 = ubh_get_usb_first (uspi );
@@ -580,7 +566,7 @@ static int ufs_read_cylinder_structures(struct super_block *sb)
580
566
*/
581
567
static void ufs_put_cstotal (struct super_block * sb )
582
568
{
583
- unsigned mtype = UFS_SB (sb )-> s_mount_opt & UFS_MOUNT_UFSTYPE ;
569
+ unsigned mtype = UFS_SB (sb )-> s_flavour ;
584
570
struct ufs_sb_private_info * uspi = UFS_SB (sb )-> s_uspi ;
585
571
struct ufs_super_block_first * usb1 ;
586
572
struct ufs_super_block_second * usb2 ;
@@ -807,20 +793,20 @@ static int ufs_fill_super(struct super_block *sb, void *data, int silent)
807
793
* Set default mount options
808
794
* Parse mount options
809
795
*/
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 )) {
813
799
pr_err ("wrong mount options\n" );
814
800
goto failed ;
815
801
}
816
- if (!( sbi -> s_mount_opt & UFS_MOUNT_UFSTYPE ) ) {
802
+ if (!sbi -> s_flavour ) {
817
803
if (!silent )
818
804
pr_err ("You didn't specify the type of your ufs filesystem\n\n"
819
805
"mount -t ufs -o ufstype="
820
806
"sun|sunx86|44bsd|ufs2|5xbsd|old|hp|nextstep|nextstep-cd|openstep ...\n\n"
821
807
">>>WARNING<<< Wrong ufstype may corrupt your filesystem, "
822
808
"default is ufstype=old\n" );
823
- ufs_set_opt ( sbi -> s_mount_opt , UFSTYPE_OLD ) ;
809
+ sbi -> s_flavour = UFS_MOUNT_UFSTYPE_OLD ;
824
810
}
825
811
826
812
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)
836
822
sb -> s_time_min = S32_MIN ;
837
823
sb -> s_time_max = S32_MAX ;
838
824
839
- switch (sbi -> s_mount_opt & UFS_MOUNT_UFSTYPE ) {
825
+ switch (sbi -> s_flavour ) {
840
826
case UFS_MOUNT_UFSTYPE_44BSD :
841
827
UFSD ("ufstype=44bsd\n" );
842
828
uspi -> s_fsize = block_size = 512 ;
@@ -1035,9 +1021,9 @@ static int ufs_fill_super(struct super_block *sb, void *data, int silent)
1035
1021
goto magic_found ;
1036
1022
}
1037
1023
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 )
1041
1027
&& uspi -> s_sbbase < 256 ) {
1042
1028
ubh_brelse_uspi (uspi );
1043
1029
ubh = NULL ;
@@ -1237,8 +1223,8 @@ static int ufs_fill_super(struct super_block *sb, void *data, int silent)
1237
1223
uspi -> s_bpf = uspi -> s_fsize << 3 ;
1238
1224
uspi -> s_bpfshift = uspi -> s_fshift + 3 ;
1239
1225
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 )
1242
1228
uspi -> s_maxsymlinklen =
1243
1229
fs32_to_cpu (sb , usb3 -> fs_un2 .fs_44 .fs_maxsymlinklen );
1244
1230
@@ -1295,7 +1281,7 @@ static int ufs_remount (struct super_block *sb, int *mount_flags, char *data)
1295
1281
struct ufs_sb_private_info * uspi ;
1296
1282
struct ufs_super_block_first * usb1 ;
1297
1283
struct ufs_super_block_third * usb3 ;
1298
- unsigned new_mount_opt , ufstype ;
1284
+ unsigned on_err , ufstype ;
1299
1285
unsigned flags ;
1300
1286
1301
1287
sync_filesystem (sb );
@@ -1309,23 +1295,22 @@ static int ufs_remount (struct super_block *sb, int *mount_flags, char *data)
1309
1295
* Allow the "check" option to be passed as a remount option.
1310
1296
* It is not possible to change ufstype option during remount
1311
1297
*/
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 )) {
1316
1301
mutex_unlock (& UFS_SB (sb )-> s_lock );
1317
1302
return - EINVAL ;
1318
1303
}
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 ) {
1322
1307
pr_err ("ufstype can't be changed during remount\n" );
1323
1308
mutex_unlock (& UFS_SB (sb )-> s_lock );
1324
1309
return - EINVAL ;
1325
1310
}
1326
1311
1327
1312
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 ;
1329
1314
mutex_unlock (& UFS_SB (sb )-> s_lock );
1330
1315
return 0 ;
1331
1316
}
@@ -1369,23 +1354,23 @@ static int ufs_remount (struct super_block *sb, int *mount_flags, char *data)
1369
1354
sb -> s_flags &= ~SB_RDONLY ;
1370
1355
#endif
1371
1356
}
1372
- UFS_SB (sb )-> s_mount_opt = new_mount_opt ;
1357
+ UFS_SB (sb )-> s_on_err = on_err ;
1373
1358
mutex_unlock (& UFS_SB (sb )-> s_lock );
1374
1359
return 0 ;
1375
1360
}
1376
1361
1377
1362
static int ufs_show_options (struct seq_file * seq , struct dentry * root )
1378
1363
{
1379
1364
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 ;
1381
1366
const struct match_token * tp = tokens ;
1382
1367
1383
1368
while (tp -> token != Opt_onerror_panic && tp -> token != mval )
1384
1369
++ tp ;
1385
1370
BUG_ON (tp -> token == Opt_onerror_panic );
1386
1371
seq_printf (seq , ",%s" , tp -> pattern );
1387
1372
1388
- mval = sbi -> s_mount_opt & UFS_MOUNT_ONERROR ;
1373
+ mval = sbi -> s_on_err ;
1389
1374
while (tp -> token != Opt_err && tp -> token != mval )
1390
1375
++ tp ;
1391
1376
BUG_ON (tp -> token == Opt_err );
0 commit comments