type remount, domain, coredomain;
type remount_exec, system_file_type, exec_type, file_type;

userdebug_or_eng(`
  # Allow init to run clean_scratch_files and do auto domain transfer.
  init_daemon_domain(remount)

  # Allow talking to gsid.
  binder_use(remount)
  allow remount gsi_service:service_manager find;
  binder_call(remount, gsid)

  # Allow searching for /metadata/gsi/remount/lp_metadata.
  allow remount { metadata_file gsi_metadata_file_type }:dir search;
')
