diff options
author | Andreas Gruenbacher <agruenba@redhat.com> | 2019-08-30 13:31:01 -0400 |
---|---|---|
committer | Andreas Gruenbacher <agruenba@redhat.com> | 2019-09-04 14:22:17 -0400 |
commit | 01123cf17cfa7c8c30109bdcf2f913f1e63ff97b (patch) | |
tree | cde3112b7095e96e01bb5509b995038e534f3fd9 | |
parent | bc74aaefdd538bb2756d74518c177378e6bd589f (diff) |
gfs2: create function gfs2_glock_update_hold_time
This patch moves the code that updates glock minimum hold
time to a separate function. This will be called by a future
patch.
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Bob Peterson <rpeterso@redhat.com>
-rw-r--r-- | fs/gfs2/glock.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c index a27dbd3dec01..661350989e98 100644 --- a/fs/gfs2/glock.c +++ b/fs/gfs2/glock.c | |||
@@ -931,6 +931,17 @@ void gfs2_holder_uninit(struct gfs2_holder *gh) | |||
931 | gh->gh_ip = 0; | 931 | gh->gh_ip = 0; |
932 | } | 932 | } |
933 | 933 | ||
934 | static void gfs2_glock_update_hold_time(struct gfs2_glock *gl, | ||
935 | unsigned long start_time) | ||
936 | { | ||
937 | /* Have we waited longer that a second? */ | ||
938 | if (time_after(jiffies, start_time + HZ)) { | ||
939 | /* Lengthen the minimum hold time. */ | ||
940 | gl->gl_hold_time = min(gl->gl_hold_time + GL_GLOCK_HOLD_INCR, | ||
941 | GL_GLOCK_MAX_HOLD); | ||
942 | } | ||
943 | } | ||
944 | |||
934 | /** | 945 | /** |
935 | * gfs2_glock_wait - wait on a glock acquisition | 946 | * gfs2_glock_wait - wait on a glock acquisition |
936 | * @gh: the glock holder | 947 | * @gh: the glock holder |
@@ -940,15 +951,11 @@ void gfs2_holder_uninit(struct gfs2_holder *gh) | |||
940 | 951 | ||
941 | int gfs2_glock_wait(struct gfs2_holder *gh) | 952 | int gfs2_glock_wait(struct gfs2_holder *gh) |
942 | { | 953 | { |
943 | unsigned long time1 = jiffies; | 954 | unsigned long start_time = jiffies; |
944 | 955 | ||
945 | might_sleep(); | 956 | might_sleep(); |
946 | wait_on_bit(&gh->gh_iflags, HIF_WAIT, TASK_UNINTERRUPTIBLE); | 957 | wait_on_bit(&gh->gh_iflags, HIF_WAIT, TASK_UNINTERRUPTIBLE); |
947 | if (time_after(jiffies, time1 + HZ)) /* have we waited > a second? */ | 958 | gfs2_glock_update_hold_time(gh->gh_gl, start_time); |
948 | /* Lengthen the minimum hold time. */ | ||
949 | gh->gh_gl->gl_hold_time = min(gh->gh_gl->gl_hold_time + | ||
950 | GL_GLOCK_HOLD_INCR, | ||
951 | GL_GLOCK_MAX_HOLD); | ||
952 | return gh->gh_error; | 959 | return gh->gh_error; |
953 | } | 960 | } |
954 | 961 | ||