gfs2: Rename gfs2_withdrawn to gfs2_withdrawing_or_withdrawn
[ Upstream commit 4d927b03a68846e4e791ccde6b4c274df02f11e9 ] This function checks whether the filesystem has been been marked to be withdrawn eventually or has been withdrawn already. Rename this function to avoid confusing code like checking for gfs2_withdrawing() when gfs2_withdrawn() has already returned true. Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com> Stable-dep-of: 9947a06d29c0 ("gfs2: do_xmote fixes") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
7c2bc932b6
commit
d6b412c510
@ -464,7 +464,7 @@ static int gfs2_read_folio(struct file *file, struct folio *folio)
|
||||
error = mpage_read_folio(folio, gfs2_block_map);
|
||||
}
|
||||
|
||||
if (gfs2_withdrawn(sdp))
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp))
|
||||
return -EIO;
|
||||
|
||||
return error;
|
||||
|
@ -1436,7 +1436,7 @@ static int gfs2_lock(struct file *file, int cmd, struct file_lock *fl)
|
||||
|
||||
if (!(fl->fl_flags & FL_POSIX))
|
||||
return -ENOLCK;
|
||||
if (gfs2_withdrawn(sdp)) {
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp)) {
|
||||
if (fl->fl_type == F_UNLCK)
|
||||
locks_lock_file_wait(file, fl);
|
||||
return -EIO;
|
||||
|
@ -156,7 +156,7 @@ static bool glock_blocked_by_withdraw(struct gfs2_glock *gl)
|
||||
{
|
||||
struct gfs2_sbd *sdp = gl->gl_name.ln_sbd;
|
||||
|
||||
if (!gfs2_withdrawn(sdp))
|
||||
if (!gfs2_withdrawing_or_withdrawn(sdp))
|
||||
return false;
|
||||
if (gl->gl_ops->go_flags & GLOF_NONDISK)
|
||||
return false;
|
||||
@ -304,7 +304,7 @@ static void __gfs2_glock_put(struct gfs2_glock *gl)
|
||||
GLOCK_BUG_ON(gl, !list_empty(&gl->gl_holders));
|
||||
if (mapping) {
|
||||
truncate_inode_pages_final(mapping);
|
||||
if (!gfs2_withdrawn(sdp))
|
||||
if (!gfs2_withdrawing_or_withdrawn(sdp))
|
||||
GLOCK_BUG_ON(gl, !mapping_empty(mapping));
|
||||
}
|
||||
trace_gfs2_glock_put(gl);
|
||||
@ -783,7 +783,7 @@ skip_inval:
|
||||
* gfs2_gl_hash_clear calls clear_glock) and recovery is complete
|
||||
* then it's okay to tell dlm to unlock it.
|
||||
*/
|
||||
if (unlikely(sdp->sd_log_error) && !gfs2_withdrawn(sdp))
|
||||
if (unlikely(sdp->sd_log_error) && !gfs2_withdrawing_or_withdrawn(sdp))
|
||||
gfs2_withdraw_delayed(sdp);
|
||||
if (glock_blocked_by_withdraw(gl) &&
|
||||
(target != LM_ST_UNLOCKED ||
|
||||
@ -822,7 +822,7 @@ skip_inval:
|
||||
gfs2_glock_queue_work(gl, 0);
|
||||
} else if (ret) {
|
||||
fs_err(sdp, "lm_lock ret %d\n", ret);
|
||||
GLOCK_BUG_ON(gl, !gfs2_withdrawn(sdp));
|
||||
GLOCK_BUG_ON(gl, !gfs2_withdrawing_or_withdrawn(sdp));
|
||||
}
|
||||
} else { /* lock_nolock */
|
||||
finish_xmote(gl, target);
|
||||
|
@ -177,7 +177,7 @@ static int gfs2_rgrp_metasync(struct gfs2_glock *gl)
|
||||
|
||||
filemap_fdatawrite_range(metamapping, start, end);
|
||||
error = filemap_fdatawait_range(metamapping, start, end);
|
||||
WARN_ON_ONCE(error && !gfs2_withdrawn(sdp));
|
||||
WARN_ON_ONCE(error && !gfs2_withdrawing_or_withdrawn(sdp));
|
||||
mapping_set_error(metamapping, error);
|
||||
if (error)
|
||||
gfs2_io_error(sdp);
|
||||
|
@ -1134,7 +1134,7 @@ static void gdlm_recover_prep(void *arg)
|
||||
struct gfs2_sbd *sdp = arg;
|
||||
struct lm_lockstruct *ls = &sdp->sd_lockstruct;
|
||||
|
||||
if (gfs2_withdrawn(sdp)) {
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp)) {
|
||||
fs_err(sdp, "recover_prep ignored due to withdraw.\n");
|
||||
return;
|
||||
}
|
||||
@ -1160,7 +1160,7 @@ static void gdlm_recover_slot(void *arg, struct dlm_slot *slot)
|
||||
struct lm_lockstruct *ls = &sdp->sd_lockstruct;
|
||||
int jid = slot->slot - 1;
|
||||
|
||||
if (gfs2_withdrawn(sdp)) {
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp)) {
|
||||
fs_err(sdp, "recover_slot jid %d ignored due to withdraw.\n",
|
||||
jid);
|
||||
return;
|
||||
@ -1189,7 +1189,7 @@ static void gdlm_recover_done(void *arg, struct dlm_slot *slots, int num_slots,
|
||||
struct gfs2_sbd *sdp = arg;
|
||||
struct lm_lockstruct *ls = &sdp->sd_lockstruct;
|
||||
|
||||
if (gfs2_withdrawn(sdp)) {
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp)) {
|
||||
fs_err(sdp, "recover_done ignored due to withdraw.\n");
|
||||
return;
|
||||
}
|
||||
@ -1220,7 +1220,7 @@ static void gdlm_recovery_result(struct gfs2_sbd *sdp, unsigned int jid,
|
||||
{
|
||||
struct lm_lockstruct *ls = &sdp->sd_lockstruct;
|
||||
|
||||
if (gfs2_withdrawn(sdp)) {
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp)) {
|
||||
fs_err(sdp, "recovery_result jid %d ignored due to withdraw.\n",
|
||||
jid);
|
||||
return;
|
||||
|
@ -126,7 +126,7 @@ __acquires(&sdp->sd_ail_lock)
|
||||
}
|
||||
}
|
||||
|
||||
if (gfs2_withdrawn(sdp)) {
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp)) {
|
||||
gfs2_remove_from_ail(bd);
|
||||
continue;
|
||||
}
|
||||
@ -841,7 +841,7 @@ void gfs2_write_log_header(struct gfs2_sbd *sdp, struct gfs2_jdesc *jd,
|
||||
struct super_block *sb = sdp->sd_vfs;
|
||||
u64 dblock;
|
||||
|
||||
if (gfs2_withdrawn(sdp))
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp))
|
||||
return;
|
||||
|
||||
page = mempool_alloc(gfs2_page_pool, GFP_NOIO);
|
||||
@ -1047,7 +1047,8 @@ repeat:
|
||||
* Do this check while holding the log_flush_lock to prevent new
|
||||
* buffers from being added to the ail via gfs2_pin()
|
||||
*/
|
||||
if (gfs2_withdrawn(sdp) || !test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags))
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp) ||
|
||||
!test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags))
|
||||
goto out;
|
||||
|
||||
/* Log might have been flushed while we waited for the flush lock */
|
||||
@ -1096,13 +1097,13 @@ repeat:
|
||||
goto out_withdraw;
|
||||
|
||||
gfs2_ordered_write(sdp);
|
||||
if (gfs2_withdrawn(sdp))
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp))
|
||||
goto out_withdraw;
|
||||
lops_before_commit(sdp, tr);
|
||||
if (gfs2_withdrawn(sdp))
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp))
|
||||
goto out_withdraw;
|
||||
gfs2_log_submit_bio(&sdp->sd_jdesc->jd_log_bio, REQ_OP_WRITE);
|
||||
if (gfs2_withdrawn(sdp))
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp))
|
||||
goto out_withdraw;
|
||||
|
||||
if (sdp->sd_log_head != sdp->sd_log_flush_head) {
|
||||
@ -1110,7 +1111,7 @@ repeat:
|
||||
} else if (sdp->sd_log_tail != sdp->sd_log_flush_tail && !sdp->sd_log_idle) {
|
||||
log_write_header(sdp, flags);
|
||||
}
|
||||
if (gfs2_withdrawn(sdp))
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp))
|
||||
goto out_withdraw;
|
||||
lops_after_commit(sdp, tr);
|
||||
|
||||
@ -1128,7 +1129,7 @@ repeat:
|
||||
if (!(flags & GFS2_LOG_HEAD_FLUSH_NORMAL)) {
|
||||
if (!sdp->sd_log_idle) {
|
||||
empty_ail1_list(sdp);
|
||||
if (gfs2_withdrawn(sdp))
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp))
|
||||
goto out_withdraw;
|
||||
log_write_header(sdp, flags);
|
||||
}
|
||||
@ -1298,7 +1299,7 @@ int gfs2_logd(void *data)
|
||||
unsigned long t = 1;
|
||||
|
||||
while (!kthread_should_stop()) {
|
||||
if (gfs2_withdrawn(sdp))
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp))
|
||||
break;
|
||||
|
||||
/* Check for errors writing to the journal */
|
||||
@ -1337,7 +1338,7 @@ int gfs2_logd(void *data)
|
||||
gfs2_ail_flush_reqd(sdp) ||
|
||||
gfs2_jrnl_flush_reqd(sdp) ||
|
||||
sdp->sd_log_error ||
|
||||
gfs2_withdrawn(sdp) ||
|
||||
gfs2_withdrawing_or_withdrawn(sdp) ||
|
||||
kthread_should_stop(),
|
||||
t);
|
||||
}
|
||||
|
@ -257,7 +257,8 @@ int gfs2_meta_read(struct gfs2_glock *gl, u64 blkno, int flags,
|
||||
struct buffer_head *bh, *bhs[2];
|
||||
int num = 0;
|
||||
|
||||
if (gfs2_withdrawn(sdp) && !gfs2_withdraw_in_prog(sdp)) {
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp) &&
|
||||
!gfs2_withdraw_in_prog(sdp)) {
|
||||
*bhp = NULL;
|
||||
return -EIO;
|
||||
}
|
||||
@ -315,7 +316,8 @@ int gfs2_meta_read(struct gfs2_glock *gl, u64 blkno, int flags,
|
||||
|
||||
int gfs2_meta_wait(struct gfs2_sbd *sdp, struct buffer_head *bh)
|
||||
{
|
||||
if (gfs2_withdrawn(sdp) && !gfs2_withdraw_in_prog(sdp))
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp) &&
|
||||
!gfs2_withdraw_in_prog(sdp))
|
||||
return -EIO;
|
||||
|
||||
wait_on_buffer(bh);
|
||||
@ -326,7 +328,8 @@ int gfs2_meta_wait(struct gfs2_sbd *sdp, struct buffer_head *bh)
|
||||
gfs2_io_error_bh_wd(sdp, bh);
|
||||
return -EIO;
|
||||
}
|
||||
if (gfs2_withdrawn(sdp) && !gfs2_withdraw_in_prog(sdp))
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp) &&
|
||||
!gfs2_withdraw_in_prog(sdp))
|
||||
return -EIO;
|
||||
|
||||
return 0;
|
||||
|
@ -1075,7 +1075,7 @@ hostdata_error:
|
||||
void gfs2_lm_unmount(struct gfs2_sbd *sdp)
|
||||
{
|
||||
const struct lm_lockops *lm = sdp->sd_lockstruct.ls_ops;
|
||||
if (!gfs2_withdrawn(sdp) && lm->lm_unmount)
|
||||
if (!gfs2_withdrawing_or_withdrawn(sdp) && lm->lm_unmount)
|
||||
lm->lm_unmount(sdp);
|
||||
}
|
||||
|
||||
|
@ -128,7 +128,7 @@ static void gfs2_qd_dispose(struct gfs2_quota_data *qd)
|
||||
hlist_bl_del_rcu(&qd->qd_hlist);
|
||||
spin_unlock_bucket(qd->qd_hash);
|
||||
|
||||
if (!gfs2_withdrawn(sdp)) {
|
||||
if (!gfs2_withdrawing_or_withdrawn(sdp)) {
|
||||
gfs2_assert_warn(sdp, !qd->qd_change);
|
||||
gfs2_assert_warn(sdp, !qd->qd_slot_ref);
|
||||
gfs2_assert_warn(sdp, !qd->qd_bh_count);
|
||||
@ -1528,7 +1528,7 @@ static void quotad_error(struct gfs2_sbd *sdp, const char *msg, int error)
|
||||
{
|
||||
if (error == 0 || error == -EROFS)
|
||||
return;
|
||||
if (!gfs2_withdrawn(sdp)) {
|
||||
if (!gfs2_withdrawing_or_withdrawn(sdp)) {
|
||||
if (!cmpxchg(&sdp->sd_log_error, 0, error))
|
||||
fs_err(sdp, "gfs2_quotad: %s error %d\n", msg, error);
|
||||
wake_up(&sdp->sd_logd_waitq);
|
||||
@ -1572,7 +1572,7 @@ int gfs2_quotad(void *data)
|
||||
unsigned long t = 0;
|
||||
|
||||
while (!kthread_should_stop()) {
|
||||
if (gfs2_withdrawn(sdp))
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp))
|
||||
break;
|
||||
|
||||
/* Update the master statfs file */
|
||||
@ -1596,7 +1596,7 @@ int gfs2_quotad(void *data)
|
||||
|
||||
t = wait_event_interruptible_timeout(sdp->sd_quota_wait,
|
||||
sdp->sd_statfs_force_sync ||
|
||||
gfs2_withdrawn(sdp) ||
|
||||
gfs2_withdrawing_or_withdrawn(sdp) ||
|
||||
kthread_should_stop(),
|
||||
t);
|
||||
|
||||
|
@ -411,7 +411,7 @@ void gfs2_recover_func(struct work_struct *work)
|
||||
int error = 0;
|
||||
int jlocked = 0;
|
||||
|
||||
if (gfs2_withdrawn(sdp)) {
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp)) {
|
||||
fs_err(sdp, "jid=%u: Recovery not attempted due to withdraw.\n",
|
||||
jd->jd_jid);
|
||||
goto fail;
|
||||
|
@ -134,7 +134,7 @@ int gfs2_make_fs_rw(struct gfs2_sbd *sdp)
|
||||
int error;
|
||||
|
||||
j_gl->gl_ops->go_inval(j_gl, DIO_METADATA);
|
||||
if (gfs2_withdrawn(sdp))
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp))
|
||||
return -EIO;
|
||||
|
||||
error = gfs2_find_jhead(sdp->sd_jdesc, &head, false);
|
||||
@ -153,7 +153,7 @@ int gfs2_make_fs_rw(struct gfs2_sbd *sdp)
|
||||
gfs2_log_pointers_init(sdp, head.lh_blkno);
|
||||
|
||||
error = gfs2_quota_init(sdp);
|
||||
if (!error && gfs2_withdrawn(sdp))
|
||||
if (!error && gfs2_withdrawing_or_withdrawn(sdp))
|
||||
error = -EIO;
|
||||
if (!error)
|
||||
set_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags);
|
||||
@ -499,7 +499,7 @@ static void gfs2_dirty_inode(struct inode *inode, int flags)
|
||||
return;
|
||||
}
|
||||
|
||||
if (gfs2_withdrawn(sdp))
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp))
|
||||
return;
|
||||
if (!gfs2_glock_is_locked_by_me(ip->i_gl)) {
|
||||
ret = gfs2_glock_nq_init(ip->i_gl, LM_ST_EXCLUSIVE, 0, &gh);
|
||||
@ -605,7 +605,7 @@ restart:
|
||||
if (!sb_rdonly(sb))
|
||||
gfs2_make_fs_ro(sdp);
|
||||
else {
|
||||
if (gfs2_withdrawn(sdp))
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp))
|
||||
gfs2_destroy_threads(sdp);
|
||||
|
||||
gfs2_quota_cleanup(sdp);
|
||||
@ -682,7 +682,7 @@ static int gfs2_freeze_locally(struct gfs2_sbd *sdp)
|
||||
if (test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags)) {
|
||||
gfs2_log_flush(sdp, NULL, GFS2_LOG_HEAD_FLUSH_FREEZE |
|
||||
GFS2_LFC_FREEZE_GO_SYNC);
|
||||
if (gfs2_withdrawn(sdp)) {
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp)) {
|
||||
error = thaw_super(sb, FREEZE_HOLDER_USERSPACE);
|
||||
if (error)
|
||||
return error;
|
||||
|
@ -193,7 +193,7 @@ static ssize_t freeze_store(struct gfs2_sbd *sdp, const char *buf, size_t len)
|
||||
|
||||
static ssize_t withdraw_show(struct gfs2_sbd *sdp, char *buf)
|
||||
{
|
||||
unsigned int b = gfs2_withdrawn(sdp);
|
||||
unsigned int b = gfs2_withdrawing_or_withdrawn(sdp);
|
||||
return snprintf(buf, PAGE_SIZE, "%u\n", b);
|
||||
}
|
||||
|
||||
|
@ -268,7 +268,7 @@ void gfs2_trans_add_meta(struct gfs2_glock *gl, struct buffer_head *bh)
|
||||
(unsigned long long)bd->bd_bh->b_blocknr);
|
||||
BUG();
|
||||
}
|
||||
if (gfs2_withdrawn(sdp)) {
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp)) {
|
||||
fs_info(sdp, "GFS2:adding buf while withdrawn! 0x%llx\n",
|
||||
(unsigned long long)bd->bd_bh->b_blocknr);
|
||||
goto out_unlock;
|
||||
|
@ -371,7 +371,7 @@ void gfs2_assert_withdraw_i(struct gfs2_sbd *sdp, char *assertion,
|
||||
const char *function, char *file, unsigned int line,
|
||||
bool delayed)
|
||||
{
|
||||
if (gfs2_withdrawn(sdp))
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp))
|
||||
return;
|
||||
|
||||
fs_err(sdp,
|
||||
@ -547,7 +547,7 @@ void gfs2_io_error_bh_i(struct gfs2_sbd *sdp, struct buffer_head *bh,
|
||||
const char *function, char *file, unsigned int line,
|
||||
bool withdraw)
|
||||
{
|
||||
if (gfs2_withdrawn(sdp))
|
||||
if (gfs2_withdrawing_or_withdrawn(sdp))
|
||||
return;
|
||||
|
||||
fs_err(sdp, "fatal: I/O error\n"
|
||||
|
@ -198,10 +198,11 @@ static inline void gfs2_withdraw_delayed(struct gfs2_sbd *sdp)
|
||||
}
|
||||
|
||||
/**
|
||||
* gfs2_withdrawn - test whether the file system is withdrawing or withdrawn
|
||||
* gfs2_withdrawing_or_withdrawn - test whether the file system is withdrawing
|
||||
* or withdrawn
|
||||
* @sdp: the superblock
|
||||
*/
|
||||
static inline bool gfs2_withdrawn(struct gfs2_sbd *sdp)
|
||||
static inline bool gfs2_withdrawing_or_withdrawn(struct gfs2_sbd *sdp)
|
||||
{
|
||||
return unlikely(test_bit(SDF_WITHDRAWN, &sdp->sd_flags) ||
|
||||
test_bit(SDF_WITHDRAWING, &sdp->sd_flags));
|
||||
|
Loading…
x
Reference in New Issue
Block a user