Messages in this thread | | | Date | Thu, 4 May 2023 09:17:49 +0100 | Subject | Re: [PATCH RFC 14/16] scsi: sd: Add WRITE_ATOMIC_16 support | From | John Garry <> |
| |
On 03/05/2023 19:48, Bart Van Assche wrote: > On 5/3/23 11:38, John Garry wrote: >> +static blk_status_t sd_setup_atomic_cmnd(struct scsi_cmnd *cmd, >> + sector_t lba, unsigned int nr_blocks, >> + unsigned char flags) >> +{ >> + cmd->cmd_len = 16; >> + cmd->cmnd[0] = WRITE_ATOMIC_16; >> + cmd->cmnd[1] = flags; >> + put_unaligned_be64(lba, &cmd->cmnd[2]); >> + cmd->cmnd[10] = 0; >> + cmd->cmnd[11] = 0; >> + put_unaligned_be16(nr_blocks, &cmd->cmnd[12]); >> + cmd->cmnd[14] = 0; >> + cmd->cmnd[15] = 0; >> + >> + return BLK_STS_OK; >> +} > > A single space in front of the assignment operator please.
ok
> >> + >> static blk_status_t sd_setup_read_write_cmnd(struct scsi_cmnd *cmd) >> { >> struct request *rq = scsi_cmd_to_rq(cmd); >> @@ -1149,6 +1166,7 @@ static blk_status_t >> sd_setup_read_write_cmnd(struct scsi_cmnd *cmd) >> unsigned int nr_blocks = sectors_to_logical(sdp, >> blk_rq_sectors(rq)); >> unsigned int mask = logical_to_sectors(sdp, 1) - 1; >> bool write = rq_data_dir(rq) == WRITE; >> + bool atomic_write = !!(rq->cmd_flags & REQ_ATOMIC) && write; > > Isn't the !! superfluous in the above expression? I have not yet seen > any other kernel code where a flag test is used in a boolean expression > and where !! occurs in front of the flag test.
So you think that && means that (rq->cmd_flags & REQ_ATOMIC) will be auto a bool. Fine, I can change that.
Thanks, John
| |