---
name: "ata_exec_internal_sg"
section: "9"
platform: "linux"
package: "linux-manual-4.9"
version: "4.9.228-1"
release: "Debian 9 (Stretch)"
platforms: ["linux"]
url: "https://new.carta.tech/ata_exec_internal_sg"
---

# ata\_exec\_internal\_sg(9)

execute libata internal command

## NAME

ata\_exec\_internal\_sg - execute libata internal command

## SYNOPSIS

**unsigned ata\_exec\_internal\_sg(struct ata\_device \*** *dev***, struct ata\_taskfile \*** *tf***, const u8 \*** *cdb***, int** *dma\_dir***, struct scatterlist \*** *sgl***, unsigned int** *n\_elem***, unsigned long** *timeout***);**

## ARGUMENTS

*dev*

Device to which the command is sent

*tf*

Taskfile registers for the command and the result

*cdb*

CDB for packet command

*dma\_dir*

Data transfer direction of the command

*sgl*

sg list for the data buffer of the command

*n\_elem*

Number of sg entries

*timeout*

Timeout in msecs (0 for default)

## DESCRIPTION

Executes libata internal command with timeout. *tf* contains command on entry and result on return. Timeout and error conditions are reported via return value. No recovery action is taken after a command times out. It's caller's duty to clean up after timeout.

LOCKING: None. Should be called with kernel context, might sleep.

## RETURN

Zero on success, AC\_ERR\_\* mask on failure

## AUTHOR

**Jeff Garzik**

Author.

## COPYRIGHT
