• Home
  • Raw
  • Download

Lines Matching full:sdp

38 void gfs2_assert_i(struct gfs2_sbd *sdp)  in gfs2_assert_i()  argument
40 fs_emerg(sdp, "fatal assertion failed\n"); in gfs2_assert_i()
45 * @sdp: The GFS2 superblock
50 int check_journal_clean(struct gfs2_sbd *sdp, struct gfs2_jdesc *jd, in check_journal_clean() argument
63 fs_err(sdp, "Error %d locking journal for spectator " in check_journal_clean()
70 fs_err(sdp, "Error checking journal for spectator " in check_journal_clean()
77 fs_err(sdp, "Error parsing journal for spectator " in check_journal_clean()
84 fs_err(sdp, "jid=%u: Journal is dirty, so the first " in check_journal_clean()
96 * @sdp: the superblock
100 int gfs2_freeze_lock(struct gfs2_sbd *sdp, struct gfs2_holder *freeze_gh, in gfs2_freeze_lock() argument
106 error = gfs2_glock_nq_init(sdp->sd_freeze_gl, LM_ST_SHARED, flags, in gfs2_freeze_lock()
109 fs_err(sdp, "can't lock the freeze lock: %d\n", error); in gfs2_freeze_lock()
119 static void signal_our_withdraw(struct gfs2_sbd *sdp) in signal_our_withdraw() argument
121 struct gfs2_glock *live_gl = sdp->sd_live_gh.gh_gl; in signal_our_withdraw()
126 int log_write_allowed = test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags); in signal_our_withdraw()
130 if (test_bit(SDF_NORECOVERY, &sdp->sd_flags) || !sdp->sd_jdesc) in signal_our_withdraw()
133 inode = sdp->sd_jdesc->jd_inode; in signal_our_withdraw()
139 set_bit(SDF_WITHDRAW_RECOVERY, &sdp->sd_flags); in signal_our_withdraw()
151 clear_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags); in signal_our_withdraw()
152 if (!sb_rdonly(sdp->sd_vfs)) { in signal_our_withdraw()
156 if (sdp->sd_freeze_gl && in signal_our_withdraw()
157 !gfs2_glock_is_locked_by_me(sdp->sd_freeze_gl)) { in signal_our_withdraw()
158 ret = gfs2_freeze_lock(sdp, &freeze_gh, in signal_our_withdraw()
164 ret = gfs2_make_fs_ro(sdp); in signal_our_withdraw()
168 if (sdp->sd_lockstruct.ls_ops->lm_lock == NULL) { /* lock_nolock */ in signal_our_withdraw()
171 clear_bit(SDF_WITHDRAW_RECOVERY, &sdp->sd_flags); in signal_our_withdraw()
177 if (gfs2_holder_initialized(&sdp->sd_journal_gh)) { in signal_our_withdraw()
178 gfs2_glock_dq_wait(&sdp->sd_journal_gh); in signal_our_withdraw()
179 gfs2_holder_uninit(&sdp->sd_journal_gh); in signal_our_withdraw()
181 sdp->sd_jinode_gh.gh_flags |= GL_NOCACHE; in signal_our_withdraw()
182 gfs2_glock_dq(&sdp->sd_jinode_gh); in signal_our_withdraw()
183 if (test_bit(SDF_FS_FROZEN, &sdp->sd_flags)) { in signal_our_withdraw()
186 atomic_set(&sdp->sd_freeze_state, SFS_FROZEN); in signal_our_withdraw()
187 thaw_super(sdp->sd_vfs); in signal_our_withdraw()
196 gfs2_holder_uninit(&sdp->sd_jinode_gh); in signal_our_withdraw()
219 gfs2_glock_dq_wait(&sdp->sd_live_gh); in signal_our_withdraw()
225 fs_warn(sdp, "Requesting recovery of jid %d.\n", in signal_our_withdraw()
226 sdp->sd_lockstruct.ls_jid); in signal_our_withdraw()
228 &sdp->sd_live_gh); in signal_our_withdraw()
233 ret = gfs2_glock_nq(&sdp->sd_live_gh); in signal_our_withdraw()
246 fs_warn(sdp, "No other mounters found. Trying to recover our " in signal_our_withdraw()
247 "own journal jid %d.\n", sdp->sd_lockstruct.ls_jid); in signal_our_withdraw()
248 if (gfs2_recover_journal(sdp->sd_jdesc, 1)) in signal_our_withdraw()
249 fs_warn(sdp, "Unable to recover our journal jid %d.\n", in signal_our_withdraw()
250 sdp->sd_lockstruct.ls_jid); in signal_our_withdraw()
251 gfs2_glock_dq_wait(&sdp->sd_live_gh); in signal_our_withdraw()
253 &sdp->sd_live_gh); in signal_our_withdraw()
254 gfs2_glock_nq(&sdp->sd_live_gh); in signal_our_withdraw()
258 clear_bit(SDF_WITHDRAW_RECOVERY, &sdp->sd_flags); in signal_our_withdraw()
270 inode = gfs2_inode_lookup(sdp->sd_vfs, DT_UNKNOWN, in signal_our_withdraw()
271 sdp->sd_jdesc->jd_no_addr, no_formal_ino, in signal_our_withdraw()
274 fs_warn(sdp, "Reprocessing of jid %d failed with %ld.\n", in signal_our_withdraw()
275 sdp->sd_lockstruct.ls_jid, PTR_ERR(inode)); in signal_our_withdraw()
278 sdp->sd_jdesc->jd_inode = inode; in signal_our_withdraw()
284 ret = check_journal_clean(sdp, sdp->sd_jdesc, false); in signal_our_withdraw()
288 fs_warn(sdp, "Waiting for journal recovery jid %d.\n", in signal_our_withdraw()
289 sdp->sd_lockstruct.ls_jid); in signal_our_withdraw()
293 fs_warn(sdp, "Journal recovery complete for jid %d.\n", in signal_our_withdraw()
294 sdp->sd_lockstruct.ls_jid); in signal_our_withdraw()
296 fs_warn(sdp, "Journal recovery skipped for %d until next " in signal_our_withdraw()
297 "mount.\n", sdp->sd_lockstruct.ls_jid); in signal_our_withdraw()
298 fs_warn(sdp, "Glock dequeues delayed: %lu\n", sdp->sd_glock_dqs_held); in signal_our_withdraw()
299 sdp->sd_glock_dqs_held = 0; in signal_our_withdraw()
300 wake_up_bit(&sdp->sd_flags, SDF_WITHDRAW_RECOVERY); in signal_our_withdraw()
303 void gfs2_lm(struct gfs2_sbd *sdp, const char *fmt, ...) in gfs2_lm() argument
308 if (sdp->sd_args.ar_errors == GFS2_ERRORS_WITHDRAW && in gfs2_lm()
309 test_bit(SDF_WITHDRAWN, &sdp->sd_flags)) in gfs2_lm()
315 fs_err(sdp, "%pV", &vaf); in gfs2_lm()
319 int gfs2_withdraw(struct gfs2_sbd *sdp) in gfs2_withdraw() argument
321 struct lm_lockstruct *ls = &sdp->sd_lockstruct; in gfs2_withdraw()
324 if (sdp->sd_args.ar_errors == GFS2_ERRORS_WITHDRAW && in gfs2_withdraw()
325 test_and_set_bit(SDF_WITHDRAWN, &sdp->sd_flags)) { in gfs2_withdraw()
326 if (!test_bit(SDF_WITHDRAW_IN_PROG, &sdp->sd_flags)) in gfs2_withdraw()
329 wait_on_bit(&sdp->sd_flags, SDF_WITHDRAW_IN_PROG, in gfs2_withdraw()
334 set_bit(SDF_WITHDRAW_IN_PROG, &sdp->sd_flags); in gfs2_withdraw()
336 if (sdp->sd_args.ar_errors == GFS2_ERRORS_WITHDRAW) { in gfs2_withdraw()
337 fs_err(sdp, "about to withdraw this file system\n"); in gfs2_withdraw()
338 BUG_ON(sdp->sd_args.ar_debug); in gfs2_withdraw()
340 signal_our_withdraw(sdp); in gfs2_withdraw()
342 kobject_uevent(&sdp->sd_kobj, KOBJ_OFFLINE); in gfs2_withdraw()
344 if (!strcmp(sdp->sd_lockstruct.ls_ops->lm_proto_name, "lock_dlm")) in gfs2_withdraw()
345 wait_for_completion(&sdp->sd_wdack); in gfs2_withdraw()
348 fs_err(sdp, "telling LM to unmount\n"); in gfs2_withdraw()
349 lm->lm_unmount(sdp); in gfs2_withdraw()
351 set_bit(SDF_SKIP_DLM_UNLOCK, &sdp->sd_flags); in gfs2_withdraw()
352 fs_err(sdp, "File system withdrawn\n"); in gfs2_withdraw()
354 clear_bit(SDF_WITHDRAW_IN_PROG, &sdp->sd_flags); in gfs2_withdraw()
356 wake_up_bit(&sdp->sd_flags, SDF_WITHDRAW_IN_PROG); in gfs2_withdraw()
359 if (sdp->sd_args.ar_errors == GFS2_ERRORS_PANIC) in gfs2_withdraw()
360 panic("GFS2: fsid=%s: panic requested\n", sdp->sd_fsname); in gfs2_withdraw()
369 void gfs2_assert_withdraw_i(struct gfs2_sbd *sdp, char *assertion, in gfs2_assert_withdraw_i() argument
373 if (gfs2_withdrawn(sdp)) in gfs2_assert_withdraw_i()
376 fs_err(sdp, in gfs2_assert_withdraw_i()
385 if (sdp->sd_args.ar_errors == GFS2_ERRORS_PANIC) in gfs2_assert_withdraw_i()
389 gfs2_withdraw_delayed(sdp); in gfs2_assert_withdraw_i()
391 gfs2_withdraw(sdp); in gfs2_assert_withdraw_i()
399 void gfs2_assert_warn_i(struct gfs2_sbd *sdp, char *assertion, in gfs2_assert_warn_i() argument
403 sdp->sd_last_warning + in gfs2_assert_warn_i()
404 gfs2_tune_get(sdp, gt_complain_secs) * HZ)) in gfs2_assert_warn_i()
407 if (sdp->sd_args.ar_errors == GFS2_ERRORS_WITHDRAW) in gfs2_assert_warn_i()
408 fs_warn(sdp, "warning: assertion \"%s\" failed at function = %s, file = %s, line = %u\n", in gfs2_assert_warn_i()
411 if (sdp->sd_args.ar_debug) in gfs2_assert_warn_i()
416 if (sdp->sd_args.ar_errors == GFS2_ERRORS_PANIC) in gfs2_assert_warn_i()
419 sdp->sd_fsname, assertion, in gfs2_assert_warn_i()
420 sdp->sd_fsname, function, file, line); in gfs2_assert_warn_i()
422 sdp->sd_last_warning = jiffies; in gfs2_assert_warn_i()
429 void gfs2_consist_i(struct gfs2_sbd *sdp, const char *function, in gfs2_consist_i() argument
432 gfs2_lm(sdp, in gfs2_consist_i()
435 gfs2_withdraw(sdp); in gfs2_consist_i()
445 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); in gfs2_consist_inode_i() local
447 gfs2_lm(sdp, in gfs2_consist_inode_i()
454 gfs2_withdraw(sdp); in gfs2_consist_inode_i()
464 struct gfs2_sbd *sdp = rgd->rd_sbd; in gfs2_consist_rgrpd_i() local
465 char fs_id_buf[sizeof(sdp->sd_fsname) + 7]; in gfs2_consist_rgrpd_i()
467 sprintf(fs_id_buf, "fsid=%s: ", sdp->sd_fsname); in gfs2_consist_rgrpd_i()
469 gfs2_lm(sdp, in gfs2_consist_rgrpd_i()
475 gfs2_withdraw(sdp); in gfs2_consist_rgrpd_i()
484 int gfs2_meta_check_ii(struct gfs2_sbd *sdp, struct buffer_head *bh, in gfs2_meta_check_ii() argument
490 gfs2_lm(sdp, in gfs2_meta_check_ii()
496 me = gfs2_withdraw(sdp); in gfs2_meta_check_ii()
506 int gfs2_metatype_check_ii(struct gfs2_sbd *sdp, struct buffer_head *bh, in gfs2_metatype_check_ii() argument
512 gfs2_lm(sdp, in gfs2_metatype_check_ii()
518 me = gfs2_withdraw(sdp); in gfs2_metatype_check_ii()
528 int gfs2_io_error_i(struct gfs2_sbd *sdp, const char *function, char *file, in gfs2_io_error_i() argument
531 gfs2_lm(sdp, in gfs2_io_error_i()
535 return gfs2_withdraw(sdp); in gfs2_io_error_i()
543 void gfs2_io_error_bh_i(struct gfs2_sbd *sdp, struct buffer_head *bh, in gfs2_io_error_bh_i() argument
547 if (gfs2_withdrawn(sdp)) in gfs2_io_error_bh_i()
550 fs_err(sdp, "fatal: I/O error\n" in gfs2_io_error_bh_i()
555 gfs2_withdraw(sdp); in gfs2_io_error_bh_i()