… | |
… | |
946 | #endif |
946 | #endif |
947 | |
947 | |
948 | /* even though we could play tricks with the flags, it's better to always |
948 | /* even though we could play tricks with the flags, it's better to always |
949 | * call fdatasync, as that matches the expectation of its users best */ |
949 | * call fdatasync, as that matches the expectation of its users best */ |
950 | return fdatasync (fd); |
950 | return fdatasync (fd); |
|
|
951 | } |
|
|
952 | |
|
|
953 | static int |
|
|
954 | eio__fallocate (int fd, int mode, off_t offset, size_t nbytes) |
|
|
955 | { |
|
|
956 | #if HAVE_FALLOCATE |
|
|
957 | return fallocate (fd, offset, nbytes, flags); |
|
|
958 | #else |
|
|
959 | errno = ENOSYS; |
|
|
960 | return -1; |
|
|
961 | #endif |
951 | } |
962 | } |
952 | |
963 | |
953 | #if !HAVE_READAHEAD |
964 | #if !HAVE_READAHEAD |
954 | # undef readahead |
965 | # undef readahead |
955 | # define readahead(fd,offset,count) eio__readahead (fd, offset, count, self) |
966 | # define readahead(fd,offset,count) eio__readahead (fd, offset, count, self) |
… | |
… | |
1963 | case EIO_MSYNC: req->result = eio__msync (req->ptr2, req->size, req->int1); break; |
1974 | case EIO_MSYNC: req->result = eio__msync (req->ptr2, req->size, req->int1); break; |
1964 | case EIO_MTOUCH: req->result = eio__mtouch (req); break; |
1975 | case EIO_MTOUCH: req->result = eio__mtouch (req); break; |
1965 | case EIO_MLOCK: req->result = eio__mlock (req->ptr2, req->size); break; |
1976 | case EIO_MLOCK: req->result = eio__mlock (req->ptr2, req->size); break; |
1966 | case EIO_MLOCKALL: req->result = eio__mlockall (req->int1); break; |
1977 | case EIO_MLOCKALL: req->result = eio__mlockall (req->int1); break; |
1967 | case EIO_SYNC_FILE_RANGE: req->result = eio__sync_file_range (req->int1, req->offs, req->size, req->int2); break; |
1978 | case EIO_SYNC_FILE_RANGE: req->result = eio__sync_file_range (req->int1, req->offs, req->size, req->int2); break; |
|
|
1979 | case EIO_FALLOCATE: req->result = eio__fallocate (req->int1, req->int2, req->offs, req->size); break; |
1968 | |
1980 | |
1969 | case EIO_READDIR: eio__scandir (req, self); break; |
1981 | case EIO_READDIR: eio__scandir (req, self); break; |
1970 | |
1982 | |
1971 | case EIO_BUSY: |
1983 | case EIO_BUSY: |
1972 | #ifdef _WIN32 |
1984 | #ifdef _WIN32 |
… | |
… | |
2072 | eio_req *eio_sync_file_range (int fd, off_t offset, size_t nbytes, unsigned int flags, int pri, eio_cb cb, void *data) |
2084 | eio_req *eio_sync_file_range (int fd, off_t offset, size_t nbytes, unsigned int flags, int pri, eio_cb cb, void *data) |
2073 | { |
2085 | { |
2074 | REQ (EIO_SYNC_FILE_RANGE); req->int1 = fd; req->offs = offset; req->size = nbytes; req->int2 = flags; SEND; |
2086 | REQ (EIO_SYNC_FILE_RANGE); req->int1 = fd; req->offs = offset; req->size = nbytes; req->int2 = flags; SEND; |
2075 | } |
2087 | } |
2076 | |
2088 | |
|
|
2089 | eio_req *eio_fallocate (int fd, int mode, off_t offset, size_t len, int pri, eio_cb cb, void *data) |
|
|
2090 | { |
|
|
2091 | REQ (EIO_FALLOCATE); req->int1 = fd; req->int2 = mode; req->offs = offset; req->size = len; SEND; |
|
|
2092 | } |
|
|
2093 | |
2077 | eio_req *eio_fdatasync (int fd, int pri, eio_cb cb, void *data) |
2094 | eio_req *eio_fdatasync (int fd, int pri, eio_cb cb, void *data) |
2078 | { |
2095 | { |
2079 | REQ (EIO_FDATASYNC); req->int1 = fd; SEND; |
2096 | REQ (EIO_FDATASYNC); req->int1 = fd; SEND; |
2080 | } |
2097 | } |
2081 | |
2098 | |