lkml.org 
[lkml]   [2003]   [Jul]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 2.5.74-mm2] nbd: make nbd and block layer agree about device and block sizes
Paul Clements wrote:
> case NBD_SET_BLKSIZE:
> - if ((arg & (arg-1)) || (arg < 512) || (arg > PAGE_SIZE))
> - return -EINVAL;
> lo->blksize = arg;
> - lo->bytesize &= ~(lo->blksize-1);
> + lo->bytesize &= ~(lo->blksize-1);
> + inode->i_bdev->bd_inode->i_size = lo->bytesize;
> + set_blocksize(inode->i_bdev, lo->blksize);
> set_capacity(lo->disk, lo->bytesize >> 9);
> return 0;
> case NBD_SET_SIZE:
> - lo->bytesize = arg & ~(lo->blksize-1);
> + lo->bytesize = arg & ~(lo->blksize-1);
> + inode->i_bdev->bd_inode->i_size = lo->bytesize;
> + set_blocksize(inode->i_bdev, lo->blksize);
> set_capacity(lo->disk, lo->bytesize >> 9);
> return 0;
> case NBD_SET_SIZE_BLOCKS:
> lo->bytesize = ((u64) arg) * lo->blksize;
> + inode->i_bdev->bd_inode->i_size = lo->bytesize;
> + set_blocksize(inode->i_bdev, lo->blksize);
> set_capacity(lo->disk, lo->bytesize >> 9);
> return 0;
> case NBD_DO_IT:


Thanks. You forgot to check set_blocksize's return value for errors,
though.

Also, I wonder if you found a bug/oversight in set_blocksize -- it sets
bd_inode->i_blkbits but not bd_inode->i_size. I think it should set
i_size also. Maybe Andrew or Al can confirm/refute this assertion.

Jeff



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:46    [W:0.088 / U:0.316 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site