xfs: reduce bmv_count in xfs_vn_fiemap
authorEric Sandeen <sandeen@sandeen.net>
Mon, 27 Jul 2009 02:52:01 +0000 (21:52 -0500)
committerFelix Blyakher <felixb@sgi.com>
Mon, 27 Jul 2009 04:21:39 +0000 (23:21 -0500)
commit5c04c78afba4805846519f29f0b55ac8759e0d48
tree21809071214d1c6cc7e1ff6f9cfc9aa36b3c1c99
parentb56063453881a6d94cf5718c6769de6e35e67753
xfs: reduce bmv_count in xfs_vn_fiemap

commit 6321e3ed2acf3ee9643cdd403e1c88605d7944ba caused
the full bmv_count's worth of getbmapx structures to get
allocated; telling it to do MAXEXTNUM was a bit insane,
resulting in ENOMEM every time.

Chop it down to something reasonable, the number of slots
in the caller's input buffer.  If this is too large the
caller may get ENOMEM but the reason should not be a
mystery, and they can try again with something smaller.

We add 1 to the value because in the normal getbmap
world, bmv_count includes the header and xfs_getbmap does:

        nex = bmv->bmv_count - 1;
        if (nex <= 0)
                return XFS_ERROR(EINVAL);

Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
Reviewed-by: Olaf Weber <olaf@sgi.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Felix Blyakher <felixb@sgi.com>
fs/xfs/linux-2.6/xfs_iops.c