gfs2: Allow immediate GLF_VERIFY_DELETE work
BugLink: https://bugs.launchpad.net/bugs/2101915 [ Upstream commit 160bc9555d8654464cbbd7bb1f6687048471d2f6 ] Add an argument to gfs2_queue_verify_delete() that allows it to queue GLF_VERIFY_DELETE work for immediate execution. This is used in the next patch. Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com> Stable-dep-of: 7c6f714d8847 ("gfs2: Fix unlinked inode cleanup") Signed-off-by: Sasha Levin <sashal@kernel.org> Signed-off-by: Koichiro Den <koichiro.den@canonical.com> Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
This commit is contained in:
committed by
Stefan Bader
parent
a0ece58321
commit
9d5c231013
+6
-5
@@ -1045,14 +1045,15 @@ bool gfs2_queue_try_to_evict(struct gfs2_glock *gl)
|
||||
&gl->gl_delete, 0);
|
||||
}
|
||||
|
||||
static bool gfs2_queue_verify_delete(struct gfs2_glock *gl)
|
||||
static bool gfs2_queue_verify_delete(struct gfs2_glock *gl, bool later)
|
||||
{
|
||||
struct gfs2_sbd *sdp = gl->gl_name.ln_sbd;
|
||||
unsigned long delay;
|
||||
|
||||
if (test_and_set_bit(GLF_VERIFY_DELETE, &gl->gl_flags))
|
||||
return false;
|
||||
return queue_delayed_work(sdp->sd_delete_wq,
|
||||
&gl->gl_delete, 5 * HZ);
|
||||
delay = later ? 5 * HZ : 0;
|
||||
return queue_delayed_work(sdp->sd_delete_wq, &gl->gl_delete, delay);
|
||||
}
|
||||
|
||||
static void delete_work_func(struct work_struct *work)
|
||||
@@ -1084,7 +1085,7 @@ static void delete_work_func(struct work_struct *work)
|
||||
if (gfs2_try_evict(gl)) {
|
||||
if (test_bit(SDF_KILL, &sdp->sd_flags))
|
||||
goto out;
|
||||
if (gfs2_queue_verify_delete(gl))
|
||||
if (gfs2_queue_verify_delete(gl, true))
|
||||
return;
|
||||
}
|
||||
goto out;
|
||||
@@ -1096,7 +1097,7 @@ static void delete_work_func(struct work_struct *work)
|
||||
if (IS_ERR(inode)) {
|
||||
if (PTR_ERR(inode) == -EAGAIN &&
|
||||
!test_bit(SDF_KILL, &sdp->sd_flags) &&
|
||||
gfs2_queue_verify_delete(gl))
|
||||
gfs2_queue_verify_delete(gl, true))
|
||||
return;
|
||||
} else {
|
||||
d_prune_aliases(inode);
|
||||
|
||||
Reference in New Issue
Block a user