[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1f4b5f00-ea97-b8d2-e01a-a33b2dde5548@oracle.com>
Date: Thu, 4 May 2023 09:17:49 +0100
From: John Garry <john.g.garry@...cle.com>
To: Bart Van Assche <bvanassche@....org>, axboe@...nel.dk,
kbusch@...nel.org, hch@....de, sagi@...mberg.me,
martin.petersen@...cle.com, djwong@...nel.org,
viro@...iv.linux.org.uk, brauner@...nel.org, dchinner@...hat.com,
jejb@...ux.ibm.com
Cc: linux-block@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-nvme@...ts.infradead.org, linux-scsi@...r.kernel.org,
linux-xfs@...r.kernel.org, linux-fsdevel@...r.kernel.org,
linux-security-module@...r.kernel.org, paul@...l-moore.com,
jmorris@...ei.org, serge@...lyn.com
Subject: Re: [PATCH RFC 14/16] scsi: sd: Add WRITE_ATOMIC_16 support
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
Powered by blists - more mailing lists