[Cluster-devel] [bug report] gfs2: Force withdraw to replay journals and wait for it to finish

Bob Peterson rpeterso at redhat.com
Thu Feb 27 13:57:27 UTC 2020


----- Original Message -----
> 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

Hi,

Thanks. I fixed it.

Bob Peterson




More information about the Cluster-devel mailing list