RE: [RFC] [PATCH] helper function for retrieving scsi_cmd given host based block layer tag

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

 



> From: linux-scsi-owner@xxxxxxxxxxxxxxx
[mailto:linux-scsi-owner@xxxxxxxxxxxxxxx] On Behalf Of David C
> Somayajulu
> Sent: Friday, September 22, 2006 3:01 PM
> To: Jens Axboe
> Cc: James Bottomley; linux-scsi@xxxxxxxxxxxxxxx; Mike Christie; Doug
Maxey; David Wagner
> > I wonder if you are using the 'block' branch, not just the master
> > branch? It seems to apply perfectly there, but that is just the same
as
> > Linus' tree. So when you have cloned the block git repo, there are a
> > number of branches you can work against. The main branch with
current
> > changes is the 'block' branch, that is what you want to be making
> > patches against.
> >
> > I'll be away for the entire next week, so no rush on my end.
> >
> I think I got it right this time. Here it is.
> Thanks
> David Somayajulu
Jens,
I would appreciate if you can let me know if the last post of the above
patch was acceptable.
Thanks
David Somayajulu
> ---
> 
> diff --git a/block/ll_rw_blk.c b/block/ll_rw_blk.c
> index 4475fa4..a4a72bd 100644
> --- a/block/ll_rw_blk.c
> +++ b/block/ll_rw_blk.c
> @@ -840,12 +840,7 @@ EXPORT_SYMBOL(blk_queue_dma_alignment);
>   **/
>  struct request *blk_queue_find_tag(request_queue_t *q, int tag)
>  {
> -	struct blk_queue_tag *bqt = q->queue_tags;
> -
> -	if (unlikely(bqt == NULL || tag >= bqt->real_max_depth))
> -		return NULL;
> -
> -	return bqt->tag_index[tag];
> +	return blk_map_queue_find_tag(q->queue_tags, tag);
>  }
> 
>  EXPORT_SYMBOL(blk_queue_find_tag);
> diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
> index c55d470..10fd39d 100644
> --- a/include/linux/blkdev.h
> +++ b/include/linux/blkdev.h
> @@ -766,6 +766,14 @@ extern int blk_queue_resize_tags(request
>  extern void blk_queue_invalidate_tags(request_queue_t *);
>  extern long blk_congestion_wait(int rw, long timeout);
> 
> +static inline struct request *blk_map_queue_find_tag(struct
blk_queue_tag *bqt,
> +						int tag)
> +{
> +	if (unlikely(bqt == NULL || tag >= bqt->real_max_depth))
> +		return NULL;
> +	return bqt->tag_index[tag];
> +}
> +
>  extern void blk_rq_bio_prep(request_queue_t *, struct request *,
struct bio *);
>  extern int blkdev_issue_flush(struct block_device *, sector_t *);
> 
> diff --git a/include/scsi/scsi_tcq.h b/include/scsi/scsi_tcq.h
> index d1d9b10..01b7481 100644
> --- a/include/scsi/scsi_tcq.h
> +++ b/include/scsi/scsi_tcq.h
> @@ -131,5 +131,25 @@ static inline struct scsi_cmnd *scsi_fin
>  	return sdev->current_cmnd;
>  }
> 
> +/**
> + * scsi_host_find_tag - find the tagged command by host
> + * @shost:	pointer to scsi_host
> + * @tag:	tag of the scsi_cmnd
> + *
> + * Notes:
> + *	Only works with tags allocated by the generic blk layer.
> + **/
> +static inline struct scsi_cmnd *scsi_host_find_tag(struct Scsi_Host
*shost,
> +						int tag)
> +{
> +	struct request *req;
> +
> +	if (tag != SCSI_NO_TAG) {
> +		req = blk_map_queue_find_tag(shost->bqt, tag);
> +		return req ? (struct scsi_cmnd *)req->special : NULL;
> +	}
> +	return NULL;
> +}
> +
>  #endif /* CONFIG_BLOCK */
>  #endif /* _SCSI_SCSI_TCQ_H */
> 
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux