mirror of
				https://git.proxmox.com/git/mirror_zfs
				synced 2025-11-04 03:24:44 +00:00 
			
		
		
		
	The zimport.sh script makes use of the zpool-create.sh script to construct test pools for importing with older versions of ZoL. It is desirable to have a way to disable all the features so new pools can be imported with older code. The simplest and most flexible way to achieve this was to merge the VERBOSE_FLAG and FORCE_FLAG in to a single ZPOOL_FLAGS variable. The contents of this variable will be used in the 'zpool create' allowing us to easily pass arbitrary flags. Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Prakash Surya <surya1@llnl.gov> Closes #2524
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/bin/bash
 | 
						|
#
 | 
						|
# 1 scsi_debug device for fault injection and 3 loopback devices
 | 
						|
# on top of which is layered raidz3.
 | 
						|
#
 | 
						|
 | 
						|
SDSIZE=${SDSIZE:-256}
 | 
						|
SDHOSTS=${SDHOSTS:-1}
 | 
						|
SDTGTS=${SDTGTS:-1}
 | 
						|
SDLUNS=${SDLUNS:-1}
 | 
						|
LDMOD=/sbin/modprobe
 | 
						|
FILES="/tmp/zpool-vdev0  \
 | 
						|
       /tmp/zpool-vdev1  \
 | 
						|
       /tmp/zpool-vdev2"
 | 
						|
DEVICES=""
 | 
						|
 | 
						|
zpool_create() {
 | 
						|
	check_loop_utils
 | 
						|
	check_sd_utils
 | 
						|
 | 
						|
	test `${LSMOD} | grep -c scsi_debug` -gt 0 &&                        \
 | 
						|
		(echo 0 >/sys/module/scsi_debug/parameters/every_nth &&      \
 | 
						|
		${RMMOD} scsi_debug || exit 1)
 | 
						|
	udev_trigger
 | 
						|
 | 
						|
	msg "${LDMOD} scsi_debug dev_size_mb=${SDSIZE} "                     \
 | 
						|
		"add_host=${SDHOSTS} num_tgts=${SDTGTS} "                    \
 | 
						|
		"max_luns=${SDLUNS}"
 | 
						|
	${LDMOD} scsi_debug                                                  \
 | 
						|
		dev_size_mb=${SDSIZE}                                        \
 | 
						|
		add_host=${SDHOSTS}                                          \
 | 
						|
		num_tgts=${SDTGTS}                                           \
 | 
						|
		max_luns=${SDLUNS} ||                                        \
 | 
						|
		die "Error $? creating scsi_debug devices"
 | 
						|
	udev_trigger
 | 
						|
 | 
						|
	SDDEVICE=`${LSSCSI} | ${AWK} '/scsi_debug/ { print $6; exit }'`
 | 
						|
	msg "${PARTED} -s ${SDDEVICE} mklabel gpt"
 | 
						|
	${PARTED} -s ${SDDEVICE} mklabel gpt ||                              \
 | 
						|
		(${RMMOD} scsi_debug && die "Error $? creating gpt label")
 | 
						|
 | 
						|
	for FILE in ${FILES}; do
 | 
						|
		LODEVICE=`unused_loop_device`
 | 
						|
 | 
						|
		rm -f ${FILE} || exit 1
 | 
						|
		dd if=/dev/zero of=${FILE} bs=1024k count=0 seek=256         \
 | 
						|
			&>/dev/null || (${RMMOD} scsi_debug &&               \
 | 
						|
			die "Error $? creating ${FILE}")
 | 
						|
 | 
						|
		# Setup the loopback device on the file.
 | 
						|
		msg "Creating ${LODEVICE} using ${FILE}"
 | 
						|
		${LOSETUP} ${LODEVICE} ${FILE} || (${RMMOD} scsi_debug       \
 | 
						|
			die "Error $? creating ${LODEVICE} using ${FILE}")
 | 
						|
 | 
						|
		DEVICES="${DEVICES} ${LODEVICE}"
 | 
						|
	done
 | 
						|
 | 
						|
	DEVICES="${DEVICES} ${SDDEVICE}"
 | 
						|
 | 
						|
	msg "${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz3 ${DEVICES}"
 | 
						|
	${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} raidz3 ${DEVICES} ||     \
 | 
						|
		(${RMMOD} scsi_debug && exit 1)
 | 
						|
}
 | 
						|
 | 
						|
zpool_destroy() {
 | 
						|
	msg ${ZPOOL} destroy ${ZPOOL_NAME}
 | 
						|
	${ZPOOL} destroy ${ZPOOL_NAME}
 | 
						|
 | 
						|
	for FILE in ${FILES}; do
 | 
						|
		LODEVICE=`${LOSETUP} -a | grep ${FILE} | head -n1|cut -f1 -d:`
 | 
						|
		msg "Removing ${LODEVICE} using ${FILE}"
 | 
						|
		${LOSETUP} -d ${LODEVICE} ||
 | 
						|
			die "Error $? destroying ${LODEVICE} using ${FILE}"
 | 
						|
		rm -f ${FILE} || exit 1
 | 
						|
	done
 | 
						|
 | 
						|
	msg "${RMMOD} scsi_debug"
 | 
						|
	${RMMOD} scsi_debug || die "Error $? removing scsi_debug devices"
 | 
						|
}
 |