Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CAMDD(8)		    System Manager's Manual		      CAMDD(8)

NAME
       camdd --	CAM data transfer utility

SYNOPSIS
       camdd	   <-i|o       pass=pass_dev|file=filename,bs=blocksize,[...]>
	     [-C retry_count] [-E] [-m max_io] [-t timeout] [-v] [-h]

DESCRIPTION
       The camdd utility is a sequential data  transfer	 utility  that	offers
       standard	read(2)	and write(2) operation in addition to a	mode that uses
       the asynchronous	pass(4)	API.  The asynchronous pass(4) API allows mul-
       tiple requests to be queued to a	device simultaneously.

       camdd  collects	performance  information  and will display it when the
       transfer	completes, when	camdd is terminated or when it receives	a SIG-
       INFO signal.

       The following options are available:

       -i | -o args  Specify the input and output device or file.  Both	-i and
		     -o	must be	specified.  There are a	number	of  parameters
		     that  can	be  specified.	 One of	the first two (file or
		     pass) MUST	be specified to	indicate which I/O  method  to
		     use on the	device in question.

		     pass=dev	Specify	 a pass(4) device to operate on.  This
				requests that camdd access the device in ques-
				tion be	accessed via the asynchronous  pass(4)
				interface.

				The device name	can be a pass(4) name and unit
				number,	for instance "pass0", or a regular pe-
				ripheral  driver name and unit number, for in-
				stance "da5".  It can also be the  path	 of  a
				pass(4)	or other disk device, like "/dev/da5".
				It  may	also be	a bus:target:lun, for example:
				"0:5:0".

				Only pass(4) devices for  SCSI	disk-like  de-
				vices are supported.  ATA devices are not cur-
				rently	supported,  but	support	could be added
				later.	Specifically, SCSI Direct Access (type
				0), WORM (type 4), CDROM  (type	 5),  and  RBC
				(Reduced  Block	 Command, type 14) devices are
				supported.  Tape drives, medium	changers,  en-
				closures etc. are not supported.

		     file=path	Specify	 a file	or device to operate on.  This
				requests that the file or device  in  question
				be  accessed  using  the  standard read(2) and
				write(2) system	 calls.	  The  file  interface
				does not support queueing multiple commands at
				a  time.   It does support probing disk	sector
				size and capacity information, and tape	block-
				size and maximum  transfer  size  information.
				The  file  interface  supports standard	files,
				disks, tape drives, special devices, pipes and
				standard input and output.   If	 the  file  is
				specified as a "-", standard input or standard
				output are used.  For tape devices, the	speci-
				fied blocksize will be the size	that camdd at-
				tempts	to  use	 to  write to or read from the
				tape.  When writing  to	 a  tape  device,  the
				blocksize  is treated like a disk sector size.
				So, that means camdd will not  write  anything
				smaller	than the sector	size.  At the end of a
				transfer,  if there isn't sufficient data from
				the reader to yield a full block,  camdd  will
				add  zeros  on	the  end  of the data from the
				reader to make up a full block.

		     bs=N	Specify	the blocksize to  use  for  transfers.
				camdd  will attempt to read or write using the
				requested blocksize.

				Note that the blocksize	given only applies  to
				either	the  input or the output path.	To use
				the same blocksize for the  input  and	output
				transfers,  you	 must  specify	that blocksize
				with both the -i and -o	arguments.

				The blocksize may be specified	in  bytes,  or
				using  any  suffix (e.g. k, M, G) supported by
				expand_number(3).

		     offset=N	Specify	the starting offset for	the  input  or
				output	device	or  file.   The	 offset	may be
				specified in bytes, or	by  using  any	suffix
				(e.g. k, M, G) supported by expand_number(3).

		     depth=N	Specify	a desired queue	depth for the input or
				output	path.	camdd will attempt to keep the
				requested number of requests of	the  specified
				blocksize  queued  to  the input or output de-
				vice.  Queue depths greater than  1  are  only
				supported  for the asynchronous	pass(4)	output
				method.	 The queue depth is  maintained	 on  a
				best  effort basis, and	may not	be possible to
				maintain for  especially  fast	devices.   For
				writes,	 maintaining  the queue	depth also de-
				pends on a sufficiently	fast reading device.

		     mcs=N	Specify	the minimum command size  to  use  for
				pass(4)	 devices.  Some	devices	do not support
				6 byte SCSI commands.  The da(4)  device  han-
				dles  this  restriction	automatically, but the
				pass(4)	device allows the user to specify  the
				SCSI  command  used.  If a device does not ac-
				cept 6 byte SCSI READ/WRITE commands (which is
				the default at lower LBAs), it will  generally
				accept 10 byte SCSI commands instead.

		     debug=N	Specify	 the  debug  level  for	 this  device.
				There is currently only	one debug  level  set-
				ting,  so  setting  this to any	non-zero value
				will turn on debugging.	  The  debug  facility
				may be expanded	in the future.

       -C count	     Specify  the  retry count for commands sent via the asyn-
		     chronous pass(4) interface.  This does not	apply to  com-
		     mands sent	via the	file interface.

       -E	     Enable  kernel error recovery for the pass(4) driver.  If
		     error recovery is not enabled, unit attention  conditions
		     and  other	 transient  failures may cause the transfer to
		     fail.

       -m size	     Specify the maximum amount	of  data  to  be  transferred.
		     This  may	be  specified in bytes,	or by using any	suffix
		     (e.g. K, M, G) supported by expand_number(3).

       -t timeout    Specify the command timeout in seconds to	use  for  com-
		     mands sent	via the	pass(4)	driver.

       -v	     Enable  verbose reporting of errors.  This	is recommended
		     to	aid in debugging any SCSI issues that come up.

       -h	     Display the camdd usage message.

       If camdd	receives a SIGINFO signal, it will print the current input and
       output byte counts, elapsed runtime and average throughput.   If	 camdd
       receives	 a  SIGINT  signal, it will print the current input and	output
       byte counts, elapsed runtime and	average	throughput and then exit.

EXAMPLES
	     camdd -i pass=da8,bs=512k,depth=4 -o pass=da3,bs=512k,depth=4

       Copy all	data from da8 to da3 using a blocksize of 512k for  both  dri-
       ves,  and  attempt to maintain a	queue depth of 4 on both the input and
       output devices.	The transfer will stop when the	end of	either	device
       is reached.

	     camdd -i file=/dev/zero,bs=1M -o pass=da5,bs=1M,depth=4 -m	100M

       Read  1MB  blocks of zeros from /dev/zero, and write them to da5	with a
       desired queue depth of 4.  Stop the transfer after 100MB	has been writ-
       ten.

	     camdd -i pass=da8,bs=1M,depth=3 -o	file=disk.img

       Copy disk da8 using a 1MB blocksize and desired queue depth of 3	to the
       file disk.img.

	     camdd -i file=/etc/rc -o file=-

       Read the	file /etc/rc and write it to standard output.

	     camdd -i pass=da10,bs=64k,depth=16	-o file=/dev/nsa0,bs=128k

       Copy 64K	blocks from the	disk da10 with a queue depth of	16, and	 write
       to  the	tape drive sa0 with a 128k blocksize.  The copy	will stop when
       either the end of the disk or tape is reached.

SEE ALSO
       cam(3), cam(4), pass(4),	camcontrol(8)

HISTORY
       camdd first appeared in FreeBSD 10.2

AUTHORS
       Kenneth Merry <ken@FreeBSD.org>

FreeBSD	14.3		       November	11, 2015		      CAMDD(8)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=camdd&manpath=FreeBSD+14.3-RELEASE+and+Ports>

home | help