[Top] [All Lists]

Re: [PATCH] xfs_io: deprecate the "-F" foreign flag

To: Eric Sandeen <sandeen@xxxxxxxxxx>
Subject: Re: [PATCH] xfs_io: deprecate the "-F" foreign flag
From: Mark Tinguely <tinguely@xxxxxxx>
Date: Thu, 08 Mar 2012 15:39:52 -0600
Cc: xfs-oss <xfs@xxxxxxxxxxx>, Christoph Hellwig <hch@xxxxxxxxxxxxx>
In-reply-to: <4F2AC948.1050909@xxxxxxxxxx>
References: <4F2AC948.1050909@xxxxxxxxxx>
User-agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0
On 02/02/12 11:35, Eric Sandeen wrote:
There's no real reason to force the user to specify "-F" for non-xfs
files, when we can just test for that after it's opened.

* Remove the -F flag from usage()&  man pages, but still accept it.
* Set IO_FOREIGN when we open the file, if the fd tests as non-xfs.

Signed-off-by: Eric Sandeen<sandeen@xxxxxxxxxx>

diff --git a/io/open.c b/io/open.c
index f1a6501..97631e2 100644
--- a/io/open.c
+++ b/io/open.c
@@ -163,17 +163,9 @@ openfile(

-       if (!geom)
+       if (!platform_test_xfs_fd(fd))
                return fd;

-       if (!platform_test_xfs_fd(fd)) {
-               fprintf(stderr, _("%s: specified file "
-                       "[\"%s\"] is not on an XFS filesystem\n"),
-                       progname, path);
-               close(fd);
-               return -1;
-       }
        if (xfsctl(path, fd, XFS_IOC_FSGEOMETRY, geom)<  0) {
@@ -282,10 +274,10 @@ open_f(
                return 0;

-       while ((c = getopt(argc, argv, "FRacdfm:nrstx")) != EOF) {
+       while ((c = getopt(argc, argv, "Racdfm:nrstx")) != EOF) {
                switch (c) {
                case 'F':
-                       flags |= IO_FOREIGN;
+                       /* Ignored / deprecated now, handled automatically */

The "-F" is still in the command line open's help in open.

cxfs_io> help open
open [-acdrstx] [path] -- open the file specified by path

 opens a new file in the requested mode

 'open -cd /tmp/data' - creates/opens data file read-write for direct IO

 Opens a file for subsequent use by all of the other xfs_io commands.
 With no arguments, open uses the stat command to show the current file.
 -F -- foreign filesystem file, disallow XFS-specific commands
 -a -- open with the O_APPEND flag (append-only mode)
 -d -- open with O_DIRECT (non-buffered IO, note alignment constraints)
 -f -- open with O_CREAT (create the file if it doesn't exist)
 -m -- permissions to use in case a new file is created (default 0600)
 -n -- open with O_NONBLOCK
 -r -- open with O_RDONLY, the default is O_RDWR
 -s -- open with O_SYNC
 -t -- open with O_TRUNC (truncate the file to zero length if it exists)
 -R -- mark the file as a realtime XFS file immediately after opening it
 Note1: usually read/write direct IO requests must be blocksize aligned;
        some kernels, however, allow sectorsize alignment for direct IO.
 Note2: the bmap for non-regular files can be obtained provided the file
        was opened correctly (in particular, must be opened read-only).

The "F" was taken out of the command line's getopt(), so it can't be specified. I guess either put the "F" back in the the open.c getopt() or take it complete from the command line.

xfs_io> open -F somefile
open: invalid option -- 'F'
open [-acdrstx] [path] -- open the file specified by path


--Mark Tinguely

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