diff options
author | Steven Whitehouse <swhiteho@redhat.com> | 2006-05-05 16:59:11 -0400 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2006-05-05 16:59:11 -0400 |
commit | fd88de569b802c4a04aaa6ee74667775f4aed8c6 (patch) | |
tree | 1766c45303798bf289059afc8f117cf8bc784086 /fs/gfs2/quota.c | |
parent | 5bb76af1e089ac186c15c6aa792340d22b63d4b4 (diff) |
[GFS2] Readpages support
This adds readpages support (and also corrects a small bug in
the readpage error path at the same time). Hopefully this will
improve performance by allowing GFS to submit larger lumps of
I/O at a time.
In order to simplify the setting of BH_Boundary, it currently gets
set when we hit the end of a indirect pointer block. There is
always a boundary at this point with the current allocation code.
It doesn't get all the boundaries right though, so there is still
room for improvement in this.
See comments in fs/gfs2/ops_address.c for further information about
readpages with GFS2.
Signed-off-by: Steven Whitehouse
Diffstat (limited to 'fs/gfs2/quota.c')
-rw-r--r-- | fs/gfs2/quota.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/gfs2/quota.c b/fs/gfs2/quota.c index 942c4c8b9f56..d49ff43b3a86 100644 --- a/fs/gfs2/quota.c +++ b/fs/gfs2/quota.c | |||
@@ -255,6 +255,7 @@ static int bh_get(struct gfs2_quota_data *qd) | |||
255 | int new = 0; | 255 | int new = 0; |
256 | struct buffer_head *bh; | 256 | struct buffer_head *bh; |
257 | int error; | 257 | int error; |
258 | int boundary; | ||
258 | 259 | ||
259 | mutex_lock(&sdp->sd_quota_mutex); | 260 | mutex_lock(&sdp->sd_quota_mutex); |
260 | 261 | ||
@@ -266,7 +267,7 @@ static int bh_get(struct gfs2_quota_data *qd) | |||
266 | block = qd->qd_slot / sdp->sd_qc_per_block; | 267 | block = qd->qd_slot / sdp->sd_qc_per_block; |
267 | offset = qd->qd_slot % sdp->sd_qc_per_block;; | 268 | offset = qd->qd_slot % sdp->sd_qc_per_block;; |
268 | 269 | ||
269 | error = gfs2_block_map(ip, block, &new, &dblock, NULL); | 270 | error = gfs2_block_map(ip->i_vnode, block, &new, &dblock, &boundary); |
270 | if (error) | 271 | if (error) |
271 | goto fail; | 272 | goto fail; |
272 | error = gfs2_meta_read(ip->i_gl, dblock, DIO_START | DIO_WAIT, &bh); | 273 | error = gfs2_meta_read(ip->i_gl, dblock, DIO_START | DIO_WAIT, &bh); |
@@ -1162,7 +1163,7 @@ int gfs2_quota_init(struct gfs2_sbd *sdp) | |||
1162 | 1163 | ||
1163 | if (!extlen) { | 1164 | if (!extlen) { |
1164 | int new = 0; | 1165 | int new = 0; |
1165 | error = gfs2_block_map(ip, x, &new, &dblock, &extlen); | 1166 | error = gfs2_extent_map(ip->i_vnode, x, &new, &dblock, &extlen); |
1166 | if (error) | 1167 | if (error) |
1167 | goto fail; | 1168 | goto fail; |
1168 | } | 1169 | } |