Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: sun solaris and direct io

Re: sun solaris and direct io

From: Mladen Gogala <gogala_at_sbcglobal.net>
Date: Mon, 06 Jun 2005 23:27:07 GMT
Message-Id: <pan.2005.06.06.23.26.38.472539@sbcglobal.net>


On Fri, 03 Jun 2005 14:53:44 -0700, bchorng wrote:

> I am not an expert on IO calls, but I think all open( ) uses O_DSYNC( )
> flag.
> It is the subsequent calls that may vary depending if you use file
> system
> or not.

And what exactly is that you base your opinion on? Did you read Slowaris man page for the open(2) system call? did you look for directio function? Here is what I've been able to find out in a mysterious way that included knowledge of the dark side of the force:

Standard C Library Functions                         directio(3C)



NAME
     directio - provide advice to file system

SYNOPSIS
     #include <sys/types.h>
     #include <sys/fcntl.h>

     int directio(int fildes, int advice);

DESCRIPTION
     The directio() function provides advice to the system  about
     the  expected behavior of the application when accessing the
     data in the file associated with the  open  file  descriptor
     fildes.  The  system  uses this information to help optimize
     accesses to the file's data.  The directio() function has no
     effect on the semantics of the other operations on the data,


NAME
     mount_ufs - mount ufs file systems

SYNOPSIS
     mount -F ufs  [generic_options]  [-o specific_options]  [-O]
     special |  mount_point

     mount -F ufs  [generic_options]  [-o specific_options]  [-O]
     special mount_point

DESCRIPTION
     The mount utility attaches a ufs file  system  to  the  file
     system  hierarchy  at the mount_point, which is the pathname
     of a directory. If mount_point has any contents prior to the
     mount  operation,  these are hidden until the file system is
     unmounted.

     If mount is invoked with special or mount_point as the  only
     arguments,  mount  will  search  /etc/vfstab  to fill in the
     missing  arguments,  including  the  specific_options.   See
     mount(1M).
     If  special  and  mount_point  are  specified  without   any
     specific_options, the default is rw.

     If the directory on which a file system is to be mounted  is
     a symbolic link, the file system is mounted on the directory
     to which the symbolic link refers, rather than on top of the
     symbolic link itself.

OPTIONS
     See mount(1M) for the list of supported generic_options.

     The following options are supported:

          -o specific_options
                Specify ufs file system  specific  options  in  a
                comma-separated  list with no intervening spaces.
                If invalid options are specified, a warning  mes-
                sage  is  printed  and  the  invalid  options are
                ignored. The following options are available:

                dfratime | nodfratime
                      By default, writing access time updates  to
                      the disk may be deferred (dfratime) for the
                      file system until the disk is accessed  for
                      a  reason other than updating access times.
                      nodfratime disables this behavior.

                      If power management is enabled on the  sys-
                      tem,  do  not set nodfratime unless noatime
                      is also set. If you set nodfratime  without



SunOS 5.9           Last change: 23 Jul 2003                    1

System Administration Commands                      mount_ufs(1M)



                      setting  noatime, the disk is spun up every
                      time a file within a  file  system  on  the
                      disk  is accessed - even if the file is not
                      modified.

                forcedirectio | noforcedirectio
                      If forcedirectio is specified and supported
                      by  the  file system, then for the duration
                      of the mount, forced  direct  I/O  will  be
                      used.  If  the  filesystem is mounted using
                      forcedirectio, data is transferred directly
                      between user address space and the disk. If
                      the  filesystem  is  mounted  using  nofor-
                      cedirectio,  data  is  buffered  in  kernel
                      address  space  when  data  is  transferred
                      between  user  address  space and the disk.
                      forcedirectio is a performance option  that
                      is of benefit only in large sequential data
                      transfers. The default behavior  is  nofor-
                      cedirectio.






System Administration Commands                      mount_ufs(1M)


bash-2.05$ uname -a
SunOS eora6.allegientsystems.com 5.9 Generic_112233-12 sun4u sparc SUNW,Sun-Fire-V240

BTW, if you are not using file system, you are using raw devices and raw devices are by default not buffered, which means that every I/O against a raw device is a direct I/O. RTFM is a recommended practice and if it wasn't for Johnatan's FAQ, I'd have recommended it to you.

-- 
I either want less corruption, or more chance to participate in it. 
Received on Mon Jun 06 2005 - 18:27:07 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US