static int gfs2_remount_fs(struct super_block *sb, int *flags, char *data) { struct gfs2_sbd *sdp = sb->s_fs_info; int error; error = gfs2_mount_args(sdp, data, 1); if (error) return error; if (sdp->sd_args.ar_spectator) *flags |= MS_RDONLY; else { if (*flags & MS_RDONLY) { if (!(sb->s_flags & MS_RDONLY)) error = gfs2_make_fs_ro(sdp); } else if (!(*flags & MS_RDONLY) && (sb->s_flags & MS_RDONLY)) { error = gfs2_make_fs_rw(sdp); } } if (*flags & (MS_NOATIME | MS_NODIRATIME)) set_bit(SDF_NOATIME, &sdp->sd_flags); else clear_bit(SDF_NOATIME, &sdp->sd_flags); /* Don't let the VFS update atimes. GFS2 handles this itself. */ *flags |= MS_NOATIME | MS_NODIRATIME; return error; }
static int gfs2_remount_fs(struct super_block *sb, int *flags, char *data) { struct gfs2_sbd *sdp = sb->s_fs_info; int error; error = gfs2_mount_args(sdp, data, 1); if (error) return error; if (sdp->sd_args.ar_spectator) *flags |= MS_RDONLY; else { if (*flags & MS_RDONLY) { if (!(sb->s_flags & MS_RDONLY)) error = gfs2_make_fs_ro(sdp); } else if (!(*flags & MS_RDONLY) && (sb->s_flags & MS_RDONLY)) { error = gfs2_make_fs_rw(sdp); } } return error; }