On Tue, Jul 05, 2005 at 11:08:15AM -0500, Andy wrote:
> I'd like to do an online resize of and XFS filesystem on a non-partitioned
> device.  But, I always have to reboot to do so.
> 
> Say I have a sdc with 16777216 blocks and expand it on the SAN
> to have 17825792 blocks, and rescan the device.
> 
> The xfs_growfs does not see the size, nor does blockdev --getsz /dev/sdc,
> however, the I know the rescan worked because /sys/block/sdc/size now is
> 17825792 instead of 16777216.
> 

I've wondered why this is so too occasionally.  AFAICT, we are
doing everything correctly from the filesystem point of view,
we are just not being told of the larger device size when we
query it.  So, it was interesting to hear that sysfs reports
the correct size..

>From a quick look through the code - it seems sysfs reports the
value from the struct genhd ->capacity field (get_capacity and
set_capacity from <linux/genhd.h>).  Whereas the other block
device interfaces are looking at the struct block_device bd_inode
->i_size field.  So, it kinda looks like a coherency issue
between those two beasts - someone more familiar with the block
layer may be able to suggest a fix (Christoph/Jens/Al/...).

> Is there some reason for this?  Is there a fix for it?  I'm not using any
> volume management stuff yet but would like to be able to grow our
> filesystems without having to reboot to do so.

I'm not aware of a fix, and the last time I looked using a volume
manager doesn't resolve this issue either.

cheers.

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

Reply via email to