Re: 2.6.24-rc2-mm1 -- mkfs failing on variety of fs types

Dmitry Monakhov
2007-11-14T10:49:17Z

On 02:28 Wed 14 Nov , Andrew Morton wrote:
> On Wed, 14 Nov 2007 08:56:01 +0000 Andy Whitcroft <apw@shadowen.org> wrote:
>
[snip]
> > We seem to have some general problem with mkfs for all filesystems.
> > UUID: e9aa2dc4-dfc3-47e8-865b-693f28eac2e5
> > Initializing journal - 0%....20%....40%....60%....80%....100%
> > bwrite: write 4096 bytes returned -1 (block=360448, dev=3): No space left on device
>
> It was mm-fix-blkdev-size-calculation-in-generic_write_checks.patch.
Oh my ..., I'm truly sorry. When i've sent this patch to Andrew first time
he ask me to remake it in order to make it less intrusive. When later
i've found what patch was buggy because of incorrect int to loff_t conversion
isize = i_size_read(inode) & ~(blksize - 1);
^^^^^^^^^^^^^^
Later i've missed when this patch was accepted some days ago :(.
>
> Odd, I thought that looked OK.
>
>
> Here's a revert (uploaded to hot-fixes/, too):
>
> --- a/mm/filemap.c~revert-mm-fix-blkdev-size-calculation-in-generic_write_checks
> +++ a/mm/filemap.c
> @@ -1855,11 +1855,9 @@ inline int generic_write_checks(struct f
> } else {
> #ifdef CONFIG_BLOCK
> loff_t isize;
> - unsigned int blksize;
> if (bdev_read_only(I_BDEV(inode)))
> return -EPERM;
> - blksize = block_size(I_BDEV(inode));
> - isize = i_size_read(inode) & ~(blksize - 1);
> + isize = i_size_read(inode);
> if (*pos >= isize) {
> if (*count || *pos > isize)
> return -ENOSPC;
> _
>