// SPDX-License-Identifier: GPL-2.0-only/* * Copyright (C) 2003 Sistina Software Limited. * Copyright (C) 2005-2008 Red Hat, Inc. All rights reserved. * * This file is released under the GPL. */#include"dm-bio-record.h"#include<linux/init.h>#include<linux/mempool.h>#include<linux/module.h>#include<linux/pagemap.h>#include<linux/slab.h>#include<linux/workqueue.h>#include<linux/device-mapper.h>#include<linux/dm-io.h>#include<linux/dm-dirty-log.h>#include<linux/dm-kcopyd.h>#include<linux/dm-region-hash.h>staticstructworkqueue_struct*dm_raid1_wq;#define DM_MSG_PREFIX "raid1"#define MAX_RECOVERY 1 /* Maximum number of regions recovered in parallel. */#define MAX_NR_MIRRORS (DM_KCOPYD_MAX_REGIONS + 1)#define DM_RAID1_HANDLE_ERRORS 0x01#define DM_RAID1_KEEP_LOG 0x02#define errors_handled(p) ((p)->features & DM_RAID1_HANDLE_ERRORS)#define keep_log(p) ((p)->features & DM_RAID1_KEEP_LOG)staticDECLARE_WAIT_QUEUE_HEAD(_kmirrord_recovery_stopped);/* *--------------------------------------------------------------- * Mirror set structures. *--------------------------------------------------------------- */enumdm_raid1_error{DM_RAI