android 内部sdcard出错处理errors=remount-ro改为errors=continue


        android存储nand flash或者emmc一般会划分一个分区用作内部sdcard,系统启动会挂载该分区,一般挂载到/mnt/sdcard/,可读可写。当该分区出错时,出错处理是errors=remount-ro,也就是重新挂载成只读,这时便无法进行往sdcard写入操作。

/dev/block/vold/179:1 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 0


        sdcard变成只读,一般需要具体查找导致出错的原因,从根本上解决。下策是,直接将errors=remount-ro改为errors=continue,避免出现只读的情况,具体实现如下:


diff --git a/linux-3.4/fs/fat/inode.c b/linux-3.4/fs/fat/inode.c
index d403f76..21459d0 100644
--- a/linux-3.4/fs/fat/inode.c
+++ b/linux-3.4/fs/fat/inode.c
@@ -1007,7 +1007,7 @@ static int parse_options(struct super_block *sb, char *options, int is_vfat,
        opts->numtail = 1;
        opts->usefree = opts->nocase = 0;
        opts->tz_utc = 0;
-       opts->errors = FAT_ERRORS_RO;
+       opts->errors = FAT_ERRORS_CONT;
        *debug = 0;


        if (!options)
@@ -1107,7 +1107,7 @@ static int parse_options(struct super_block *sb, char *options, int is_vfat,
                        opts->errors = FAT_ERRORS_PANIC;
                        break;
                case Opt_err_ro:
-                       opts->errors = FAT_ERRORS_RO;
+                       opts->errors = FAT_ERRORS_CONT;
                        break;


                /* msdos specific */


        如此修改可能引发的后遗症,有待具体测试发现。。。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值