func: void qmp_eject(const char *device, bool has_force, bool force, Error **errp)
  
  {
  
      Error *local_err = NULL;
  
      int rc;
  
  
  
      if (!has_force) {
  
          force = false;
  
      }
  
  
  
      rc = do_open_tray(device, force, &local_err);
  
      if (local_err) {
  
          error_propagate(errp, local_err);
  
          return;
  
      }
  
  
  
      if (rc == EINPROGRESS) {
  
          error_setg(errp, "Device '%s' is locked and force was not specified, "
  
                     "wait for tray to open and try again", device);
  
          return;
  
      }
  
  
  
      qmp_x_blockdev_remove_medium(device, errp);
  
  }
  