Re: [PATCH REPOST] rbd: be picky about osd request status type

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 01/04/2013 11:07 PM, Dan Mick wrote:
> I personally dislike "spaces after cast", but I haven't checked the
> kernel style guide.  Otherwise:
> 
> Reviewed-by: Dan Mick <dan.mick@xxxxxxxxxxx>

I think I'm probably in violation of the kernel style
guide too.

In fact, I just checked, and the indent(1) options for the
kernel specify that there should be no space after a cast.

I'll fix that, and will try hard to adjust my habits...

					-Alex
> 
> On 01/03/2013 02:40 PM, Alex Elder wrote:
>> The result field in a ceph osd reply header is a signed 32-bit type,
>> but rbd code often casually uses int to represent it.
>>
>> The following changes the types of variables that handle this result
>> value to be "s32" instead of "int" to be completely explicit about
>> it.  Only at the point we pass that result to __blk_end_request()
>> does the type get converted to the plain old int defined for that
>> interface.
>>
>> There is almost certainly no binary impact of this change, but I
>> prefer to show the exact size and signedness of the value since we
>> know it.
>>
>> Signed-off-by: Alex Elder <elder@xxxxxxxxxxx>
>> ---
>>   drivers/block/rbd.c |   23 ++++++++++++-----------
>>   1 file changed, 12 insertions(+), 11 deletions(-)
>>
>> diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
>> index 85131de..8b79a5b 100644
>> --- a/drivers/block/rbd.c
>> +++ b/drivers/block/rbd.c
>> @@ -171,7 +171,7 @@ struct rbd_client {
>>    */
>>   struct rbd_req_status {
>>       int done;
>> -    int rc;
>> +    s32 rc;
>>       u64 bytes;
>>   };
>>
>> @@ -1053,13 +1053,13 @@ static void rbd_destroy_ops(struct
>> ceph_osd_req_op *ops)
>>   static void rbd_coll_end_req_index(struct request *rq,
>>                      struct rbd_req_coll *coll,
>>                      int index,
>> -                   int ret, u64 len)
>> +                   s32 ret, u64 len)
>>   {
>>       struct request_queue *q;
>>       int min, max, i;
>>
>>       dout("rbd_coll_end_req_index %p index %d ret %d len %llu\n",
>> -         coll, index, ret, (unsigned long long) len);
>> +         coll, index, (int) ret, (unsigned long long) len);
>>
>>       if (!rq)
>>           return;
>> @@ -1080,7 +1080,7 @@ static void rbd_coll_end_req_index(struct
>> request *rq,
>>           max++;
>>
>>       for (i = min; i<max; i++) {
>> -        __blk_end_request(rq, coll->status[i].rc,
>> +        __blk_end_request(rq, (int) coll->status[i].rc,
>>                     coll->status[i].bytes);
>>           coll->num_done++;
>>           kref_put(&coll->kref, rbd_coll_release);
>> @@ -1089,7 +1089,7 @@ static void rbd_coll_end_req_index(struct
>> request *rq,
>>   }
>>
>>   static void rbd_coll_end_req(struct rbd_request *rbd_req,
>> -                 int ret, u64 len)
>> +                 s32 ret, u64 len)
>>   {
>>       rbd_coll_end_req_index(rbd_req->rq,
>>                   rbd_req->coll, rbd_req->coll_index,
>> @@ -1129,7 +1129,7 @@ static int rbd_do_request(struct request *rq,
>>       if (!rbd_req) {
>>           if (coll)
>>               rbd_coll_end_req_index(rq, coll, coll_index,
>> -                           -ENOMEM, len);
>> +                           (s32) -ENOMEM, len);
>>           return -ENOMEM;
>>       }
>>
>> @@ -1206,7 +1206,7 @@ done_err:
>>       bio_chain_put(rbd_req->bio);
>>       ceph_osdc_put_request(osd_req);
>>   done_pages:
>> -    rbd_coll_end_req(rbd_req, ret, len);
>> +    rbd_coll_end_req(rbd_req, (s32) ret, len);
>>       kfree(rbd_req);
>>       return ret;
>>   }
>> @@ -1219,7 +1219,7 @@ static void rbd_req_cb(struct ceph_osd_request
>> *osd_req, struct ceph_msg *msg)
>>       struct rbd_request *rbd_req = osd_req->r_priv;
>>       struct ceph_osd_reply_head *replyhead;
>>       struct ceph_osd_op *op;
>> -    __s32 rc;
>> +    s32 rc;
>>       u64 bytes;
>>       int read_op;
>>
>> @@ -1227,14 +1227,14 @@ static void rbd_req_cb(struct ceph_osd_request
>> *osd_req, struct ceph_msg *msg)
>>       replyhead = msg->front.iov_base;
>>       WARN_ON(le32_to_cpu(replyhead->num_ops) == 0);
>>       op = (void *)(replyhead + 1);
>> -    rc = le32_to_cpu(replyhead->result);
>> +    rc = (s32) le32_to_cpu(replyhead->result);
>>       bytes = le64_to_cpu(op->extent.length);
>>       read_op = (le16_to_cpu(op->op) == CEPH_OSD_OP_READ);
>>
>>       dout("rbd_req_cb bytes=%llu readop=%d rc=%d\n",
>>           (unsigned long long) bytes, read_op, (int) rc);
>>
>> -    if (rc == -ENOENT && read_op) {
>> +    if (rc == (s32) -ENOENT && read_op) {
>>           zero_bio_chain(rbd_req->bio, 0);
>>           rc = 0;
>>       } else if (rc == 0 && read_op && bytes < rbd_req->len) {
>> @@ -1679,7 +1679,8 @@ static void rbd_rq_fn(struct request_queue *q)
>>                           bio_chain, coll, cur_seg);
>>               else
>>                   rbd_coll_end_req_index(rq, coll, cur_seg,
>> -                               -ENOMEM, chain_size);
>> +                               (s32) -ENOMEM,
>> +                               chain_size);
>>               size -= chain_size;
>>               ofs += chain_size;
>>

--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux