def METHOD_NAME(benchmark_spec):
  """Run fio against gluster.
  Args:
    benchmark_spec: The benchmark specification. Contains all data that is
      required to run the benchmark.
  Returns:
    A list of sample.Sample objects.
  """
  gluster_servers = benchmark_spec.vm_groups['gluster_servers']
  clients = benchmark_spec.vm_groups['clients']
  client_vm = clients[0]
  results = []
  metadata = {
      'fill_disk_size': FLAGS.fill_disk_size,
      'fill_disk_bs': FLAGS.fill_disk_bs,
      'fill_disk_iodepth': FLAGS.fill_disk_iodepth,
      'read_size': FLAGS.read_size,
      'read_bs': FLAGS.read_bs,
      'read_iodepth': FLAGS.read_iodepth,
  }
  fio_params = ' '.join([
      '--output-format=json', '--name=fill_disk',
      '--filename=/testdir/testfile',
      '--filesize=%s' % FLAGS.fill_disk_size, '--ioengine=libaio', '--direct=1',
      '--verify=0', '--randrepeat=0',
      '--bs=%s' % FLAGS.fill_disk_bs,
      '--iodepth=%s' % FLAGS.fill_disk_iodepth, '--rw=randwrite'
  ])
  samples = _RunFio(client_vm, fio_params, metadata)
  results += samples
  # In addition to dropping caches, increase polling to potentially reduce
  # variance in network operations
  for vm in gluster_servers + clients:
    vm.RemoteCommand('sudo /sbin/sysctl net.core.busy_poll=50')
    vm.DropCaches()
  fio_read_common_params = [
      '--output-format=json', '--randrepeat=1', '--ioengine=libaio',
      '--gtod_reduce=1', '--filename=/testdir/testfile',
      '--bs=%s' % FLAGS.read_bs,
      '--iodepth=%s' % FLAGS.read_iodepth,
      '--size=%s' % FLAGS.read_size, '--readwrite=randread'
  ]
  fio_params = '--name=first_read ' + ' '.join(fio_read_common_params)
  samples = _RunFio(client_vm, fio_params, metadata)
  results += samples
  # Run the command again. This time, the file should be cached.
  fio_params = '--name=second_read ' + ' '.join(fio_read_common_params)
  samples = _RunFio(client_vm, fio_params, metadata)
  results += samples
  return results