xfs
[Top] [All Lists]

Re: do we support using a file as logdev?

To: Wengang Wang <wen.gang.wang@xxxxxxxxxx>
Subject: Re: do we support using a file as logdev?
From: Eric Sandeen <sandeen@xxxxxxxxxxx>
Date: Tue, 20 Apr 2010 12:01:04 -0500
Cc: xfs@xxxxxxxxxxx, greg.marsden@xxxxxxxxxx, joe.jin@xxxxxxxxxx
In-reply-to: <20100420143656.GA3634@xxxxxxxxxxxxxxxxx>
References: <20100420143656.GA3634@xxxxxxxxxxxxxxxxx>
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.8) Gecko/20100301 Fedora/3.0.3-1.fc11 Lightning/1.0b2pre Thunderbird/3.0.3
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

<Prev in Thread] Current Thread [Next in Thread>