Lines Matching refs:cmd

249 static int fd_do_rw(struct se_cmd *cmd, struct file *fd,  in fd_do_rw()  argument
257 loff_t pos = (cmd->t_task_lba * block_size); in fd_do_rw()
312 fd_execute_sync_cache(struct se_cmd *cmd) in fd_execute_sync_cache() argument
314 struct se_device *dev = cmd->se_dev; in fd_execute_sync_cache()
316 int immed = (cmd->t_task_cdb[1] & 0x2); in fd_execute_sync_cache()
325 target_complete_cmd(cmd, SAM_STAT_GOOD); in fd_execute_sync_cache()
330 if (cmd->t_task_lba == 0 && cmd->data_length == 0) { in fd_execute_sync_cache()
334 start = cmd->t_task_lba * dev->dev_attrib.block_size; in fd_execute_sync_cache()
335 if (cmd->data_length) in fd_execute_sync_cache()
336 end = start + cmd->data_length - 1; in fd_execute_sync_cache()
349 target_complete_cmd(cmd, SAM_STAT_CHECK_CONDITION); in fd_execute_sync_cache()
351 target_complete_cmd(cmd, SAM_STAT_GOOD); in fd_execute_sync_cache()
357 fd_execute_write_same(struct se_cmd *cmd) in fd_execute_write_same() argument
359 struct se_device *se_dev = cmd->se_dev; in fd_execute_write_same()
361 loff_t pos = cmd->t_task_lba * se_dev->dev_attrib.block_size; in fd_execute_write_same()
362 sector_t nolb = sbc_get_write_same_sectors(cmd); in fd_execute_write_same()
369 target_complete_cmd(cmd, SAM_STAT_GOOD); in fd_execute_write_same()
372 if (cmd->prot_op) { in fd_execute_write_same()
378 if (cmd->t_data_nents > 1 || in fd_execute_write_same()
379 cmd->t_data_sg[0].length != cmd->se_dev->dev_attrib.block_size) { in fd_execute_write_same()
382 cmd->t_data_nents, in fd_execute_write_same()
383 cmd->t_data_sg[0].length, in fd_execute_write_same()
384 cmd->se_dev->dev_attrib.block_size); in fd_execute_write_same()
393 bvec[i].bv_page = sg_page(&cmd->t_data_sg[0]); in fd_execute_write_same()
394 bvec[i].bv_len = cmd->t_data_sg[0].length; in fd_execute_write_same()
395 bvec[i].bv_offset = cmd->t_data_sg[0].offset; in fd_execute_write_same()
409 target_complete_cmd(cmd, SAM_STAT_GOOD); in fd_execute_write_same()
444 fd_do_prot_unmap(struct se_cmd *cmd, sector_t lba, sector_t nolb) in fd_do_prot_unmap() argument
456 rc = fd_do_prot_fill(cmd->se_dev, lba, nolb, buf, PAGE_SIZE); in fd_do_prot_unmap()
464 fd_execute_unmap(struct se_cmd *cmd, sector_t lba, sector_t nolb) in fd_execute_unmap() argument
466 struct file *file = FD_DEV(cmd->se_dev)->fd_file; in fd_execute_unmap()
470 if (cmd->se_dev->dev_attrib.pi_prot_type) { in fd_execute_unmap()
471 ret = fd_do_prot_unmap(cmd, lba, nolb); in fd_execute_unmap()
479 struct se_device *dev = cmd->se_dev; in fd_execute_unmap()
492 struct se_device *se_dev = cmd->se_dev; in fd_execute_unmap()
511 fd_execute_rw(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents, in fd_execute_rw() argument
514 struct se_device *dev = cmd->se_dev; in fd_execute_rw()
524 if (cmd->data_length > FD_MAX_BYTES) { in fd_execute_rw()
527 cmd->data_length, FD_MAX_BYTES); in fd_execute_rw()
535 if (cmd->prot_type && dev->dev_attrib.pi_prot_type) { in fd_execute_rw()
536 ret = fd_do_rw(cmd, pfile, dev->prot_length, in fd_execute_rw()
537 cmd->t_prot_sg, cmd->t_prot_nents, in fd_execute_rw()
538 cmd->prot_length, 0); in fd_execute_rw()
543 ret = fd_do_rw(cmd, file, dev->dev_attrib.block_size, in fd_execute_rw()
544 sgl, sgl_nents, cmd->data_length, 0); in fd_execute_rw()
546 if (ret > 0 && cmd->prot_type && dev->dev_attrib.pi_prot_type) { in fd_execute_rw()
547 u32 sectors = cmd->data_length >> in fd_execute_rw()
550 rc = sbc_dif_verify(cmd, cmd->t_task_lba, sectors, in fd_execute_rw()
551 0, cmd->t_prot_sg, 0); in fd_execute_rw()
556 if (cmd->prot_type && dev->dev_attrib.pi_prot_type) { in fd_execute_rw()
557 u32 sectors = cmd->data_length >> in fd_execute_rw()
560 rc = sbc_dif_verify(cmd, cmd->t_task_lba, sectors, in fd_execute_rw()
561 0, cmd->t_prot_sg, 0); in fd_execute_rw()
566 ret = fd_do_rw(cmd, file, dev->dev_attrib.block_size, in fd_execute_rw()
567 sgl, sgl_nents, cmd->data_length, 1); in fd_execute_rw()
573 if (ret > 0 && (cmd->se_cmd_flags & SCF_FUA)) { in fd_execute_rw()
574 loff_t start = cmd->t_task_lba * in fd_execute_rw()
578 if (cmd->data_length) in fd_execute_rw()
579 end = start + cmd->data_length - 1; in fd_execute_rw()
586 if (ret > 0 && cmd->prot_type && dev->dev_attrib.pi_prot_type) { in fd_execute_rw()
587 ret = fd_do_rw(cmd, pfile, dev->prot_length, in fd_execute_rw()
588 cmd->t_prot_sg, cmd->t_prot_nents, in fd_execute_rw()
589 cmd->prot_length, 1); in fd_execute_rw()
599 target_complete_cmd(cmd, SAM_STAT_GOOD); in fd_execute_rw()
803 fd_parse_cdb(struct se_cmd *cmd) in fd_parse_cdb() argument
805 return sbc_parse_cdb(cmd, &fd_sbc_ops); in fd_parse_cdb()