target/file: Add WRITE_SAME w/ UNMAP=0 emulation support
authorNicholas Bellinger <nab@linux-iscsi.org>
Wed, 20 Feb 2013 01:30:34 +0000 (17:30 -0800)
committerNicholas Bellinger <nab@linux-iscsi.org>
Wed, 20 Feb 2013 20:29:04 +0000 (12:29 -0800)
commit7b745c84a9f4ad62db4b67053fbceb5d706451af
tree2c8886e676130abfa4682531eb5c01d57feb6e47
parent6e5459353de4ac80924e94fafa8b3e31a086c5dd
target/file: Add WRITE_SAME w/ UNMAP=0 emulation support

This patch adds support for emulation of WRITE_SAME w/ UNMAP=0 within
fd_execute_write_same() backend code.

The emulation uses vfs_writev() to submit a locally populated buffer
from the received WRITE_SAME scatterlist block for duplication, and by
default enforces a limit of max_write_same_len=0x1000 (8192) sectors up
to the limit of 1024 iovec entries for the single call to vfs_writev().

It also sets max_write_same_len to the operational default at setup ->
fd_configure_device() time.

Tested with 512, 1k, 2k, and 4k block_sizes.

(asias: convert to vzalloc)

Cc: Martin K. Petersen <martin.petersen@oracle.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Asias He <asias@redhat.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/target_core_file.c