static int gfs2_make_fs_ro(struct gfs2_sbd *sdp) { struct gfs2_holder t_gh; int error; gfs2_quota_sync(sdp); gfs2_statfs_sync(sdp); error = gfs2_glock_nq_init(sdp->sd_trans_gl, LM_ST_SHARED, GL_NOCACHE, &t_gh); if (error && !test_bit(SDF_SHUTDOWN, &sdp->sd_flags)) return error; gfs2_meta_syncfs(sdp); gfs2_log_shutdown(sdp); clear_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags); if (t_gh.gh_gl) gfs2_glock_dq_uninit(&t_gh); gfs2_quota_cleanup(sdp); return error; }
static void trans_go_drop_th(struct gfs2_glock *gl) { struct gfs2_sbd *sdp = gl->gl_sbd; if (test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags)) { gfs2_meta_syncfs(sdp); gfs2_log_shutdown(sdp); } }
static void trans_go_xmote_th(struct gfs2_glock *gl) { struct gfs2_sbd *sdp = gl->gl_sbd; if (gl->gl_state != LM_ST_UNLOCKED && test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags)) { gfs2_meta_syncfs(sdp); gfs2_log_shutdown(sdp); } }
static void trans_go_sync(struct gfs2_glock *gl) { struct gfs2_sbd *sdp = gl->gl_sbd; if (gl->gl_state != LM_ST_UNLOCKED && test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags)) { flush_workqueue(gfs2_delete_workqueue); gfs2_meta_syncfs(sdp); gfs2_log_shutdown(sdp); } }