fsal_status_t gpfs_read(struct fsal_obj_handle *obj_hdl, uint64_t offset, size_t buffer_size, void *buffer, size_t *read_amount, bool *end_of_file) { struct gpfs_fsal_obj_handle *myself; fsal_errors_t fsal_error = ERR_FSAL_NO_ERROR; int retval = 0; fsal_status_t status; myself = container_of(obj_hdl, struct gpfs_fsal_obj_handle, obj_handle); assert(myself->u.file.fd >= 0 && myself->u.file.openflags != FSAL_O_CLOSED); status = GPFSFSAL_read(myself->u.file.fd, offset, buffer_size, buffer, read_amount, end_of_file); if (FSAL_IS_ERROR(status)) return status; if ((*end_of_file == false) && ((offset + *read_amount) >= myself->attributes.filesize)) *end_of_file = true; return fsalstat(fsal_error, retval); }
fsal_status_t WRAP_GPFSFSAL_read(fsal_file_t * p_file_descriptor, /* IN */ fsal_seek_t * p_seek_descriptor, /* [IN] */ fsal_size_t buffer_size, /* IN */ caddr_t buffer, /* OUT */ fsal_size_t * p_read_amount, /* OUT */ fsal_boolean_t * p_end_of_file /* OUT */ ) { return GPFSFSAL_read((gpfsfsal_file_t *) p_file_descriptor, p_seek_descriptor, buffer_size, buffer, p_read_amount, p_end_of_file); }