Beispiel #1
0
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);
}
Beispiel #2
0
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);
}