您的位置:首页 > 产品设计 > UI/UE

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

2017-02-23 10:28 429 查看
        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 */

        如此修改可能引发的后遗症,有待具体测试发现。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sdcard remount-ro
相关文章推荐