X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=include%2Fnfsc%2Flibnfs.h;h=ff0d4e4ad4b4bcdfae7f38a9c502e0389faa7e3a;hb=037a1061ddfa9ee5192daa4485794bee7657aa31;hp=0725de6cee91205b667201fe57926938a4e7b7a8;hpb=a87bb233a859992cdbe1ef4e92161b45ed8e5c92;p=deb_libnfs.git diff --git a/include/nfsc/libnfs.h b/include/nfsc/libnfs.h index 0725de6..ff0d4e4 100644 --- a/include/nfsc/libnfs.h +++ b/include/nfsc/libnfs.h @@ -36,6 +36,9 @@ extern "C" { #endif +#define LIBNFS_FEATURE_READAHEAD +#define NFS_BLKSIZE 4096 + struct nfs_context; struct rpc_context; @@ -184,6 +187,7 @@ EXTERN uint64_t nfs_get_writemax(struct nfs_context *nfs); EXTERN void nfs_set_tcp_syncnt(struct nfs_context *nfs, int v); EXTERN void nfs_set_uid(struct nfs_context *nfs, int uid); EXTERN void nfs_set_gid(struct nfs_context *nfs, int gid); +EXTERN void nfs_set_readahead(struct nfs_context *nfs, uint32_t v); /* * MOUNT THE EXPORT @@ -325,13 +329,15 @@ EXTERN int nfs_fstat(struct nfs_context *nfs, struct nfsfh *nfsfh, struct stat * /* * Async open() * - * mode is a combination of the flags : O_RDOLNY, O_WRONLY, O_RDWR , O_SYNC + * mode is a combination of the flags : + * O_RDOLNY, O_WRONLY, O_RDWR , O_SYNC, O_APPEND * * Function returns * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked. * <0 : An error occured when trying to set up the operation. The callback will not be invoked. * * Supported flags are + * O_APPEND * O_RDONLY * O_WRONLY * O_RDWR @@ -676,6 +682,33 @@ EXTERN int nfs_creat_async(struct nfs_context *nfs, const char *path, int mode, */ EXTERN int nfs_creat(struct nfs_context *nfs, const char *path, int mode, struct nfsfh **nfsfh); +/* + * Async create() + * + * Same as nfs_creat_async but allows passing flags: + * O_APPEND + * O_SYNC + * O_EXCL + * + * Function returns + * 0 : The operation was initiated. Once the operation finishes, the callback will be invoked. + * <0 : An error occured when trying to set up the operation. The callback will not be invoked. + * + * When the callback is invoked, status indicates the result: + * 0 : Success. + * data is a struct *nfsfh; + * -errno : An error occured. + * data is the error string. + */ +EXTERN int nfs_create_async(struct nfs_context *nfs, const char *path, int flags, int mode, nfs_cb cb, void *private_data); +/* + * Sync create() + * Function returns + * 0 : Success + * -errno : An error occured. + */ +EXTERN int nfs_create(struct nfs_context *nfs, const char *path, int flags, int mode, struct nfsfh **nfsfh); + /* * MKNOD() @@ -779,6 +812,7 @@ struct nfsdirent { struct timeval ctime; uint32_t uid; uint32_t gid; + uint32_t nlink; }; /* * nfs_readdir() never blocks, so no special sync/async versions are available