Skip to content

Commit 160bc95

Browse files
author
Andreas Gruenbacher
committed
gfs2: Allow immediate GLF_VERIFY_DELETE work
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 <[email protected]>
1 parent 1072b3a commit 160bc95

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

fs/gfs2/glock.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1012,14 +1012,15 @@ bool gfs2_queue_try_to_evict(struct gfs2_glock *gl)
10121012
&gl->gl_delete, 0);
10131013
}
10141014

1015-
static bool gfs2_queue_verify_delete(struct gfs2_glock *gl)
1015+
static bool gfs2_queue_verify_delete(struct gfs2_glock *gl, bool later)
10161016
{
10171017
struct gfs2_sbd *sdp = gl->gl_name.ln_sbd;
1018+
unsigned long delay;
10181019

10191020
if (test_and_set_bit(GLF_VERIFY_DELETE, &gl->gl_flags))
10201021
return false;
1021-
return queue_delayed_work(sdp->sd_delete_wq,
1022-
&gl->gl_delete, 5 * HZ);
1022+
delay = later ? 5 * HZ : 0;
1023+
return queue_delayed_work(sdp->sd_delete_wq, &gl->gl_delete, delay);
10231024
}
10241025

10251026
static void delete_work_func(struct work_struct *work)
@@ -1051,7 +1052,7 @@ static void delete_work_func(struct work_struct *work)
10511052
if (gfs2_try_evict(gl)) {
10521053
if (test_bit(SDF_KILL, &sdp->sd_flags))
10531054
goto out;
1054-
if (gfs2_queue_verify_delete(gl))
1055+
if (gfs2_queue_verify_delete(gl, true))
10551056
return;
10561057
}
10571058
goto out;
@@ -1063,7 +1064,7 @@ static void delete_work_func(struct work_struct *work)
10631064
if (IS_ERR(inode)) {
10641065
if (PTR_ERR(inode) == -EAGAIN &&
10651066
!test_bit(SDF_KILL, &sdp->sd_flags) &&
1066-
gfs2_queue_verify_delete(gl))
1067+
gfs2_queue_verify_delete(gl, true))
10671068
return;
10681069
} else {
10691070
d_prune_aliases(inode);

0 commit comments

Comments
 (0)