aboutsummaryrefslogtreecommitdiffstats
path: root/fs/gfs2/unlinked.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/gfs2/unlinked.c')
-rw-r--r--fs/gfs2/unlinked.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/fs/gfs2/unlinked.c b/fs/gfs2/unlinked.c
index 0d2314a5252c..2824b1665f95 100644
--- a/fs/gfs2/unlinked.c
+++ b/fs/gfs2/unlinked.c
@@ -130,11 +130,12 @@ static void enforce_limit(struct gfs2_sbd *sdp)
130 unsigned int tries = 0, min = 0; 130 unsigned int tries = 0, min = 0;
131 int error; 131 int error;
132 132
133 if (atomic_read(&sdp->sd_unlinked_count) >= 133 if (atomic_read(&sdp->sd_unlinked_count) <
134 gfs2_tune_get(sdp, gt_ilimit)) { 134 gfs2_tune_get(sdp, gt_ilimit))
135 tries = gfs2_tune_get(sdp, gt_ilimit_tries); 135 return;
136 min = gfs2_tune_get(sdp, gt_ilimit_min); 136
137 } 137 tries = gfs2_tune_get(sdp, gt_ilimit_tries);
138 min = gfs2_tune_get(sdp, gt_ilimit_min);
138 139
139 while (tries--) { 140 while (tries--) {
140 struct gfs2_unlinked *ul = ul_fish(sdp); 141 struct gfs2_unlinked *ul = ul_fish(sdp);
@@ -187,7 +188,7 @@ int gfs2_unlinked_get(struct gfs2_sbd *sdp, struct gfs2_unlinked **ul)
187 188
188 goto fail; 189 goto fail;
189 190
190 found: 191found:
191 for (b = 0; b < 8; b++) 192 for (b = 0; b < 8; b++)
192 if (!(byte & (1 << b))) 193 if (!(byte & (1 << b)))
193 break; 194 break;
@@ -202,7 +203,7 @@ int gfs2_unlinked_get(struct gfs2_sbd *sdp, struct gfs2_unlinked **ul)
202 203
203 return 0; 204 return 0;
204 205
205 fail: 206fail:
206 spin_unlock(&sdp->sd_unlinked_spin); 207 spin_unlock(&sdp->sd_unlinked_spin);
207 kfree(*ul); 208 kfree(*ul);
208 return -ENOSPC; 209 return -ENOSPC;
@@ -410,7 +411,7 @@ int gfs2_unlinked_init(struct gfs2_sbd *sdp)
410 411
411 return 0; 412 return 0;
412 413
413 fail: 414fail:
414 gfs2_unlinked_cleanup(sdp); 415 gfs2_unlinked_cleanup(sdp);
415 return error; 416 return error;
416} 417}