On 04/20/2010 09:36 AM, Wengang Wang wrote:
> Hi experts,
>
> Do we support using a file as log device?
> If no, it's strange that we support running xfs on a file but don't support
> log
> file.
> If yes, it fails at mount.
>
> [root@desk test-xfsprogs]# mkfs.xfs
> -llogdev=/root/test-xfsprogs/test-xfsprogs-tmp/imagefile,size=32768b
> /dev/sda10 -f
> meta-data=/dev/sda10 isize=256 agcount=4, agsize=1250558
> blks
> = sectsz=512 attr=2
> data = bsize=4096 blocks=5002231, imaxpct=25
> = sunit=0 swidth=0 blks
> naming =version 2 bsize=4096 ascii-ci=0
> log =/root/test-xfsprogs/test-xfsprogs-tmp/imagefile bsize=4096
> blocks=32768, version=2
> = sectsz=512 sunit=0 blks, lazy-count=0
> realtime =none extsz=4096 blocks=0, rtextents=0
> [root@desk test-xfsprogs]# mount
> -ologdev=/root/test-xfsprogs/test-xfsprogs-tmp/imagefile /dev/sda10 /xfs
> mount: the kernel does not recognize /dev/sda10 as a block device
> (maybe `insmod driver'?)
Well, -o logdev=$BLAH sets up m_logname with that value in the mount
point, and xfs_open_devices() then tries:
if (mp->m_logname) {
error = xfs_blkdev_get(mp, mp->m_logname, &logdev);
which eventually does
open_bdev_exclusive(name, FMODE_READ|FMODE_WRITE, mp);
/**
* open_bdev_exclusive - open a block device by name and set it up for use
*
* @path: special file representing the block device
* @mode: FMODE_... combination to pass be used
* @holder: owner for exclusion
*
* Open the blockdevice described by the special file at @path, claim it
* for the @holder.
*/
... this is all in kernelspace, which has no notion of what
/root/test-xfsprogs/test-xfsprogs-tmp/imagefile might be. You'll need
to use a devicename that open_bdev_exclusive() can understand (like
/dev/loop0, as suggested)
-Eric
|