Lines Matching refs:sdp
307 void gfs2_jindex_free(struct gfs2_sbd *sdp) in gfs2_jindex_free() argument
312 spin_lock(&sdp->sd_jindex_spin); in gfs2_jindex_free()
313 list_add(&list, &sdp->sd_jindex_list); in gfs2_jindex_free()
314 list_del_init(&sdp->sd_jindex_list); in gfs2_jindex_free()
315 sdp->sd_journals = 0; in gfs2_jindex_free()
316 spin_unlock(&sdp->sd_jindex_spin); in gfs2_jindex_free()
345 struct gfs2_jdesc *gfs2_jdesc_find(struct gfs2_sbd *sdp, unsigned int jid) in gfs2_jdesc_find() argument
349 spin_lock(&sdp->sd_jindex_spin); in gfs2_jdesc_find()
350 jd = jdesc_find_i(&sdp->sd_jindex_list, jid); in gfs2_jdesc_find()
351 spin_unlock(&sdp->sd_jindex_spin); in gfs2_jdesc_find()
359 struct gfs2_sbd *sdp = GFS2_SB(jd->jd_inode); in gfs2_jdesc_check() local
365 jd->jd_blocks = size >> sdp->sd_sb.sb_bsize_shift; in gfs2_jdesc_check()
375 static int init_threads(struct gfs2_sbd *sdp) in init_threads() argument
380 p = kthread_run(gfs2_logd, sdp, "gfs2_logd"); in init_threads()
383 fs_err(sdp, "can't start logd thread: %d\n", error); in init_threads()
386 sdp->sd_logd_process = p; in init_threads()
388 p = kthread_run(gfs2_quotad, sdp, "gfs2_quotad"); in init_threads()
391 fs_err(sdp, "can't start quotad thread: %d\n", error); in init_threads()
394 sdp->sd_quotad_process = p; in init_threads()
398 kthread_stop(sdp->sd_logd_process); in init_threads()
409 int gfs2_make_fs_rw(struct gfs2_sbd *sdp) in gfs2_make_fs_rw() argument
411 struct gfs2_inode *ip = GFS2_I(sdp->sd_jdesc->jd_inode); in gfs2_make_fs_rw()
417 error = init_threads(sdp); in gfs2_make_fs_rw()
421 error = gfs2_glock_nq_init(sdp->sd_freeze_gl, LM_ST_SHARED, 0, in gfs2_make_fs_rw()
428 error = gfs2_find_jhead(sdp->sd_jdesc, &head); in gfs2_make_fs_rw()
433 gfs2_consist(sdp); in gfs2_make_fs_rw()
439 sdp->sd_log_sequence = head.lh_sequence + 1; in gfs2_make_fs_rw()
440 gfs2_log_pointers_init(sdp, head.lh_blkno); in gfs2_make_fs_rw()
442 error = gfs2_quota_init(sdp); in gfs2_make_fs_rw()
446 set_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags); in gfs2_make_fs_rw()
456 kthread_stop(sdp->sd_quotad_process); in gfs2_make_fs_rw()
457 kthread_stop(sdp->sd_logd_process); in gfs2_make_fs_rw()
479 int gfs2_statfs_init(struct gfs2_sbd *sdp) in gfs2_statfs_init() argument
481 struct gfs2_inode *m_ip = GFS2_I(sdp->sd_statfs_inode); in gfs2_statfs_init()
482 struct gfs2_statfs_change_host *m_sc = &sdp->sd_statfs_master; in gfs2_statfs_init()
483 struct gfs2_inode *l_ip = GFS2_I(sdp->sd_sc_inode); in gfs2_statfs_init()
484 struct gfs2_statfs_change_host *l_sc = &sdp->sd_statfs_local; in gfs2_statfs_init()
498 if (sdp->sd_args.ar_spectator) { in gfs2_statfs_init()
499 spin_lock(&sdp->sd_statfs_spin); in gfs2_statfs_init()
502 spin_unlock(&sdp->sd_statfs_spin); in gfs2_statfs_init()
508 spin_lock(&sdp->sd_statfs_spin); in gfs2_statfs_init()
513 spin_unlock(&sdp->sd_statfs_spin); in gfs2_statfs_init()
525 void gfs2_statfs_change(struct gfs2_sbd *sdp, s64 total, s64 free, in gfs2_statfs_change() argument
528 struct gfs2_inode *l_ip = GFS2_I(sdp->sd_sc_inode); in gfs2_statfs_change()
529 struct gfs2_statfs_change_host *l_sc = &sdp->sd_statfs_local; in gfs2_statfs_change()
530 struct gfs2_statfs_change_host *m_sc = &sdp->sd_statfs_master; in gfs2_statfs_change()
542 spin_lock(&sdp->sd_statfs_spin); in gfs2_statfs_change()
547 if (sdp->sd_args.ar_statfs_percent) { in gfs2_statfs_change()
549 y = m_sc->sc_free * sdp->sd_args.ar_statfs_percent; in gfs2_statfs_change()
553 spin_unlock(&sdp->sd_statfs_spin); in gfs2_statfs_change()
557 gfs2_wake_up_statfs(sdp); in gfs2_statfs_change()
560 void update_statfs(struct gfs2_sbd *sdp, struct buffer_head *m_bh, in update_statfs() argument
563 struct gfs2_inode *m_ip = GFS2_I(sdp->sd_statfs_inode); in update_statfs()
564 struct gfs2_inode *l_ip = GFS2_I(sdp->sd_sc_inode); in update_statfs()
565 struct gfs2_statfs_change_host *m_sc = &sdp->sd_statfs_master; in update_statfs()
566 struct gfs2_statfs_change_host *l_sc = &sdp->sd_statfs_local; in update_statfs()
571 spin_lock(&sdp->sd_statfs_spin); in update_statfs()
579 spin_unlock(&sdp->sd_statfs_spin); in update_statfs()
584 struct gfs2_sbd *sdp = sb->s_fs_info; in gfs2_statfs_sync() local
585 struct gfs2_inode *m_ip = GFS2_I(sdp->sd_statfs_inode); in gfs2_statfs_sync()
586 struct gfs2_inode *l_ip = GFS2_I(sdp->sd_sc_inode); in gfs2_statfs_sync()
587 struct gfs2_statfs_change_host *m_sc = &sdp->sd_statfs_master; in gfs2_statfs_sync()
588 struct gfs2_statfs_change_host *l_sc = &sdp->sd_statfs_local; in gfs2_statfs_sync()
603 spin_lock(&sdp->sd_statfs_spin); in gfs2_statfs_sync()
607 spin_unlock(&sdp->sd_statfs_spin); in gfs2_statfs_sync()
610 spin_unlock(&sdp->sd_statfs_spin); in gfs2_statfs_sync()
616 error = gfs2_trans_begin(sdp, 2 * RES_DINODE, 0); in gfs2_statfs_sync()
620 update_statfs(sdp, m_bh, l_bh); in gfs2_statfs_sync()
621 sdp->sd_statfs_force_sync = 0; in gfs2_statfs_sync()
623 gfs2_trans_end(sdp); in gfs2_statfs_sync()
651 static int gfs2_lock_fs_check_clean(struct gfs2_sbd *sdp, in gfs2_lock_fs_check_clean() argument
661 list_for_each_entry(jd, &sdp->sd_jindex_list, jd_list) { in gfs2_lock_fs_check_clean()
676 error = gfs2_glock_nq_init(sdp->sd_freeze_gl, LM_ST_EXCLUSIVE, in gfs2_lock_fs_check_clean()
679 list_for_each_entry(jd, &sdp->sd_jindex_list, jd_list) { in gfs2_lock_fs_check_clean()
753 struct gfs2_sbd *sdp = GFS2_SB(inode); in gfs2_write_inode() local
764 gfs2_ail1_flush(sdp, wbc); in gfs2_write_inode()
796 struct gfs2_sbd *sdp = GFS2_SB(inode); in gfs2_dirty_inode() local
805 if (unlikely(test_bit(SDF_SHUTDOWN, &sdp->sd_flags))) in gfs2_dirty_inode()
810 fs_err(sdp, "dirty_inode: glock %d\n", ret); in gfs2_dirty_inode()
818 ret = gfs2_trans_begin(sdp, RES_DINODE, 0); in gfs2_dirty_inode()
820 fs_err(sdp, "dirty_inode: gfs2_trans_begin %d\n", ret); in gfs2_dirty_inode()
834 gfs2_trans_end(sdp); in gfs2_dirty_inode()
847 static int gfs2_make_fs_ro(struct gfs2_sbd *sdp) in gfs2_make_fs_ro() argument
852 error = gfs2_glock_nq_init(sdp->sd_freeze_gl, LM_ST_SHARED, GL_NOCACHE, in gfs2_make_fs_ro()
854 if (error && !test_bit(SDF_SHUTDOWN, &sdp->sd_flags)) in gfs2_make_fs_ro()
857 kthread_stop(sdp->sd_quotad_process); in gfs2_make_fs_ro()
858 kthread_stop(sdp->sd_logd_process); in gfs2_make_fs_ro()
861 gfs2_quota_sync(sdp->sd_vfs, 0); in gfs2_make_fs_ro()
862 gfs2_statfs_sync(sdp->sd_vfs, 0); in gfs2_make_fs_ro()
864 gfs2_log_flush(sdp, NULL, GFS2_LOG_HEAD_FLUSH_SHUTDOWN | in gfs2_make_fs_ro()
866 wait_event(sdp->sd_reserving_log_wait, atomic_read(&sdp->sd_reserving_log) == 0); in gfs2_make_fs_ro()
867 gfs2_assert_warn(sdp, atomic_read(&sdp->sd_log_blks_free) == sdp->sd_jdesc->jd_blocks); in gfs2_make_fs_ro()
872 gfs2_quota_cleanup(sdp); in gfs2_make_fs_ro()
885 struct gfs2_sbd *sdp = sb->s_fs_info; in gfs2_put_super() local
890 set_bit(SDF_NORECOVERY, &sdp->sd_flags); in gfs2_put_super()
895 spin_lock(&sdp->sd_jindex_spin); in gfs2_put_super()
896 list_for_each_entry(jd, &sdp->sd_jindex_list, jd_list) { in gfs2_put_super()
899 spin_unlock(&sdp->sd_jindex_spin); in gfs2_put_super()
904 spin_unlock(&sdp->sd_jindex_spin); in gfs2_put_super()
907 error = gfs2_make_fs_ro(sdp); in gfs2_put_super()
909 gfs2_io_error(sdp); in gfs2_put_super()
915 iput(sdp->sd_jindex); in gfs2_put_super()
916 iput(sdp->sd_statfs_inode); in gfs2_put_super()
917 iput(sdp->sd_rindex); in gfs2_put_super()
918 iput(sdp->sd_quota_inode); in gfs2_put_super()
920 gfs2_glock_put(sdp->sd_rename_gl); in gfs2_put_super()
921 gfs2_glock_put(sdp->sd_freeze_gl); in gfs2_put_super()
923 if (!sdp->sd_args.ar_spectator) { in gfs2_put_super()
924 gfs2_glock_dq_uninit(&sdp->sd_journal_gh); in gfs2_put_super()
925 gfs2_glock_dq_uninit(&sdp->sd_jinode_gh); in gfs2_put_super()
926 gfs2_glock_dq_uninit(&sdp->sd_sc_gh); in gfs2_put_super()
927 gfs2_glock_dq_uninit(&sdp->sd_qc_gh); in gfs2_put_super()
928 iput(sdp->sd_sc_inode); in gfs2_put_super()
929 iput(sdp->sd_qc_inode); in gfs2_put_super()
932 gfs2_glock_dq_uninit(&sdp->sd_live_gh); in gfs2_put_super()
933 gfs2_clear_rgrpd(sdp); in gfs2_put_super()
934 gfs2_jindex_free(sdp); in gfs2_put_super()
936 gfs2_gl_hash_clear(sdp); in gfs2_put_super()
937 gfs2_delete_debugfs_file(sdp); in gfs2_put_super()
939 gfs2_lm_unmount(sdp); in gfs2_put_super()
942 gfs2_sys_fs_del(sdp); in gfs2_put_super()
954 struct gfs2_sbd *sdp = sb->s_fs_info; in gfs2_sync_fs() local
958 gfs2_log_flush(sdp, NULL, GFS2_LOG_HEAD_FLUSH_NORMAL | in gfs2_sync_fs()
960 return sdp->sd_log_error; in gfs2_sync_fs()
967 struct gfs2_sbd *sdp = container_of(work, struct gfs2_sbd, sd_freeze_work); in gfs2_freeze_func() local
968 struct super_block *sb = sdp->sd_vfs; in gfs2_freeze_func()
971 error = gfs2_glock_nq_init(sdp->sd_freeze_gl, LM_ST_SHARED, 0, in gfs2_freeze_func()
975 gfs2_assert_withdraw(sdp, 0); in gfs2_freeze_func()
978 atomic_set(&sdp->sd_freeze_state, SFS_UNFROZEN); in gfs2_freeze_func()
983 gfs2_assert_withdraw(sdp, 0); in gfs2_freeze_func()
985 if (!test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags)) in gfs2_freeze_func()
1001 struct gfs2_sbd *sdp = sb->s_fs_info; in gfs2_freeze() local
1004 mutex_lock(&sdp->sd_freeze_mutex); in gfs2_freeze()
1005 if (atomic_read(&sdp->sd_freeze_state) != SFS_UNFROZEN) in gfs2_freeze()
1008 if (test_bit(SDF_SHUTDOWN, &sdp->sd_flags)) { in gfs2_freeze()
1014 error = gfs2_lock_fs_check_clean(sdp, &sdp->sd_freeze_gh); in gfs2_freeze()
1020 fs_err(sdp, "waiting for recovery before freeze\n"); in gfs2_freeze()
1024 fs_err(sdp, "error freezing FS: %d\n", error); in gfs2_freeze()
1028 fs_err(sdp, "retrying...\n"); in gfs2_freeze()
1033 mutex_unlock(&sdp->sd_freeze_mutex); in gfs2_freeze()
1045 struct gfs2_sbd *sdp = sb->s_fs_info; in gfs2_unfreeze() local
1047 mutex_lock(&sdp->sd_freeze_mutex); in gfs2_unfreeze()
1048 if (atomic_read(&sdp->sd_freeze_state) != SFS_FROZEN || in gfs2_unfreeze()
1049 !gfs2_holder_initialized(&sdp->sd_freeze_gh)) { in gfs2_unfreeze()
1050 mutex_unlock(&sdp->sd_freeze_mutex); in gfs2_unfreeze()
1054 gfs2_glock_dq_uninit(&sdp->sd_freeze_gh); in gfs2_unfreeze()
1055 mutex_unlock(&sdp->sd_freeze_mutex); in gfs2_unfreeze()
1090 static int gfs2_statfs_slow(struct gfs2_sbd *sdp, struct gfs2_statfs_change_host *sc) in gfs2_statfs_slow() argument
1106 rgd_next = gfs2_rgrpd_get_first(sdp); in gfs2_statfs_slow()
1163 static int gfs2_statfs_i(struct gfs2_sbd *sdp, struct gfs2_statfs_change_host *sc) in gfs2_statfs_i() argument
1165 struct gfs2_statfs_change_host *m_sc = &sdp->sd_statfs_master; in gfs2_statfs_i()
1166 struct gfs2_statfs_change_host *l_sc = &sdp->sd_statfs_local; in gfs2_statfs_i()
1168 spin_lock(&sdp->sd_statfs_spin); in gfs2_statfs_i()
1175 spin_unlock(&sdp->sd_statfs_spin); in gfs2_statfs_i()
1198 struct gfs2_sbd *sdp = sb->s_fs_info; in gfs2_statfs() local
1202 error = gfs2_rindex_update(sdp); in gfs2_statfs()
1206 if (gfs2_tune_get(sdp, gt_statfs_slow)) in gfs2_statfs()
1207 error = gfs2_statfs_slow(sdp, &sc); in gfs2_statfs()
1209 error = gfs2_statfs_i(sdp, &sc); in gfs2_statfs()
1215 buf->f_bsize = sdp->sd_sb.sb_bsize; in gfs2_statfs()
1237 struct gfs2_sbd *sdp = sb->s_fs_info; in gfs2_remount_fs() local
1238 struct gfs2_args args = sdp->sd_args; /* Default to current settings */ in gfs2_remount_fs()
1239 struct gfs2_tune *gt = &sdp->sd_tune; in gfs2_remount_fs()
1257 if (strcmp(args.ar_lockproto, sdp->sd_args.ar_lockproto) || in gfs2_remount_fs()
1258 strcmp(args.ar_locktable, sdp->sd_args.ar_locktable) || in gfs2_remount_fs()
1259 strcmp(args.ar_hostdata, sdp->sd_args.ar_hostdata)) in gfs2_remount_fs()
1263 if (args_neq(&args, &sdp->sd_args, spectator) || in gfs2_remount_fs()
1264 args_neq(&args, &sdp->sd_args, localflocks) || in gfs2_remount_fs()
1265 args_neq(&args, &sdp->sd_args, meta)) in gfs2_remount_fs()
1268 if (sdp->sd_args.ar_spectator) in gfs2_remount_fs()
1273 error = gfs2_make_fs_ro(sdp); in gfs2_remount_fs()
1275 error = gfs2_make_fs_rw(sdp); in gfs2_remount_fs()
1280 sdp->sd_args = args; in gfs2_remount_fs()
1281 if (sdp->sd_args.ar_posix_acl) in gfs2_remount_fs()
1285 if (sdp->sd_args.ar_nobarrier) in gfs2_remount_fs()
1286 set_bit(SDF_NOBARRIERS, &sdp->sd_flags); in gfs2_remount_fs()
1288 clear_bit(SDF_NOBARRIERS, &sdp->sd_flags); in gfs2_remount_fs()
1302 gfs2_online_uevent(sdp); in gfs2_remount_fs()
1372 struct gfs2_sbd *sdp = root->d_sb->s_fs_info; in gfs2_show_options() local
1373 struct gfs2_args *args = &sdp->sd_args; in gfs2_show_options()
1376 if (is_ancestor(root, sdp->sd_master_dir)) in gfs2_show_options()
1429 val = sdp->sd_tune.gt_logd_secs; in gfs2_show_options()
1432 val = sdp->sd_tune.gt_statfs_quantum; in gfs2_show_options()
1435 else if (sdp->sd_tune.gt_statfs_slow) in gfs2_show_options()
1437 val = sdp->sd_tune.gt_quota_quantum; in gfs2_show_options()
1458 if (test_bit(SDF_NOBARRIERS, &sdp->sd_flags)) in gfs2_show_options()
1460 if (test_bit(SDF_DEMOTE, &sdp->sd_flags)) in gfs2_show_options()
1485 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in gfs2_dinode_dealloc() local
1495 error = gfs2_rindex_update(sdp); in gfs2_dinode_dealloc()
1503 rgd = gfs2_blk2rgrpd(sdp, ip->i_no_addr, 1); in gfs2_dinode_dealloc()
1514 error = gfs2_trans_begin(sdp, RES_RG_BIT + RES_STATFS + RES_QUOTA, in gfs2_dinode_dealloc()
1515 sdp->sd_jdesc->jd_blocks); in gfs2_dinode_dealloc()
1523 gfs2_trans_end(sdp); in gfs2_dinode_dealloc()
1572 struct gfs2_sbd *sdp = sb->s_fs_info; in gfs2_evict_inode() local
1605 error = gfs2_check_blk_type(sdp, ip->i_no_addr, GFS2_BLKST_UNLINKED); in gfs2_evict_inode()
1663 gfs2_log_flush(sdp, ip->i_gl, GFS2_LOG_HEAD_FLUSH_NORMAL | in gfs2_evict_inode()
1674 error = gfs2_trans_begin(sdp, 0, sdp->sd_jdesc->jd_blocks); in gfs2_evict_inode()
1680 gfs2_trans_end(sdp); in gfs2_evict_inode()
1700 fs_warn(sdp, "gfs2_evict_inode: %d\n", error); in gfs2_evict_inode()