GFS2: If we use up our block reservation, request more next time

If we run out of blocks for a given multi-block allocation, we obviously
did not reserve enough. We should reserve more blocks for the next
reservation to reduce fragmentation. This patch increases the size hint
for reservations when they run out.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
This commit is contained in:
Bob Peterson 2014-10-29 08:02:30 -05:00 committed by Steven Whitehouse
parent 33ad5d5428
commit 1a8550332a
2 changed files with 4 additions and 0 deletions

View File

@ -2251,6 +2251,9 @@ static void gfs2_adjust_reservation(struct gfs2_inode *ip,
trace_gfs2_rs(rs, TRACE_RS_CLAIM); trace_gfs2_rs(rs, TRACE_RS_CLAIM);
if (rs->rs_free && !ret) if (rs->rs_free && !ret)
goto out; goto out;
/* We used up our block reservation, so we should
reserve more blocks next time. */
atomic_add(RGRP_RSRV_ADDBLKS, &rs->rs_sizehint);
} }
__rs_deltree(rs); __rs_deltree(rs);
} }

View File

@ -20,6 +20,7 @@
*/ */
#define RGRP_RSRV_MINBYTES 8 #define RGRP_RSRV_MINBYTES 8
#define RGRP_RSRV_MINBLKS ((u32)(RGRP_RSRV_MINBYTES * GFS2_NBBY)) #define RGRP_RSRV_MINBLKS ((u32)(RGRP_RSRV_MINBYTES * GFS2_NBBY))
#define RGRP_RSRV_ADDBLKS 64
struct gfs2_rgrpd; struct gfs2_rgrpd;
struct gfs2_sbd; struct gfs2_sbd;