The xfs_fsr insufficient check should consider the blocks used not the
file length. Without this change it is not possible to reorganize
sparse files when file size exceeds the free space.
Signed-off-by: Chris Wedgwood <cw@xxxxxxxx>
--- fsr/xfs_fsr.c.orig 2009-01-02 01:51:03.049181411 -0800
+++ fsr/xfs_fsr.c 2009-01-02 01:53:56.297180891 -0800
@@ -912,9 +912,9 @@
}
bsize = vfss.f_frsize ? vfss.f_frsize : vfss.f_bsize;
- if (statp->bs_size > ((vfss.f_bfree * bsize) - minimumfree)) {
+ if ((statp->bs_blksize * statp->bs_blocks) > ((vfss.f_bfree * bsize) -
minimumfree)) {
fsrprintf(_("insufficient freespace for: %s: "
- "size=%lld: ignoring\n"), fname, statp->bs_size);
+ "size=%lld: ignoring\n"), fname, statp->bs_blksize *
statp->bs_blocks);
return 1;
}
|