sam_advise - Provides advice to the file system
cc [ flag
… ] file
… -L∕opt∕SUNWsamfs∕lib -lsam [ library … ]
#include "∕opt∕SUNWsamfs∕include∕lib.h"
int sam_advise(const int fildes ,
const char * ops );
sam_advise()
provides advice about expected behavior of the application when
accessing data in the file associated with the open file descriptor,
fildes.
sam_advise()
provides advice for a file using an Oracle HSM ioctl call.
The last caller of sam_advise() sets the advice for all applications
using the file.
The last close of the file sets the advice back to the default mode.
ops
is the character string of options, for example: "dw". Individual options are
described below.
bAdvises the system to use buffered (paged) I∕O.
The default I∕O mode is buffered (uses the page cache).
At the last close, the type of I∕O is set back to paged or direct
based on the mount option
forcedirectio
or the
directio
attribute set by the
setfa
command.
dReturn the advice on the file to the default,
i.e. the qwrite is reset to the mount setting.
When this option is specified, the advice is reset to the default.
If it is used, it should be the first character in the string.
pObsolete. Now does nothing, but remains for compatibility.
rAdvises the system to use direct (raw) I∕O (see directio (3C) for
Solaris 2.6 and above).
The default I∕O mode is buffered (uses the page cache).
At the last close, the type of I∕O is set back to paged or direct
based on the mount option
forcedirectio
or the
directio
attribute set by the
setfa
command.
wAdvises the system to enable simultaneous reads and writes to the
same file from different threads.
See the qwrite parameter on the mount command.
The
w
option is only supported by the ma equipment
type file system.
(See man
mcf (4)).
Upon successful completion a value of 0 is returned.
Otherwise, a value of -1 is returned and
errno
is set to indicate the error.
sam_advise()
fails if one or more of the following are true:
EINVALAn invalid option was specified, or the file is not a regular file.
EPERMNot the owner or super-user.
EFAULTpath or ops points to an illegal address.
EINTRA signal was caught during the
sam_advise()
function.
ELOOPToo many symbolic links were encountered in translating path.
EMULTIHOPComponents of path require hopping to multiple remote machines and the file system does not allow it.
ENAMETOOLONGThe length of the
path
argument exceeds {PATH_MAX}, or the
length of a path component exceeds {NAME_MAX} while
{_POSIX_NO_TRUNC} is in effect.
ENOENTThe named file does not exist or is the null pathname.
ENOLINKpath points to a remote machine and the link to that machine is no longer active.
ENOTDIRA component of the path prefix is not a directory.
setfa (1),
sam_setfa (3x),
directio(3C),
mlock(3C),
mount_samfs (1m),
mcf (4)