Lines Matching refs:sdp

55  * @sdp: The GFS2 superblock
59 void gfs2_jindex_free(struct gfs2_sbd *sdp)
64 spin_lock(&sdp->sd_jindex_spin);
65 list_add(&list, &sdp->sd_jindex_list);
66 list_del_init(&sdp->sd_jindex_list);
67 sdp->sd_journals = 0;
68 spin_unlock(&sdp->sd_jindex_spin);
70 sdp->sd_jdesc = NULL;
99 struct gfs2_jdesc *gfs2_jdesc_find(struct gfs2_sbd *sdp, unsigned int jid)
103 spin_lock(&sdp->sd_jindex_spin);
104 jd = jdesc_find_i(&sdp->sd_jindex_list, jid);
105 spin_unlock(&sdp->sd_jindex_spin);
113 struct gfs2_sbd *sdp = GFS2_SB(jd->jd_inode);
119 jd->jd_blocks = size >> sdp->sd_sb.sb_bsize_shift;
131 * @sdp: the filesystem
136 int gfs2_make_fs_rw(struct gfs2_sbd *sdp)
138 struct gfs2_inode *ip = GFS2_I(sdp->sd_jdesc->jd_inode);
144 if (gfs2_withdrawn(sdp))
147 error = gfs2_find_jhead(sdp->sd_jdesc, &head, false);
149 gfs2_consist(sdp);
154 gfs2_consist(sdp);
159 sdp->sd_log_sequence = head.lh_sequence + 1;
160 gfs2_log_pointers_init(sdp, head.lh_blkno);
162 error = gfs2_quota_init(sdp);
163 if (!error && gfs2_withdrawn(sdp))
166 set_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags);
188 int gfs2_statfs_init(struct gfs2_sbd *sdp)
190 struct gfs2_inode *m_ip = GFS2_I(sdp->sd_statfs_inode);
191 struct gfs2_statfs_change_host *m_sc = &sdp->sd_statfs_master;
192 struct gfs2_inode *l_ip = GFS2_I(sdp->sd_sc_inode);
193 struct gfs2_statfs_change_host *l_sc = &sdp->sd_statfs_local;
207 if (sdp->sd_args.ar_spectator) {
208 spin_lock(&sdp->sd_statfs_spin);
211 spin_unlock(&sdp->sd_statfs_spin);
217 spin_lock(&sdp->sd_statfs_spin);
222 spin_unlock(&sdp->sd_statfs_spin);
234 void gfs2_statfs_change(struct gfs2_sbd *sdp, s64 total, s64 free,
237 struct gfs2_inode *l_ip = GFS2_I(sdp->sd_sc_inode);
238 struct gfs2_statfs_change_host *l_sc = &sdp->sd_statfs_local;
239 struct gfs2_statfs_change_host *m_sc = &sdp->sd_statfs_master;
251 spin_lock(&sdp->sd_statfs_spin);
256 if (sdp->sd_args.ar_statfs_percent) {
258 y = m_sc->sc_free * sdp->sd_args.ar_statfs_percent;
262 spin_unlock(&sdp->sd_statfs_spin);
266 gfs2_wake_up_statfs(sdp);
269 void update_statfs(struct gfs2_sbd *sdp, struct buffer_head *m_bh,
272 struct gfs2_inode *m_ip = GFS2_I(sdp->sd_statfs_inode);
273 struct gfs2_inode *l_ip = GFS2_I(sdp->sd_sc_inode);
274 struct gfs2_statfs_change_host *m_sc = &sdp->sd_statfs_master;
275 struct gfs2_statfs_change_host *l_sc = &sdp->sd_statfs_local;
280 spin_lock(&sdp->sd_statfs_spin);
288 spin_unlock(&sdp->sd_statfs_spin);
293 struct gfs2_sbd *sdp = sb->s_fs_info;
294 struct gfs2_inode *m_ip = GFS2_I(sdp->sd_statfs_inode);
295 struct gfs2_inode *l_ip = GFS2_I(sdp->sd_sc_inode);
296 struct gfs2_statfs_change_host *m_sc = &sdp->sd_statfs_master;
297 struct gfs2_statfs_change_host *l_sc = &sdp->sd_statfs_local;
312 spin_lock(&sdp->sd_statfs_spin);
316 spin_unlock(&sdp->sd_statfs_spin);
319 spin_unlock(&sdp->sd_statfs_spin);
325 error = gfs2_trans_begin(sdp, 2 * RES_DINODE, 0);
329 update_statfs(sdp, m_bh, l_bh);
330 sdp->sd_statfs_force_sync = 0;
332 gfs2_trans_end(sdp);
353 * @sdp: the file system
360 static int gfs2_lock_fs_check_clean(struct gfs2_sbd *sdp)
369 list_for_each_entry(jd, &sdp->sd_jindex_list, jd_list) {
384 error = gfs2_glock_nq_init(sdp->sd_freeze_gl, LM_ST_EXCLUSIVE,
385 LM_FLAG_NOEXP, &sdp->sd_freeze_gh);
389 list_for_each_entry(jd, &sdp->sd_jindex_list, jd_list) {
403 gfs2_freeze_unlock(&sdp->sd_freeze_gh);
463 struct gfs2_sbd *sdp = GFS2_SB(inode);
474 gfs2_ail1_flush(sdp, wbc);
506 struct gfs2_sbd *sdp = GFS2_SB(inode);
515 if (unlikely(gfs2_withdrawn(sdp)))
520 fs_err(sdp, "dirty_inode: glock %d\n", ret);
529 ret = gfs2_trans_begin(sdp, RES_DINODE, 0);
531 fs_err(sdp, "dirty_inode: gfs2_trans_begin %d\n", ret);
545 gfs2_trans_end(sdp);
553 * @sdp: the filesystem
558 int gfs2_make_fs_ro(struct gfs2_sbd *sdp)
561 int log_write_allowed = test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags);
563 gfs2_flush_delete_work(sdp);
564 if (!log_write_allowed && current == sdp->sd_quotad_process)
565 fs_warn(sdp, "The quotad daemon is withdrawing.\n");
566 else if (sdp->sd_quotad_process)
567 kthread_stop(sdp->sd_quotad_process);
568 sdp->sd_quotad_process = NULL;
570 if (!log_write_allowed && current == sdp->sd_logd_process)
571 fs_warn(sdp, "The logd daemon is withdrawing.\n");
572 else if (sdp->sd_logd_process)
573 kthread_stop(sdp->sd_logd_process);
574 sdp->sd_logd_process = NULL;
577 gfs2_quota_sync(sdp->sd_vfs, 0);
578 gfs2_statfs_sync(sdp->sd_vfs, 0);
580 gfs2_log_flush(sdp, NULL, GFS2_LOG_HEAD_FLUSH_SHUTDOWN |
582 wait_event(sdp->sd_reserving_log_wait,
583 atomic_read(&sdp->sd_reserving_log) == 0);
584 gfs2_assert_warn(sdp, atomic_read(&sdp->sd_log_blks_free) ==
585 sdp->sd_jdesc->jd_blocks);
587 wait_event_timeout(sdp->sd_reserving_log_wait,
588 atomic_read(&sdp->sd_reserving_log) == 0,
591 gfs2_quota_cleanup(sdp);
594 sdp->sd_vfs->s_flags |= SB_RDONLY;
607 struct gfs2_sbd *sdp = sb->s_fs_info;
612 set_bit(SDF_NORECOVERY, &sdp->sd_flags);
617 spin_lock(&sdp->sd_jindex_spin);
618 list_for_each_entry(jd, &sdp->sd_jindex_list, jd_list) {
621 spin_unlock(&sdp->sd_jindex_spin);
626 spin_unlock(&sdp->sd_jindex_spin);
629 error = gfs2_make_fs_ro(sdp);
631 gfs2_io_error(sdp);
633 WARN_ON(gfs2_withdrawing(sdp));
639 iput(sdp->sd_jindex);
640 iput(sdp->sd_statfs_inode);
641 iput(sdp->sd_rindex);
642 iput(sdp->sd_quota_inode);
644 gfs2_glock_put(sdp->sd_rename_gl);
645 gfs2_glock_put(sdp->sd_freeze_gl);
647 if (!sdp->sd_args.ar_spectator) {
648 if (gfs2_holder_initialized(&sdp->sd_journal_gh))
649 gfs2_glock_dq_uninit(&sdp->sd_journal_gh);
650 if (gfs2_holder_initialized(&sdp->sd_jinode_gh))
651 gfs2_glock_dq_uninit(&sdp->sd_jinode_gh);
652 gfs2_glock_dq_uninit(&sdp->sd_sc_gh);
653 gfs2_glock_dq_uninit(&sdp->sd_qc_gh);
654 free_local_statfs_inodes(sdp);
655 iput(sdp->sd_qc_inode);
658 gfs2_glock_dq_uninit(&sdp->sd_live_gh);
659 gfs2_clear_rgrpd(sdp);
660 gfs2_jindex_free(sdp);
662 gfs2_gl_hash_clear(sdp);
663 truncate_inode_pages_final(&sdp->sd_aspace);
664 gfs2_delete_debugfs_file(sdp);
666 gfs2_lm_unmount(sdp);
669 gfs2_sys_fs_del(sdp);
670 free_sbd(sdp);
682 struct gfs2_sbd *sdp = sb->s_fs_info;
686 gfs2_log_flush(sdp, NULL, GFS2_LOG_HEAD_FLUSH_NORMAL |
688 return sdp->sd_log_error;
695 struct gfs2_sbd *sdp = container_of(work, struct gfs2_sbd, sd_freeze_work);
696 struct super_block *sb = sdp->sd_vfs;
699 error = gfs2_freeze_lock(sdp, &freeze_gh, 0);
701 gfs2_assert_withdraw(sdp, 0);
703 atomic_set(&sdp->sd_freeze_state, SFS_UNFROZEN);
706 fs_info(sdp, "GFS2: couldn't thaw filesystem: %d\n",
708 gfs2_assert_withdraw(sdp, 0);
713 clear_bit_unlock(SDF_FS_FROZEN, &sdp->sd_flags);
714 wake_up_bit(&sdp->sd_flags, SDF_FS_FROZEN);
726 struct gfs2_sbd *sdp = sb->s_fs_info;
729 mutex_lock(&sdp->sd_freeze_mutex);
730 if (atomic_read(&sdp->sd_freeze_state) != SFS_UNFROZEN) {
736 if (gfs2_withdrawn(sdp)) {
741 error = gfs2_lock_fs_check_clean(sdp);
746 fs_err(sdp, "waiting for recovery before freeze\n");
748 fs_err(sdp, "Fatal IO error: cannot freeze gfs2 due "
752 fs_err(sdp, "error freezing FS: %d\n", error);
754 fs_err(sdp, "retrying...\n");
757 set_bit(SDF_FS_FROZEN, &sdp->sd_flags);
759 mutex_unlock(&sdp->sd_freeze_mutex);
771 struct gfs2_sbd *sdp = sb->s_fs_info;
773 mutex_lock(&sdp->sd_freeze_mutex);
774 if (atomic_read(&sdp->sd_freeze_state) != SFS_FROZEN ||
775 !gfs2_holder_initialized(&sdp->sd_freeze_gh)) {
776 mutex_unlock(&sdp->sd_freeze_mutex);
780 gfs2_freeze_unlock(&sdp->sd_freeze_gh);
781 mutex_unlock(&sdp->sd_freeze_mutex);
782 return wait_on_bit(&sdp->sd_flags, SDF_FS_FROZEN, TASK_INTERRUPTIBLE);
805 * @sdp: the filesystem
816 static int gfs2_statfs_slow(struct gfs2_sbd *sdp, struct gfs2_statfs_change_host *sc)
832 rgd_next = gfs2_rgrpd_get_first(sdp);
883 * @sdp: the filesystem
889 static int gfs2_statfs_i(struct gfs2_sbd *sdp, struct gfs2_statfs_change_host *sc)
891 struct gfs2_statfs_change_host *m_sc = &sdp->sd_statfs_master;
892 struct gfs2_statfs_change_host *l_sc = &sdp->sd_statfs_local;
894 spin_lock(&sdp->sd_statfs_spin);
901 spin_unlock(&sdp->sd_statfs_spin);
924 struct gfs2_sbd *sdp = sb->s_fs_info;
928 error = gfs2_rindex_update(sdp);
932 if (gfs2_tune_get(sdp, gt_statfs_slow))
933 error = gfs2_statfs_slow(sdp, &sc);
935 error = gfs2_statfs_i(sdp, &sc);
941 buf->f_bsize = sdp->sd_sb.sb_bsize;
1018 struct gfs2_sbd *sdp = root->d_sb->s_fs_info;
1019 struct gfs2_args *args = &sdp->sd_args;
1022 spin_lock(&sdp->sd_tune.gt_spin);
1023 logd_secs = sdp->sd_tune.gt_logd_secs;
1024 quota_quantum = sdp->sd_tune.gt_quota_quantum;
1025 statfs_quantum = sdp->sd_tune.gt_statfs_quantum;
1026 statfs_slow = sdp->sd_tune.gt_statfs_slow;
1027 spin_unlock(&sdp->sd_tune.gt_spin);
1029 if (is_ancestor(root, sdp->sd_master_dir))
1108 if (test_bit(SDF_NOBARRIERS, &sdp->sd_flags))
1110 if (test_bit(SDF_DEMOTE, &sdp->sd_flags))
1135 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode);
1145 error = gfs2_rindex_update(sdp);
1153 rgd = gfs2_blk2rgrpd(sdp, ip->i_no_addr, 1);
1164 error = gfs2_trans_begin(sdp, RES_RG_BIT + RES_STATFS + RES_QUOTA,
1165 sdp->sd_jdesc->jd_blocks);
1173 gfs2_trans_end(sdp);
1201 struct gfs2_sbd *sdp = GFS2_SB(inode);
1236 timeout = wait_event_interruptible_timeout(sdp->sd_async_glock_wait,
1261 struct gfs2_sbd *sdp = sb->s_fs_info;
1287 ret = gfs2_check_blk_type(sdp, ip->i_no_addr, GFS2_BLKST_UNLINKED);
1360 struct gfs2_sbd *sdp = sb->s_fs_info;
1365 gfs2_log_flush(sdp, ip->i_gl, GFS2_LOG_HEAD_FLUSH_NORMAL |
1375 ret = gfs2_trans_begin(sdp, 0, sdp->sd_jdesc->jd_blocks);
1382 gfs2_trans_end(sdp);
1410 struct gfs2_sbd *sdp = sb->s_fs_info;
1428 if (!sdp->sd_jdesc)
1448 fs_warn(sdp, "gfs2_evict_inode: %d\n", ret);
1452 gfs2_assert_warn(sdp, ip->i_qadata->qa_ref == 0);
1499 extern void free_local_statfs_inodes(struct gfs2_sbd *sdp)
1504 list_for_each_entry_safe(lsi, safe, &sdp->sd_sc_inodes_list, si_list) {
1505 if (lsi->si_jid == sdp->sd_jdesc->jd_jid)
1506 sdp->sd_sc_inode = NULL; /* belongs to this node */
1514 extern struct inode *find_local_statfs_inode(struct gfs2_sbd *sdp,
1520 * sdp->sd_sc_inodes_list corresponding to the 'index'. */
1521 list_for_each_entry(lsi, &sdp->sd_sc_inodes_list, si_list) {