The next few paragraphs describe some things you should know about this API before attempting any of the tasks.
This API uses the fcntl(2) system call to send requests to the Xsan system. With a few exceptions, each fcntl(2) call takes as parameters a file descriptor, a macro name that identifies the type of request, and a union of a request and a reply structure. Some requests don’t require a request structure and some requests don’t require a reply structure.
Except where noted, zero is returned on success. Failure is indicated when an fcntl
(2) call returns –1 and errno is set to indicate the error.
All offsets and sizes are given in byte terms and are rounded up, if necessary, to the next Xsan file system block size.
For requests that return variable length buffers (such as extent lists), the request returns the total number of items available, as well as the number of items returned by this particular request. If more data is available than can be returned in the user’s buffer, as much as possible will be copied into the buffer, and no error will be returned. For subsequent requests, the user can specify a different starting location (ordinal for storage pools, starting offset for extents). If the list changes while the list is being retrieved, inconsistent results may be returned. When there are no more entries available, ENOENT is returned.
Last updated: 2006-05-23