home *** CD-ROM | disk | FTP | other *** search
/ ftp.parl.clemson.edu / 2015-02-07.ftp.parl.clemson.edu.tar / ftp.parl.clemson.edu / pub / pvfs2 / orangefs-2.8.3-20110323.tar.gz / orangefs-2.8.3-20110323.tar / orangefs / include / pvfs2-sysint.h < prev    next >
C/C++ Source or Header  |  2009-09-03  |  18KB  |  679 lines

  1. /*
  2.  * (C) 2001 Clemson University and The University of Chicago
  3.  *
  4.  * See COPYING in top-level directory.
  5.  */
  6.  
  7. /** \defgroup sysint PVFS2 system interface
  8.  *
  9.  *  The PVFS2 system interface provides functionality used for everyday
  10.  *  interaction.  Both the PVFS2 kernel support and the PVFS2 ROMIO
  11.  *  implementation build on this interface.
  12.  *
  13.  * @{
  14.  */
  15.  
  16. /** \file
  17.  *  Declarations for the PVFS2 system interface.
  18.  */
  19.  
  20. #ifndef __PVFS_SYSINT_H
  21. #define __PVFS_SYSINT_H
  22.  
  23. #include "pvfs2-types.h"
  24. #include "pvfs2-request.h"
  25.  
  26. /** Options supported by get_info() and set_info(). */
  27. enum PVFS_sys_setinfo_opt
  28. {
  29.     PVFS_SYS_NCACHE_TIMEOUT_MSECS = 1,
  30.     PVFS_SYS_ACACHE_TIMEOUT_MSECS,
  31.     PVFS_SYS_MSG_TIMEOUT_SECS,
  32.     PVFS_SYS_MSG_RETRY_LIMIT,
  33.     PVFS_SYS_MSG_RETRY_DELAY_MSECS,
  34. };
  35.  
  36. /** Holds a non-blocking system interface operation handle. */
  37. typedef PVFS_id_gen_t PVFS_sys_op_id;
  38.  
  39. /** Describes attributes for a file, directory, or symlink. */
  40. struct PVFS_sys_attr_s
  41. {
  42.     PVFS_uid owner;
  43.     PVFS_gid group;
  44.     PVFS2_ALIGN_VAR(PVFS_permissions, perms);
  45.     PVFS_time atime;
  46.     PVFS_time mtime;
  47.     PVFS_time ctime;
  48.     PVFS_size size;
  49.     PVFS2_ALIGN_VAR(char *, link_target);/* NOTE: caller must free if valid */
  50.     PVFS2_ALIGN_VAR(int32_t, dfile_count); /* Changed to int32_t so that size of structure does not change */
  51.     PVFS2_ALIGN_VAR(uint32_t, mirror_copies_count);
  52.     PVFS2_ALIGN_VAR(char*, dist_name);   /* NOTE: caller must free if valid */
  53.     PVFS2_ALIGN_VAR(char*, dist_params); /* NOTE: caller must free if valid */
  54.     PVFS_size dirent_count;
  55.     PVFS_ds_type objtype;
  56.     PVFS_flags flags;
  57.     uint32_t mask;
  58.     PVFS_size blksize;
  59. };
  60. typedef struct PVFS_sys_attr_s PVFS_sys_attr;
  61.  
  62. /** Describes a PVFS2 file system. */
  63. struct PVFS_sys_mntent
  64. {
  65.     char **pvfs_config_servers;    /* addresses of servers with config info */
  66.     int32_t num_pvfs_config_servers; /* changed to int32_t so that size of structure does not change */
  67.     char *the_pvfs_config_server; /* first of the entries above that works */
  68.     char *pvfs_fs_name;        /* name of PVFS2 file system */
  69.     enum PVFS_flowproto_type flowproto;    /* flow protocol */
  70.     enum PVFS_encoding_type encoding;   /* wire data encoding */
  71.     /* fs id, filled in by system interface when it looks up the fs */
  72.     PVFS_fs_id fs_id;
  73.  
  74.     /* Default number of dfiles mount option value */
  75.     int32_t default_num_dfiles; /* int32_t for portable, fixed size structure */
  76.     /* Check to determine whether the mount process must perform the integrity checks on the config files */
  77.     int32_t integrity_check;
  78.     /* the following fields are included for convenience;
  79.      * useful if the file system is "mounted" */
  80.     char *mnt_dir;        /* local mount path */
  81.     char *mnt_opts;        /* full option list */
  82. };
  83.  
  84. /** Describes file distribution parameters. */
  85. struct PVFS_sys_dist_s
  86. {
  87.     char* name;
  88.     void* params;
  89. };
  90. typedef struct PVFS_sys_dist_s PVFS_sys_dist;
  91.  
  92. /**********************************************************************/
  93. /* Structures that Hold the results of various system interface calls */
  94. /**********************************************************************/
  95.  
  96. /** Holds results of a lookup operation (reference to object). */
  97. struct PVFS_sysresp_lookup_s
  98. {
  99.     PVFS_object_ref ref;
  100. };
  101. typedef struct PVFS_sysresp_lookup_s PVFS_sysresp_lookup;
  102.  
  103. /** Holds results of a getattr operation (attributes of object). */
  104. struct PVFS_sysresp_getattr_s
  105. {
  106.     PVFS_sys_attr attr;
  107. };
  108. typedef struct PVFS_sysresp_getattr_s PVFS_sysresp_getattr;
  109.  
  110. /* setattr */
  111. /* no data returned in setattr response */
  112.  
  113. /** Holds results of a mkdir operation (reference to new directory). */
  114. struct PVFS_sysresp_mkdir_s
  115. {
  116.     PVFS_object_ref ref;
  117. };
  118. typedef struct PVFS_sysresp_mkdir_s PVFS_sysresp_mkdir;
  119.  
  120. /** Holds results of a create operation (reference to new file). */
  121. struct PVFS_sysresp_create_s
  122. {
  123.     PVFS_object_ref ref;
  124. };
  125. typedef struct PVFS_sysresp_create_s PVFS_sysresp_create;
  126.  
  127. /* remove */
  128. /* no data returned in remove response */
  129.  
  130. /* rename */
  131. /* no data returned in rename response */
  132.  
  133. /** Holds results of a symlink operation (reference to new symlink). */
  134. struct PVFS_sysresp_symlink_s
  135. {
  136.     PVFS_object_ref ref;
  137. };
  138. typedef struct PVFS_sysresp_symlink_s PVFS_sysresp_symlink;
  139.  
  140. /** Holds results of a readlink operation (string name of target). */
  141. struct PVFS_sysresp_readlink_s
  142. {
  143.     char *target;
  144. };
  145. typedef struct PVFS_sysresp_readlink_s PVFS_sysresp_readlink;
  146.  
  147. /** Holds results of an I/O operation (total number of bytes read/written). */
  148. struct PVFS_sysresp_io_s
  149. {
  150.     PVFS_size total_completed;
  151. };
  152. typedef struct PVFS_sysresp_io_s PVFS_sysresp_io;
  153.  
  154. /** Holds results of a readdir operation (position token, directory version
  155.  *  information, array of directory entries).
  156.  */
  157. struct PVFS_sysresp_readdir_s
  158. {
  159.     PVFS_ds_position token;
  160.     PVFS_dirent *dirent_array;
  161.     uint32_t pvfs_dirent_outcount; /* uint32_t for portable, fixed size structure */
  162.     uint64_t directory_version;
  163. };
  164. typedef struct PVFS_sysresp_readdir_s PVFS_sysresp_readdir;
  165.  
  166. /** Holds results of a readdirplus operation (position token, directory version
  167.  *  information, array of directory entries, array of stat error codes and array of
  168.  *  attribute information).
  169.  */
  170. struct PVFS_sysresp_readdirplus_s
  171. {
  172.     PVFS_ds_position token;
  173.     PVFS_dirent   *dirent_array;
  174.     uint32_t        pvfs_dirent_outcount; /* uint32_t for portable, fixed size structure */
  175.     uint64_t       directory_version;
  176.     PVFS_error    *stat_err_array; 
  177.     PVFS_sys_attr *attr_array;
  178. };
  179. typedef struct PVFS_sysresp_readdirplus_s PVFS_sysresp_readdirplus;
  180.  
  181.  
  182. /* truncate */
  183. /* no data returned in truncate response */
  184.  
  185. struct PVFS_sysresp_statfs_s
  186. {
  187.     PVFS_statfs statfs_buf;
  188.     int32_t server_count; /* int32_t for portable, fixed size structure */
  189. };
  190. typedef struct PVFS_sysresp_statfs_s PVFS_sysresp_statfs;
  191.  
  192. struct PVFS_sysresp_getparent_s
  193. {
  194.     PVFS_object_ref parent_ref;
  195.     char basename[PVFS_NAME_MAX];
  196. };
  197. typedef struct PVFS_sysresp_getparent_s PVFS_sysresp_getparent;
  198.  
  199. /** Holds results of a geteattr_list operation (attributes of object). */
  200. struct PVFS_sysresp_geteattr_s
  201. {
  202.     PVFS_ds_keyval *val_array;
  203.     PVFS_error *err_array;
  204. };
  205. typedef struct PVFS_sysresp_geteattr_s PVFS_sysresp_geteattr;
  206.  
  207. /* seteattr */
  208. /* no data returned in seteattr response */
  209.  
  210. /* deleattr */
  211. /* no data returned in deleattr response */
  212.  
  213. /** Holds results of a listeattr_list operation (keys of object). */
  214. struct PVFS_sysresp_listeattr_s
  215. {
  216.     PVFS_ds_position token;
  217.     int32_t         nkey;
  218.     PVFS_ds_keyval *key_array;
  219. };
  220. typedef struct PVFS_sysresp_listeattr_s PVFS_sysresp_listeattr;
  221.  
  222.  
  223. /****************************************/
  224. /* system interface function prototypes */
  225. /****************************************/
  226.  
  227. int PVFS_sys_initialize(
  228.     uint64_t default_debug_mask);
  229. int PVFS_sys_fs_add(
  230.     struct PVFS_sys_mntent* mntent);
  231. int PVFS_isys_fs_add(
  232.     struct PVFS_sys_mntent* mntent,
  233.     PVFS_sys_op_id *op_id,
  234.     void *user_ptr);
  235. int PVFS_sys_fs_remove(
  236.     struct PVFS_sys_mntent* mntent);
  237. int PVFS_sys_finalize(
  238.     void);
  239.  
  240. /*
  241.   NOTE: the following values are to be used by
  242.   PVFS_sys(.*)_lookup as the "follow_link" argument.
  243.  
  244.   All symlinks are resolved if they are part of a
  245.   longer pathname. (i.e. partial path symlink resolution)
  246.  
  247.   These values dictate what to do when the final object
  248.   looked up is a symlink.  Using PVFS2_LOOKUP_LINK_NO_FOLLOW,
  249.   the symlink object (i.e. handle) will be returned.
  250.   Using PVFS2_LOOKUP_LINK_FOLLOW, the symlink target will be
  251.   continue to be resolved until a non symlink object type
  252.   is resolved -- and this resolved object will be returned
  253. */
  254. #define PVFS2_LOOKUP_LINK_NO_FOLLOW 0
  255. #define PVFS2_LOOKUP_LINK_FOLLOW    1
  256.  
  257. PVFS_error PVFS_isys_ref_lookup(
  258.     PVFS_fs_id fs_id,
  259.     char *relative_pathname,
  260.     PVFS_object_ref parent_ref,
  261.     const PVFS_credentials *credentials,
  262.     PVFS_sysresp_lookup * resp,
  263.     int32_t follow_link,
  264.     PVFS_sys_op_id *op_id,
  265.     PVFS_hint hints,
  266.     void *user_ptr);
  267.  
  268. PVFS_error PVFS_sys_ref_lookup(
  269.     PVFS_fs_id fs_id,
  270.     char *relative_pathname,
  271.     PVFS_object_ref parent_ref,
  272.     const PVFS_credentials *credentials,
  273.     PVFS_sysresp_lookup * resp,
  274.     int32_t follow_link,
  275.     PVFS_hint hints);
  276.  
  277. PVFS_error PVFS_sys_lookup(
  278.     PVFS_fs_id fs_id,
  279.     char *name,
  280.     const PVFS_credentials *credentials,
  281.     PVFS_sysresp_lookup * resp,
  282.     int32_t follow_link,
  283.     PVFS_hint hints);
  284.  
  285. PVFS_error PVFS_isys_getattr(
  286.     PVFS_object_ref ref,
  287.     uint32_t attrmask,
  288.     const PVFS_credentials *credentials,
  289.     PVFS_sysresp_getattr *resp,
  290.     PVFS_sys_op_id *op_id,
  291.     PVFS_hint hints,
  292.     void *user_ptr);
  293.  
  294. PVFS_error PVFS_sys_getattr(
  295.     PVFS_object_ref ref,
  296.     uint32_t attrmask,
  297.     const PVFS_credentials *credentials,
  298.     PVFS_sysresp_getattr *resp,
  299.     PVFS_hint hints);
  300.  
  301. PVFS_error PVFS_isys_setattr(
  302.     PVFS_object_ref ref,
  303.     PVFS_sys_attr attr,
  304.     const PVFS_credentials *credentials,
  305.     PVFS_sys_op_id *op_id,
  306.     PVFS_hint hints,
  307.     void *user_ptr);
  308.  
  309. PVFS_error PVFS_sys_setattr(
  310.     PVFS_object_ref ref,
  311.     PVFS_sys_attr attr,
  312.     const PVFS_credentials *credentials,
  313.     PVFS_hint hints);
  314.  
  315. PVFS_error PVFS_isys_mkdir(
  316.     char *entry_name,
  317.     PVFS_object_ref parent_ref,
  318.     PVFS_sys_attr attr,
  319.     const PVFS_credentials *credentials,
  320.     PVFS_sysresp_mkdir *resp,
  321.     PVFS_sys_op_id *op_id,
  322.     PVFS_hint hints,
  323.     void *user_ptr);
  324.  
  325. PVFS_error PVFS_sys_mkdir(
  326.     char *entry_name,
  327.     PVFS_object_ref parent_ref,
  328.     PVFS_sys_attr attr,
  329.     const PVFS_credentials *credentials,
  330.     PVFS_sysresp_mkdir *resp,
  331.     PVFS_hint hints);
  332.  
  333. PVFS_error PVFS_isys_readdir(
  334.     PVFS_object_ref ref,
  335.     PVFS_ds_position token,
  336.     int32_t pvfs_dirent_incount,
  337.     const PVFS_credentials *credentials,
  338.     PVFS_sysresp_readdir *resp,
  339.     PVFS_sys_op_id *op_id,
  340.     PVFS_hint hints,
  341.     void *user_ptr);
  342.  
  343. PVFS_error PVFS_sys_readdir(
  344.     PVFS_object_ref ref,
  345.     PVFS_ds_position token,
  346.     int32_t pvfs_dirent_incount,
  347.     const PVFS_credentials *credentials,
  348.     PVFS_sysresp_readdir *resp,
  349.     PVFS_hint hints);
  350.  
  351. PVFS_error PVFS_isys_readdirplus(
  352.     PVFS_object_ref ref,
  353.     PVFS_ds_position token,
  354.     int32_t pvfs_dirent_incount,
  355.     const PVFS_credentials *credentials,
  356.     uint32_t attrmask,
  357.     PVFS_sysresp_readdirplus *resp,
  358.     PVFS_sys_op_id *op_id,
  359.     PVFS_hint hints,
  360.     void *user_ptr);
  361.  
  362. PVFS_error PVFS_sys_readdirplus(
  363.     PVFS_object_ref ref,
  364.     PVFS_ds_position token,
  365.     int32_t pvfs_dirent_incount,
  366.     const PVFS_credentials *credentials,
  367.     uint32_t attrmask,
  368.     PVFS_sysresp_readdirplus *resp,
  369.     PVFS_hint hints);
  370.  
  371. PVFS_error PVFS_isys_create(
  372.     char *entry_name,
  373.     PVFS_object_ref ref,
  374.     PVFS_sys_attr attr,
  375.     const PVFS_credentials *credentials,
  376.     PVFS_sys_dist *dist,
  377.     PVFS_sys_layout *layout,
  378.     PVFS_sysresp_create *resp,
  379.     PVFS_sys_op_id *op_id,
  380.     PVFS_hint hints,
  381.     void *user_ptr);
  382.  
  383. PVFS_error PVFS_sys_create(
  384.     char *entry_name,
  385.     PVFS_object_ref ref,
  386.     PVFS_sys_attr attr,
  387.     const PVFS_credentials *credentials,
  388.     PVFS_sys_dist *dist,
  389.     PVFS_sysresp_create *resp,
  390.     PVFS_sys_layout *layout,
  391.     PVFS_hint hints);
  392.  
  393. PVFS_error PVFS_isys_remove(
  394.     char *entry_name,
  395.     PVFS_object_ref ref,
  396.     const PVFS_credentials *credentials,
  397.     PVFS_sys_op_id *op_id,
  398.     PVFS_hint hints,
  399.     void *user_ptr);
  400.  
  401. PVFS_error PVFS_sys_remove(
  402.     char *entry_name,
  403.     PVFS_object_ref ref,
  404.     const PVFS_credentials *credentials,
  405.     PVFS_hint hints);
  406.  
  407. PVFS_error PVFS_isys_rename(
  408.     char *old_entry,
  409.     PVFS_object_ref old_parent_ref,
  410.     char *new_entry,
  411.     PVFS_object_ref new_parent_ref,
  412.     const PVFS_credentials *credentials,
  413.     PVFS_sys_op_id *op_id,
  414.     PVFS_hint hints,
  415.     void *user_ptr);
  416.  
  417. PVFS_error PVFS_sys_rename(
  418.     char *old_entry,
  419.     PVFS_object_ref old_parent_ref,
  420.     char *new_entry,
  421.     PVFS_object_ref new_parent_ref,
  422.     const PVFS_credentials *credentials,
  423.     PVFS_hint hints);
  424.  
  425. PVFS_error PVFS_isys_symlink(
  426.     char *entry_name,
  427.     PVFS_object_ref parent_ref,
  428.     char *target,
  429.     PVFS_sys_attr attr,
  430.     const PVFS_credentials *credentials,
  431.     PVFS_sysresp_symlink *resp,
  432.     PVFS_sys_op_id *op_id,
  433.     PVFS_hint hints,
  434.     void *user_ptr);
  435.  
  436. PVFS_error PVFS_sys_symlink(
  437.     char *entry_name,
  438.     PVFS_object_ref parent_ref,
  439.     char *target,
  440.     PVFS_sys_attr attr,
  441.     const PVFS_credentials *credentials,
  442.     PVFS_sysresp_symlink *resp,
  443.     PVFS_hint hints);
  444.  
  445. PVFS_error PVFS_isys_io(
  446.     PVFS_object_ref ref,
  447.     PVFS_Request file_req,
  448.     PVFS_offset file_req_offset,
  449.     void *buffer,
  450.     PVFS_Request mem_req,
  451.     const PVFS_credentials *credentials,
  452.     PVFS_sysresp_io *resp,
  453.     enum PVFS_io_type type,
  454.     PVFS_sys_op_id *op_id,
  455.     PVFS_hint hints,
  456.     void *user_ptr);
  457.  
  458. #define PVFS_isys_read(x1,x2,x3,x4,x5,x6,y,x7,x8,x9) \
  459. PVFS_isys_io(x1,x2,x3,x4,x5,x6,y,PVFS_IO_READ,x7,x8,x9)
  460.  
  461. #define PVFS_isys_write(x1,x2,x3,x4,x5,x6,y,x7,x8,x9) \
  462. PVFS_isys_io(x1,x2,x3,x4,x5,x6,y,PVFS_IO_WRITE,x7,x8,x9)
  463.  
  464. PVFS_error PVFS_sys_io(
  465.     PVFS_object_ref ref,
  466.     PVFS_Request file_req,
  467.     PVFS_offset file_req_offset,
  468.     void *buffer,
  469.     PVFS_Request mem_req,
  470.     const PVFS_credentials *credentials,
  471.     PVFS_sysresp_io *resp,
  472.     enum PVFS_io_type type,
  473.     PVFS_hint hints);
  474.  
  475. #define PVFS_sys_read(x1,x2,x3,x4,x5,x6,y,z) \
  476. PVFS_sys_io(x1,x2,x3,x4,x5,x6,y,PVFS_IO_READ,z)
  477.  
  478. #define PVFS_sys_write(x1,x2,x3,x4,x5,x6,y,z) \
  479. PVFS_sys_io(x1,x2,x3,x4,x5,x6,y,PVFS_IO_WRITE,z)
  480.  
  481. PVFS_error PVFS_isys_truncate(
  482.     PVFS_object_ref ref,
  483.     PVFS_size size,
  484.     const PVFS_credentials *credentials,
  485.     PVFS_sys_op_id *op_id,
  486.     PVFS_hint hints,
  487.     void *user_ptr);
  488.  
  489. PVFS_error PVFS_sys_truncate(
  490.     PVFS_object_ref ref,
  491.     PVFS_size size,
  492.     const PVFS_credentials *credentials,
  493.     PVFS_hint hints);
  494.  
  495. PVFS_error PVFS_sys_getparent(
  496.     PVFS_fs_id fs_id,
  497.     char *entry_name,
  498.     const PVFS_credentials *credentials,
  499.     PVFS_sysresp_getparent *resp,
  500.     PVFS_hint hints);
  501.  
  502. PVFS_error PVFS_isys_flush(
  503.     PVFS_object_ref ref,
  504.     const PVFS_credentials *credentials,
  505.     PVFS_sys_op_id *op_id,
  506.     PVFS_hint hints,
  507.     void *user_ptr);
  508.  
  509. PVFS_error PVFS_sys_flush(
  510.     PVFS_object_ref ref,
  511.     const PVFS_credentials *credentials,
  512.     PVFS_hint hints);
  513.  
  514. PVFS_error PVFS_isys_statfs(
  515.     PVFS_fs_id fs_id,
  516.     const PVFS_credentials *credentials,
  517.     PVFS_sysresp_statfs *statfs,
  518.     PVFS_sys_op_id *op_id,
  519.     PVFS_hint hints,
  520.     void *user_ptr);
  521.  
  522. PVFS_error PVFS_sys_statfs(
  523.     PVFS_fs_id fs_id,
  524.     const PVFS_credentials *credentials,
  525.     PVFS_sysresp_statfs *resp,
  526.     PVFS_hint hints);
  527.  
  528. PVFS_sys_dist* PVFS_sys_dist_lookup(
  529.     const char* dist_identifier);
  530.  
  531. PVFS_error PVFS_sys_dist_free(
  532.     PVFS_sys_dist* dist);
  533.  
  534. PVFS_error PVFS_sys_dist_setparam(
  535.     PVFS_sys_dist* dist,
  536.     const char* param,
  537.     void* value);
  538.  
  539. PVFS_error PVFS_isys_geteattr(
  540.     PVFS_object_ref ref,
  541.     const PVFS_credentials *credentials,
  542.     PVFS_ds_keyval *key_p,
  543.     PVFS_sysresp_geteattr *resp,
  544.     PVFS_sys_op_id *op_id,
  545.     PVFS_hint hints,
  546.     void *user_ptr);
  547.  
  548. PVFS_error PVFS_sys_geteattr(
  549.     PVFS_object_ref ref,
  550.     const PVFS_credentials *credentials,
  551.     PVFS_ds_keyval *key_p,
  552.     PVFS_ds_keyval *val_p,
  553.     PVFS_hint hints);
  554.  
  555. PVFS_error PVFS_isys_geteattr_list(
  556.     PVFS_object_ref ref,
  557.     const PVFS_credentials *credentials,
  558.     int32_t nkey,
  559.     PVFS_ds_keyval *key_p,
  560.     PVFS_sysresp_geteattr *resp,
  561.     PVFS_sys_op_id *op_id,
  562.     PVFS_hint hints,
  563.     void *user_ptr);
  564.  
  565. PVFS_error PVFS_sys_geteattr_list(
  566.     PVFS_object_ref ref,
  567.     const PVFS_credentials *credentials,
  568.     int32_t nkey,
  569.     PVFS_ds_keyval *key_p,
  570.     PVFS_sysresp_geteattr *resp,
  571.     PVFS_hint hints);
  572.  
  573. PVFS_error PVFS_isys_seteattr(
  574.     PVFS_object_ref ref,
  575.     const PVFS_credentials *credentials,
  576.     PVFS_ds_keyval *key_p,
  577.     PVFS_ds_keyval *val_p,
  578.     int32_t flags,
  579.     PVFS_sys_op_id *op_id,
  580.     PVFS_hint hints,
  581.     void *user_ptr);
  582.  
  583. PVFS_error PVFS_sys_seteattr(
  584.     PVFS_object_ref ref,
  585.     const PVFS_credentials *credentials,
  586.     PVFS_ds_keyval *key_p,
  587.     PVFS_ds_keyval *val_p,
  588.     int32_t flags,
  589.     PVFS_hint hints);
  590.  
  591. PVFS_error PVFS_isys_seteattr_list(
  592.     PVFS_object_ref ref,
  593.     const PVFS_credentials *credentials,
  594.     int32_t nkey,
  595.     PVFS_ds_keyval *key_array,
  596.     PVFS_ds_keyval *val_array,
  597.     int32_t flags,
  598.     PVFS_sys_op_id *op_id,
  599.     PVFS_hint hints,
  600.     void *user_ptr);
  601.  
  602. PVFS_error PVFS_sys_seteattr_list(
  603.     PVFS_object_ref ref,
  604.     const PVFS_credentials *credentials,
  605.     int32_t nkey,
  606.     PVFS_ds_keyval *key_array,
  607.     PVFS_ds_keyval *val_array,
  608.     int32_t flags,
  609.     PVFS_hint hints);
  610.  
  611. PVFS_error PVFS_isys_deleattr(
  612.     PVFS_object_ref ref,
  613.     const PVFS_credentials *credentials,
  614.     PVFS_ds_keyval *key_p,
  615.     PVFS_sys_op_id *op_id,
  616.     PVFS_hint hints,
  617.     void *user_ptr);
  618.  
  619. PVFS_error PVFS_sys_deleattr(
  620.     PVFS_object_ref ref,
  621.     const PVFS_credentials *credentials,
  622.     PVFS_ds_keyval *key_p,
  623.     PVFS_hint hints);
  624.  
  625. PVFS_error PVFS_isys_listeattr(
  626.     PVFS_object_ref ref,
  627.     PVFS_ds_position token,
  628.     int32_t nkey,
  629.     const PVFS_credentials *credentials,
  630.     PVFS_sysresp_listeattr *resp,
  631.     PVFS_sys_op_id *op_id,
  632.     PVFS_hint hints,
  633.     void *user_ptr);
  634.  
  635. PVFS_error PVFS_sys_listeattr(
  636.     PVFS_object_ref ref,
  637.     PVFS_ds_position token,
  638.     int32_t nkey,
  639.     const PVFS_credentials *credentials,
  640.     PVFS_sysresp_listeattr *resp,
  641.     PVFS_hint hints);
  642.  
  643. PVFS_error PVFS_sys_set_info(
  644.     enum PVFS_sys_setinfo_opt option,
  645.     unsigned int arg);
  646.  
  647. PVFS_error PVFS_sys_get_info(
  648.     enum PVFS_sys_setinfo_opt option,
  649.     unsigned int* arg);
  650.  
  651. /* exported test functions for isys calls */
  652.  
  653. int PVFS_sys_testsome(
  654.     PVFS_sys_op_id *op_id_array,
  655.     int *op_count, /* in/out */
  656.     void **user_ptr_array,
  657.     int *error_code_array,
  658.     int timeout_ms);
  659.  
  660. int PVFS_sys_wait(
  661.     PVFS_sys_op_id op_id,
  662.     const char *in_op_str,
  663.     int *out_error);
  664.  
  665. int PVFS_sys_cancel(PVFS_sys_op_id op_id);
  666.  
  667. #endif
  668.  
  669. /* @} */
  670.  
  671. /*
  672.  * Local variables:
  673.  *  c-indent-level: 4
  674.  *  c-basic-offset: 4
  675.  * End:
  676.  *
  677.  * vim: ts=8 sts=4 sw=4 expandtab
  678.  */
  679.