vxfs_ap_query2 - return information about a specific allocation policy
cc -I /opt/VRTS/include -L /opt/VRTS/lib
-l vxfsutil -ldl
cc -I /opt/VRTS/include -L /opt/VRTS/lib/64
-l vxfsutil -ldld
int vxfs_ap_query2(int fd, char *policyname, struct fsap_info2 **infopp);
vxfs_ap_query2() fills the fsap_info2 structure with the information for the policy specified by name policyname. The file descriptor fd specifies the mount point or any file in the file system. The caller is responsible for freeing the fsap_info2 structure by calling vxfs_ap_free2().
char apc_vols[1][FSVOL_NAMEZ];
#define ap_vols ap_comp.apc_vols
#define ap_subp ap_comp.apc_subp
Possible values for ap_flags are:
The policy can be assigned by non-privileged users. By default, only privileged users can assign policies.
The policy definition will contain the names of other allocation policies in its component list. Without this flag, the component list will contain volume names. A policy can refer to either subpolicies or volumes, but not to both.
Possible values for ap_order are:
Allocations are done from the components in the order in which they are given in the allocation policy.
Allocations are done from the volume specified in the allocation policy that has the most free blocks.
Allocations are done from a component that is selected in a round-robin fashion from those specified in the allocation policy.
Allocations are done from a volume that is selected at random from those specified in the allocation policy. When a volume is selected, the allocation is limited to a maximum chunk size.
To use this function, specify -l vxfsutil while linking. Specify the /opt/VRTSfssdk/5.0/lib directory for 32-bit executables, or the /opt/VRTSfssdk/5.0/lib/64 directory for 64-bit executables.
If the LIBVXFSUTIL_DLL_PATH environment variable is defined, it should be set to the name of the vxfsutil.so file, such as ~/mylib/vxfsutil.so. If undefined, this variable is assumed to point to the 32-bit and 64-bit vxfsutil.so files, /opt/VRTSvxfs/lib/vxfsutil.so and /opt/VRTSvxfs/lib/64/vxfsutil.so, respectively.
This API supports file system versions 6.0 and above.
vxfs_ap_query2() returns zero on success, non-zero on failure.
One or more of the specified pointer arguments points to an illegal address.
The specified policy does not exist.
This operation is not supported by the disk layout version of the specified file system. Use vxupgrade(1m) to enable this operation.
The following pseudo-code queries a policy:
struct fsap_info2 *fsap = NULL;
if ((fd = open("My_mountpoint", O_RDONLY)) < 0) {
if (err = vxfs_ap_query2(fd, "My_policy_name", &fsap)) {
* Do something with the policy.
vxfs_ap_alloc2(3), vxfs_ap_assign_ckpt(3), vxfs_ap_assign_file(3), vxfs_ap_assign_fs(3), vxfs_ap_define(3), vxfs_ap_define2(3), vxfs_ap_enforce_file(3), vxfs_ap_enumerate(3), vxfs_ap_enumerate2(3), vxfs_ap_free2(3), vxfs_ap_query(3), vxfs_ap_query_ckpt(3), vxfs_ap_query_file(3), vxfs_ap_query_fs(3), vxfs_ap_remove(3), vxfs_vol_add(3), vxfs_vol_deencapsulate(3), vxfs_vol_encapsulate(3), vxfs_vol_enumerate(3), vxfs_vol_remove(3), vxfs_vol_resize(3), vxfs_vol_stat(3)