[Cluster-devel] [bug report] gfs2: Force withdraw to replay journals and wait for it to finish
Dan Carpenter
dan.carpenter at oracle.com
Thu Feb 27 05:38:42 UTC 2020
Hello Bob Peterson,
This is a semi-automatic email about new static checker warnings.
The patch f4e8da521747: "gfs2: Force withdraw to replay journals and
wait for it to finish" from Jan 28, 2020, leads to the following
Smatch complaint:
fs/gfs2/util.c:135 signal_our_withdraw()
error: we previously assumed 'sdp->sd_vfs' could be null (see line 119)
fs/gfs2/util.c
118 clear_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags);
119 if (sdp->sd_vfs && !sb_rdonly(sdp->sd_vfs))
^^^^^^^^^^^
Patch adds check
120 ret = gfs2_make_fs_ro(sdp);
121
122 /*
123 * Drop the glock for our journal so another node can recover it.
124 */
125 if (gfs2_holder_initialized(&sdp->sd_journal_gh)) {
126 gfs2_glock_dq_wait(&sdp->sd_journal_gh);
127 gfs2_holder_uninit(&sdp->sd_journal_gh);
128 }
129 sdp->sd_jinode_gh.gh_flags |= GL_NOCACHE;
130 gfs2_glock_dq(&sdp->sd_jinode_gh);
131 if (test_bit(SDF_FS_FROZEN, &sdp->sd_flags)) {
132 /* Make sure gfs2_unfreeze works if partially-frozen */
133 flush_workqueue(gfs2_freeze_wq);
134 atomic_set(&sdp->sd_freeze_state, SFS_FROZEN);
135 thaw_super(sdp->sd_vfs);
^^^^^^^^^^^^^^^^^^^^^^^
And unchecked dereference as well inside the thaw_super() function.
136 } else {
137 wait_on_bit(&gl->gl_flags, GLF_DEMOTE, TASK_UNINTERRUPTIBLE);
regards,
dan carpenter
More information about the Cluster-devel
mailing list