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;
92 struct gfs2_jdesc *gfs2_jdesc_find(struct gfs2_sbd *sdp, unsigned int jid)
96 spin_lock(&sdp->sd_jindex_spin);
97 jd = jdesc_find_i(&sdp->sd_jindex_list, jid);
98 spin_unlock(&sdp->sd_jindex_spin);
106 struct gfs2_sbd *sdp = GFS2_SB(jd->jd_inode);
112 jd->jd_blocks = size >> sdp->sd_sb.sb_bsize_shift;
124 * @sdp: the filesystem
129 int gfs2_make_fs_rw(struct gfs2_sbd *sdp)
131 struct gfs2_inode *ip = GFS2_I(sdp->sd_jdesc->jd_inode);
137 if (gfs2_withdrawn(sdp))
140 error = gfs2_find_jhead(sdp->sd_jdesc, &head, false);
142 gfs2_consist(sdp);
147 gfs2_consist(sdp);
152 sdp->sd_log_sequence = head.lh_sequence + 1;
153 gfs2_log_pointers_init(sdp, head.lh_blkno);
155 error = gfs2_quota_init(sdp);
156 if (!error && gfs2_withdrawn(sdp))
159 set_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags);
181 int gfs2_statfs_init(struct gfs2_sbd *sdp)
183 struct gfs2_inode *m_ip = GFS2_I(sdp->sd_statfs_inode);
184 struct gfs2_statfs_change_host *m_sc = &sdp->sd_statfs_master;
185 struct gfs2_statfs_change_host *l_sc = &sdp->sd_statfs_local;
199 if (sdp->sd_args.ar_spectator) {
200 spin_lock(&sdp->sd_statfs_spin);
203 spin_unlock(&sdp->sd_statfs_spin);
205 spin_lock(&sdp->sd_statfs_spin);
208 gfs2_statfs_change_in(l_sc, sdp->sd_sc_bh->b_data +
210 spin_unlock(&sdp->sd_statfs_spin);
220 void gfs2_statfs_change(struct gfs2_sbd *sdp, s64 total, s64 free,
223 struct gfs2_inode *l_ip = GFS2_I(sdp->sd_sc_inode);
224 struct gfs2_statfs_change_host *l_sc = &sdp->sd_statfs_local;
225 struct gfs2_statfs_change_host *m_sc = &sdp->sd_statfs_master;
229 gfs2_trans_add_meta(l_ip->i_gl, sdp->sd_sc_bh);
231 spin_lock(&sdp->sd_statfs_spin);
235 gfs2_statfs_change_out(l_sc, sdp->sd_sc_bh->b_data +
237 if (sdp->sd_args.ar_statfs_percent) {
239 y = m_sc->sc_free * sdp->sd_args.ar_statfs_percent;
243 spin_unlock(&sdp->sd_statfs_spin);
246 gfs2_wake_up_statfs(sdp);
249 void update_statfs(struct gfs2_sbd *sdp, struct buffer_head *m_bh)
251 struct gfs2_inode *m_ip = GFS2_I(sdp->sd_statfs_inode);
252 struct gfs2_inode *l_ip = GFS2_I(sdp->sd_sc_inode);
253 struct gfs2_statfs_change_host *m_sc = &sdp->sd_statfs_master;
254 struct gfs2_statfs_change_host *l_sc = &sdp->sd_statfs_local;
256 gfs2_trans_add_meta(l_ip->i_gl, sdp->sd_sc_bh);
259 spin_lock(&sdp->sd_statfs_spin);
264 memset(sdp->sd_sc_bh->b_data + sizeof(struct gfs2_dinode),
267 spin_unlock(&sdp->sd_statfs_spin);
272 struct gfs2_sbd *sdp = sb->s_fs_info;
273 struct gfs2_inode *m_ip = GFS2_I(sdp->sd_statfs_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;
289 spin_lock(&sdp->sd_statfs_spin);
293 spin_unlock(&sdp->sd_statfs_spin);
296 spin_unlock(&sdp->sd_statfs_spin);
298 error = gfs2_trans_begin(sdp, 2 * RES_DINODE, 0);
302 update_statfs(sdp, m_bh);
303 sdp->sd_statfs_force_sync = 0;
305 gfs2_trans_end(sdp);
323 * @sdp: the file system
328 static int gfs2_lock_fs_check_clean(struct gfs2_sbd *sdp)
342 list_for_each_entry(jd, &sdp->sd_jindex_list, jd_list) {
357 gfs2_freeze_unlock(&sdp->sd_freeze_gh);
359 error = gfs2_glock_nq_init(sdp->sd_freeze_gl, LM_ST_EXCLUSIVE,
361 &sdp->sd_freeze_gh);
365 list_for_each_entry(jd, &sdp->sd_jindex_list, jd_list) {
381 gfs2_freeze_unlock(&sdp->sd_freeze_gh);
384 error2 = gfs2_freeze_lock_shared(sdp);
385 gfs2_assert_withdraw(sdp, !error2);
446 struct gfs2_sbd *sdp = GFS2_SB(inode);
457 gfs2_ail1_flush(sdp, wbc);
489 struct gfs2_sbd *sdp = GFS2_SB(inode);
502 if (unlikely(gfs2_withdrawn(sdp)))
507 fs_err(sdp, "dirty_inode: glock %d\n", ret);
516 ret = gfs2_trans_begin(sdp, RES_DINODE, 0);
518 fs_err(sdp, "dirty_inode: gfs2_trans_begin %d\n", ret);
532 gfs2_trans_end(sdp);
540 * @sdp: the filesystem
545 void gfs2_make_fs_ro(struct gfs2_sbd *sdp)
547 int log_write_allowed = test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags);
549 if (!test_bit(SDF_KILL, &sdp->sd_flags))
550 gfs2_flush_delete_work(sdp);
552 gfs2_destroy_threads(sdp);
555 gfs2_quota_sync(sdp->sd_vfs, 0);
556 gfs2_statfs_sync(sdp->sd_vfs, 0);
566 gfs2_log_flush(sdp, NULL, GFS2_LFC_MAKE_FS_RO);
567 gfs2_log_flush(sdp, NULL, GFS2_LOG_HEAD_FLUSH_SHUTDOWN |
569 wait_event_timeout(sdp->sd_log_waitq,
570 gfs2_log_is_empty(sdp),
572 gfs2_assert_warn(sdp, gfs2_log_is_empty(sdp));
574 gfs2_quota_cleanup(sdp);
585 struct gfs2_sbd *sdp = sb->s_fs_info;
589 set_bit(SDF_NORECOVERY, &sdp->sd_flags);
594 spin_lock(&sdp->sd_jindex_spin);
595 list_for_each_entry(jd, &sdp->sd_jindex_list, jd_list) {
598 spin_unlock(&sdp->sd_jindex_spin);
603 spin_unlock(&sdp->sd_jindex_spin);
606 gfs2_make_fs_ro(sdp);
608 if (gfs2_withdrawn(sdp))
609 gfs2_destroy_threads(sdp);
611 gfs2_quota_cleanup(sdp);
614 WARN_ON(gfs2_withdrawing(sdp));
620 gfs2_freeze_unlock(&sdp->sd_freeze_gh);
622 iput(sdp->sd_jindex);
623 iput(sdp->sd_statfs_inode);
624 iput(sdp->sd_rindex);
625 iput(sdp->sd_quota_inode);
627 gfs2_glock_put(sdp->sd_rename_gl);
628 gfs2_glock_put(sdp->sd_freeze_gl);
630 if (!sdp->sd_args.ar_spectator) {
631 if (gfs2_holder_initialized(&sdp->sd_journal_gh))
632 gfs2_glock_dq_uninit(&sdp->sd_journal_gh);
633 if (gfs2_holder_initialized(&sdp->sd_jinode_gh))
634 gfs2_glock_dq_uninit(&sdp->sd_jinode_gh);
635 brelse(sdp->sd_sc_bh);
636 gfs2_glock_dq_uninit(&sdp->sd_sc_gh);
637 gfs2_glock_dq_uninit(&sdp->sd_qc_gh);
638 free_local_statfs_inodes(sdp);
639 iput(sdp->sd_qc_inode);
642 gfs2_glock_dq_uninit(&sdp->sd_live_gh);
643 gfs2_clear_rgrpd(sdp);
644 gfs2_jindex_free(sdp);
646 gfs2_gl_hash_clear(sdp);
647 truncate_inode_pages_final(&sdp->sd_aspace);
648 gfs2_delete_debugfs_file(sdp);
650 gfs2_lm_unmount(sdp);
653 gfs2_sys_fs_del(sdp);
654 free_sbd(sdp);
667 struct gfs2_sbd *sdp = sb->s_fs_info;
671 gfs2_log_flush(sdp, NULL, GFS2_LOG_HEAD_FLUSH_NORMAL |
673 return sdp->sd_log_error;
676 static int gfs2_freeze_locally(struct gfs2_sbd *sdp)
678 struct super_block *sb = sdp->sd_vfs;
685 if (test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags)) {
686 gfs2_log_flush(sdp, NULL, GFS2_LOG_HEAD_FLUSH_FREEZE |
688 if (gfs2_withdrawn(sdp)) {
698 static int gfs2_do_thaw(struct gfs2_sbd *sdp)
700 struct super_block *sb = sdp->sd_vfs;
703 error = gfs2_freeze_lock_shared(sdp);
711 fs_info(sdp, "GFS2: couldn't thaw filesystem: %d\n", error);
712 gfs2_assert_withdraw(sdp, 0);
718 struct gfs2_sbd *sdp = container_of(work, struct gfs2_sbd, sd_freeze_work);
719 struct super_block *sb = sdp->sd_vfs;
722 mutex_lock(&sdp->sd_freeze_mutex);
724 if (test_bit(SDF_FROZEN, &sdp->sd_flags))
727 error = gfs2_freeze_locally(sdp);
731 gfs2_freeze_unlock(&sdp->sd_freeze_gh);
732 set_bit(SDF_FROZEN, &sdp->sd_flags);
734 error = gfs2_do_thaw(sdp);
738 clear_bit(SDF_FROZEN, &sdp->sd_flags);
742 fs_info(sdp, "GFS2: couldn't freeze filesystem: %d\n", error);
745 mutex_unlock(&sdp->sd_freeze_mutex);
757 struct gfs2_sbd *sdp = sb->s_fs_info;
760 if (!mutex_trylock(&sdp->sd_freeze_mutex))
763 if (test_bit(SDF_FROZEN, &sdp->sd_flags))
767 error = gfs2_freeze_locally(sdp);
769 fs_info(sdp, "GFS2: couldn't freeze filesystem: %d\n",
774 error = gfs2_lock_fs_check_clean(sdp);
778 error = gfs2_do_thaw(sdp);
783 fs_err(sdp, "waiting for recovery before freeze\n");
785 fs_err(sdp, "Fatal IO error: cannot freeze gfs2 due "
789 fs_err(sdp, "error freezing FS: %d\n", error);
791 fs_err(sdp, "retrying...\n");
797 set_bit(SDF_FREEZE_INITIATOR, &sdp->sd_flags);
798 set_bit(SDF_FROZEN, &sdp->sd_flags);
800 mutex_unlock(&sdp->sd_freeze_mutex);
812 struct gfs2_sbd *sdp = sb->s_fs_info;
815 if (!mutex_trylock(&sdp->sd_freeze_mutex))
818 if (!test_bit(SDF_FREEZE_INITIATOR, &sdp->sd_flags))
821 gfs2_freeze_unlock(&sdp->sd_freeze_gh);
823 error = gfs2_do_thaw(sdp);
826 clear_bit(SDF_FREEZE_INITIATOR, &sdp->sd_flags);
827 clear_bit(SDF_FROZEN, &sdp->sd_flags);
830 mutex_unlock(&sdp->sd_freeze_mutex);
836 struct gfs2_sbd *sdp = sb->s_fs_info;
838 mutex_lock(&sdp->sd_freeze_mutex);
839 if (!test_bit(SDF_FREEZE_INITIATOR, &sdp->sd_flags))
842 gfs2_freeze_unlock(&sdp->sd_freeze_gh);
845 mutex_unlock(&sdp->sd_freeze_mutex);
868 * @sdp: the filesystem
879 static int gfs2_statfs_slow(struct gfs2_sbd *sdp, struct gfs2_statfs_change_host *sc)
895 rgd_next = gfs2_rgrpd_get_first(sdp);
946 * @sdp: the filesystem
952 static int gfs2_statfs_i(struct gfs2_sbd *sdp, struct gfs2_statfs_change_host *sc)
954 struct gfs2_statfs_change_host *m_sc = &sdp->sd_statfs_master;
955 struct gfs2_statfs_change_host *l_sc = &sdp->sd_statfs_local;
957 spin_lock(&sdp->sd_statfs_spin);
964 spin_unlock(&sdp->sd_statfs_spin);
987 struct gfs2_sbd *sdp = sb->s_fs_info;
991 error = gfs2_rindex_update(sdp);
995 if (gfs2_tune_get(sdp, gt_statfs_slow))
996 error = gfs2_statfs_slow(sdp, &sc);
998 error = gfs2_statfs_i(sdp, &sc);
1004 buf->f_bsize = sdp->sd_sb.sb_bsize;
1033 struct gfs2_sbd *sdp = GFS2_SB(inode);
1061 if (test_bit(SDF_EVICTING, &sdp->sd_flags))
1087 struct gfs2_sbd *sdp = root->d_sb->s_fs_info;
1088 struct gfs2_args *args = &sdp->sd_args;
1091 spin_lock(&sdp->sd_tune.gt_spin);
1092 logd_secs = sdp->sd_tune.gt_logd_secs;
1093 quota_quantum = sdp->sd_tune.gt_quota_quantum;
1094 statfs_quantum = sdp->sd_tune.gt_statfs_quantum;
1095 statfs_slow = sdp->sd_tune.gt_statfs_slow;
1096 spin_unlock(&sdp->sd_tune.gt_spin);
1098 if (is_ancestor(root, sdp->sd_master_dir))
1180 if (test_bit(SDF_NOBARRIERS, &sdp->sd_flags))
1182 if (test_bit(SDF_DEMOTE, &sdp->sd_flags))
1213 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode);
1223 gfs2_rindex_update(sdp);
1229 rgd = gfs2_blk2rgrpd(sdp, ip->i_no_addr, 1);
1241 error = gfs2_trans_begin(sdp, RES_RG_BIT + RES_STATFS + RES_QUOTA,
1242 sdp->sd_jdesc->jd_blocks);
1250 gfs2_trans_end(sdp);
1278 struct gfs2_sbd *sdp = GFS2_SB(inode);
1321 timeout = wait_event_interruptible_timeout(sdp->sd_async_glock_wait,
1347 struct gfs2_sbd *sdp = sb->s_fs_info;
1371 ret = gfs2_check_blk_type(sdp, ip->i_no_addr, GFS2_BLKST_UNLINKED);
1451 struct gfs2_sbd *sdp = sb->s_fs_info;
1456 gfs2_log_flush(sdp, ip->i_gl, GFS2_LOG_HEAD_FLUSH_NORMAL |
1466 ret = gfs2_trans_begin(sdp, 0, sdp->sd_jdesc->jd_blocks);
1473 gfs2_trans_end(sdp);
1501 struct gfs2_sbd *sdp = sb->s_fs_info;
1514 if (!sdp->sd_jdesc)
1532 fs_warn(sdp, "gfs2_evict_inode: %d\n", ret);
1536 gfs2_assert_warn(sdp, ip->i_qadata->qa_ref == 0);
1581 extern void free_local_statfs_inodes(struct gfs2_sbd *sdp)
1586 list_for_each_entry_safe(lsi, safe, &sdp->sd_sc_inodes_list, si_list) {
1587 if (lsi->si_jid == sdp->sd_jdesc->jd_jid)
1588 sdp->sd_sc_inode = NULL; /* belongs to this node */
1596 extern struct inode *find_local_statfs_inode(struct gfs2_sbd *sdp,
1602 * sdp->sd_sc_inodes_list corresponding to the 'index'. */
1603 list_for_each_entry(lsi, &sdp->sd_sc_inodes_list, si_list) {