Changeset dd8b6a8 in mainline for uspace/drv/bus/usb/usbmast/scsi_ms.c
- Timestamp:
- 2014-08-27T23:56:16Z (11 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 95fe55ca
- Parents:
- f27f3fd
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/usbmast/scsi_ms.c
rf27f3fd rdd8b6a8 383 383 } 384 384 385 /** Perform SCSI Synchronize Cache command on USB mass storage device. 386 * 387 * @param mfun Mass storage function 388 * @param ba Address of first block 389 * @param nblocks Number of blocks to read 390 * @param data Data to write 391 * 392 * @return Error code 393 */ 394 int usbmast_sync_cache(usbmast_fun_t *mfun, uint64_t ba, size_t nblocks) 395 { 396 scsi_cmd_t cmd; 397 scsi_cdb_sync_cache_10_t cdb; 398 int rc; 399 400 if (ba > UINT32_MAX) 401 return ELIMIT; 402 403 if (nblocks > UINT16_MAX) 404 return ELIMIT; 405 406 memset(&cdb, 0, sizeof(cdb)); 407 cdb.op_code = SCSI_CMD_SYNC_CACHE_10; 408 cdb.lba = host2uint32_t_be(ba); 409 cdb.numlb = host2uint16_t_be(nblocks); 410 411 memset(&cmd, 0, sizeof(cmd)); 412 cmd.cdb = &cdb; 413 cmd.cdb_size = sizeof(cdb); 414 415 rc = usbmast_run_cmd(mfun, &cmd); 416 417 if (rc != EOK) { 418 usb_log_error("Synchronize Cache (10) transport failed, device %s: %s.\n", 419 ddf_dev_get_name(mfun->mdev->ddf_dev), str_error(rc)); 420 return rc; 421 } 422 423 if (cmd.status != CMDS_GOOD) { 424 usb_log_error("Synchronize Cache (10) command failed, device %s.\n", 425 ddf_dev_get_name(mfun->mdev->ddf_dev)); 426 return EIO; 427 } 428 429 return EOK; 430 } 431 385 432 /** 386 433 * @}
Note:
See TracChangeset
for help on using the changeset viewer.