summaryrefslogtreecommitdiff
path: root/fs/xfs/xfs_sync.c
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2012-06-06 02:32:26 +0400
committerBen Myers <bpm@sgi.com>2012-06-21 23:20:36 +0400
commit59c84ed0ddc11f1823b4a33ace4fbcc948261bb2 (patch)
tree32d64523ae5c46b4959876a3d6b498adb6452dbc /fs/xfs/xfs_sync.c
parent76d095388b040229ea1aad7dea45be0cfa20f589 (diff)
downloadlinux-59c84ed0ddc11f1823b4a33ace4fbcc948261bb2.tar.xz
xfs: Fix overallocation in xfs_buf_allocate_memory()
Commit de1cbee which removed b_file_offset in favor of b_bn introduced a bug causing xfs_buf_allocate_memory() to overestimate the number of necessary pages. The problem is that xfs_buf_alloc() sets b_bn to -1 and thus effectively every buffer is straddling a page boundary which causes xfs_buf_allocate_memory() to allocate two pages and use vmalloc() for access which is unnecessary. Dave says xfs_buf_alloc() doesn't need to set b_bn to -1 anymore since the buffer is inserted into the cache only after being fully initialized now. So just make xfs_buf_alloc() fill in proper block number from the beginning. CC: David Chinner <dchinner@redhat.com> Signed-off-by: Jan Kara <jack@suse.cz> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Ben Myers <bpm@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_sync.c')
0 files changed, 0 insertions, 0 deletions