xfs
[Top] [All Lists]

Re: How to feel the real time feature of XFS from userspace

To: xfs@xxxxxxxxxxx
Subject: Re: How to feel the real time feature of XFS from userspace
From: Martin Steigerwald <Martin@xxxxxxxxxxxx>
Date: Sat, 09 Nov 2013 13:04:54 +0100
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <527DEB69.8050502@xxxxxxxxxx>
References: <CAD+1EGPf=ddMP4vdDxkkWnJH2q9fCSa5uTT-eRAxYLAEtPrLwg@xxxxxxxxxxxxxx> <527DEB69.8050502@xxxxxxxxxx>
User-agent: KMail/4.11.2 (Linux/3.12.0-rc7-tp520; KDE/4.11.3; x86_64; ; )
Am Samstag, 9. November 2013, 15:59:37 schrieb Jeff Liu:
> On 11/09/2013 01:23 PM, harryxiyou wrote:
> > Hi all,
> > 
> > I have format block device with XFS as follows.
> > 
> > root@node2:~# mkfs.xfs -f -r rtdev=/dev/sda3 /dev/sda4
> > 
> > meta-data=/dev/sda4              isize=256    agcount=4, agsize=56122440
> > blks> 
> >          =                       sectsz=512   attr=2, projid32bit=0
> > 
> > data     =                       bsize=4096   blocks=224489757, imaxpct=25
> > 
> >          =                       sunit=0      swidth=0 blks
> > 
> > naming   =version 2              bsize=4096   ascii-ci=0
> > 
> > log      =internal log           bsize=4096   blocks=109614, version=2
> > 
> >          =                       sectsz=512   sunit=0 blks, lazy-count=1
> > 
> > realtime =/dev/sda3              extsz=4096   blocks=14865657,
> > rtextents=14865657
> > 
> > 
> > And I also write user-space codes as follows.
> > 
> > root@node2:~/test# cat xfs.c
> > #include <stdio.h>
> > #include <unistd.h>
> > #include <sys/types.h>
> > #include <sys/stat.h>
> > #include <fcntl.h>
> > #include <xfs/xfs.h>
> > #include <xfs/xfs_fs.h>
> > 
> > int main(int argc, char **argv) {
> > int fd;
> > int xfs_ret = 0;
> > 
> > fd = open("./1", O_RDWR);
> > if (fd < 0) {
> > fprintf(stderr, "open error!\n");
> > return -1;
> > }
> > xfs_ret = xfsctl("./1", fd, XFS_IOC_FSGETXATTR, NULL);
> > 
> > return 0;
> > }
> > 
> > 
> > Now, I am wondering how to feel the real time feature of XFS from
> > userspace? Could anyone please give me some suggestions? Thanks in
> > advance.
> 
> Mount your realtime device at first:
> mount -o rtdev=/dev/sda3 /dev/sda4 /mount_point
> 
> Then you need to mark the attribute bit set with XFS_XFLAG_REALTIME via
> xfsctl(3) after file creation before writing any data to the file, hence
> your demo code would looks like:
> 
> struct fsxattr        attr;
> 
> attr.fsx_xflags |= XFS_XFLAG_REALTIME;
> xfs_ret = xfsctl(target_file_path, fd, XFS_IOC_FSSETXATTR, &attr);
> ...
> 
> I would suggest you take a look at the source of xfs_rctp(8) at xfsprogs to
> get more info.
> 
> BTW, I remember Dave once mentioned that the realtime feature on Linux is
> not widely tested and not recommended for production use.

Well, this sounds scary, except from xfs_rtcp(8):

CAVEATS
       Currently,  realtime  partitions  are not supported
       under the Linux version of XFS, and use of a  realâ
       time  partition  WILL  CAUSE CORRUPTION on the data
       partition. As such, this command is made  available
       for curious DEVELOPERS ONLY at this point in time.

Especially the corruption part of it.

Whats the current state? Would be interested to know it due to the Linux 
Performance Analysis & Tuning courses I hold.

Ciao,
-- 
Martin 'Helios' Steigerwald - http://www.Lichtvoll.de
GPG: 03B0 0D6C 0040 0710 4AFA  B82F 991B EAAC A599 84C7

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