Merge tag 'scsi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi

Pull SCSI fixes from James Bottomley:
"This is a set of six patches consisting of:
- two MAINTAINER updates
- two scsi-mq fixs for the old parallel interface (not every request
is tagged and we need to set the right flags to populate the SPI
tag message)
- a fix for a memory leak in scatterlist traversal caused by a
preallocation update in 3.17
- an ipv6 fix for cxgbi"

[ The scatterlist fix also came in separately through the block layer tree ]

* tag 'scsi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
MAINTAINERS: ufs - remove self
MAINTAINERS: change hpsa and cciss maintainer
libcxgbi : support ipv6 address host_param
scsi: set REQ_QUEUE for the blk-mq case
Revert "block: all blk-mq requests are tagged"
lib/scatterlist: fix memory leak with scsi-mq

Changed files
+53 -19
drivers
include
linux
scsi
+6 -3
MAINTAINERS
··· 4312 4312 F: drivers/block/cpqarray.* 4313 4313 4314 4314 HEWLETT-PACKARD SMART ARRAY RAID DRIVER (hpsa) 4315 - M: "Stephen M. Cameron" <scameron@beardog.cce.hp.com> 4315 + M: Don Brace <don.brace@pmcs.com> 4316 4316 L: iss_storagedev@hp.com 4317 + L: storagedev@pmcs.com 4318 + L: linux-scsi@vger.kernel.org 4317 4319 S: Supported 4318 4320 F: Documentation/scsi/hpsa.txt 4319 4321 F: drivers/scsi/hpsa*.[ch] ··· 4323 4321 F: include/uapi/linux/cciss*.h 4324 4322 4325 4323 HEWLETT-PACKARD SMART CISS RAID DRIVER (cciss) 4326 - M: Mike Miller <mike.miller@hp.com> 4324 + M: Don Brace <don.brace@pmcs.com> 4327 4325 L: iss_storagedev@hp.com 4326 + L: storagedev@pmcs.com 4327 + L: linux-scsi@vger.kernel.org 4328 4328 S: Supported 4329 4329 F: Documentation/blockdev/cciss.txt 4330 4330 F: drivers/block/cciss* ··· 9610 9606 9611 9607 UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER 9612 9608 M: Vinayak Holikatti <vinholikatti@gmail.com> 9613 - M: Santosh Y <santoshsy@gmail.com> 9614 9609 L: linux-scsi@vger.kernel.org 9615 9610 S: Supported 9616 9611 F: Documentation/scsi/ufs.txt
+37 -5
drivers/scsi/cxgbi/libcxgbi.c
··· 399 399 * If the source port is outside our allocation range, the caller is 400 400 * responsible for keeping track of their port usage. 401 401 */ 402 + 403 + static struct cxgbi_sock *find_sock_on_port(struct cxgbi_device *cdev, 404 + unsigned char port_id) 405 + { 406 + struct cxgbi_ports_map *pmap = &cdev->pmap; 407 + unsigned int i; 408 + unsigned int used; 409 + 410 + if (!pmap->max_connect || !pmap->used) 411 + return NULL; 412 + 413 + spin_lock_bh(&pmap->lock); 414 + used = pmap->used; 415 + for (i = 0; used && i < pmap->max_connect; i++) { 416 + struct cxgbi_sock *csk = pmap->port_csk[i]; 417 + 418 + if (csk) { 419 + if (csk->port_id == port_id) { 420 + spin_unlock_bh(&pmap->lock); 421 + return csk; 422 + } 423 + used--; 424 + } 425 + } 426 + spin_unlock_bh(&pmap->lock); 427 + 428 + return NULL; 429 + } 430 + 402 431 static int sock_get_port(struct cxgbi_sock *csk) 403 432 { 404 433 struct cxgbi_device *cdev = csk->cdev; ··· 778 749 csk->daddr6.sin6_addr = daddr6->sin6_addr; 779 750 csk->daddr6.sin6_port = daddr6->sin6_port; 780 751 csk->daddr6.sin6_family = daddr6->sin6_family; 752 + csk->saddr6.sin6_family = daddr6->sin6_family; 781 753 csk->saddr6.sin6_addr = pref_saddr; 782 754 783 755 neigh_release(n); ··· 2677 2647 break; 2678 2648 case ISCSI_HOST_PARAM_IPADDRESS: 2679 2649 { 2680 - __be32 addr; 2681 - 2682 - addr = cxgbi_get_iscsi_ipv4(chba); 2683 - len = sprintf(buf, "%pI4", &addr); 2650 + struct cxgbi_sock *csk = find_sock_on_port(chba->cdev, 2651 + chba->port_id); 2652 + if (csk) { 2653 + len = sprintf(buf, "%pIS", 2654 + (struct sockaddr *)&csk->saddr); 2655 + } 2684 2656 log_debug(1 << CXGBI_DBG_ISCSI, 2685 - "hba %s, ipv4 %pI4.\n", chba->ndev->name, &addr); 2657 + "hba %s, addr %s.\n", chba->ndev->name, buf); 2686 2658 break; 2687 2659 } 2688 2660 default:
-5
drivers/scsi/cxgbi/libcxgbi.h
··· 700 700 chba->ndev->name); 701 701 } 702 702 703 - static inline __be32 cxgbi_get_iscsi_ipv4(struct cxgbi_hba *chba) 704 - { 705 - return chba->ipv4addr; 706 - } 707 - 708 703 struct cxgbi_device *cxgbi_device_register(unsigned int, unsigned int); 709 704 void cxgbi_device_unregister(struct cxgbi_device *); 710 705 void cxgbi_device_unregister_all(unsigned int flag);
+5
drivers/scsi/scsi_lib.c
··· 1893 1893 blk_mq_start_request(req); 1894 1894 } 1895 1895 1896 + if (blk_queue_tagged(q)) 1897 + req->cmd_flags |= REQ_QUEUED; 1898 + else 1899 + req->cmd_flags &= ~REQ_QUEUED; 1900 + 1896 1901 scsi_init_cmd_errh(cmd); 1897 1902 cmd->scsi_done = scsi_mq_done; 1898 1903
+1 -2
include/linux/blkdev.h
··· 1136 1136 /* 1137 1137 * tag stuff 1138 1138 */ 1139 - #define blk_rq_tagged(rq) \ 1140 - ((rq)->mq_ctx || ((rq)->cmd_flags & REQ_QUEUED)) 1139 + #define blk_rq_tagged(rq) ((rq)->cmd_flags & REQ_QUEUED) 1141 1140 extern int blk_queue_start_tag(struct request_queue *, struct request *); 1142 1141 extern struct request *blk_queue_find_tag(struct request_queue *, int); 1143 1142 extern void blk_queue_end_tag(struct request_queue *, struct request *);
+4 -4
include/scsi/scsi_tcq.h
··· 67 67 if (!sdev->tagged_supported) 68 68 return; 69 69 70 - if (!shost_use_blk_mq(sdev->host) && 71 - !blk_queue_tagged(sdev->request_queue)) 70 + if (shost_use_blk_mq(sdev->host)) 71 + queue_flag_set_unlocked(QUEUE_FLAG_QUEUED, sdev->request_queue); 72 + else if (!blk_queue_tagged(sdev->request_queue)) 72 73 blk_queue_init_tags(sdev->request_queue, depth, 73 74 sdev->host->bqt); 74 75 ··· 82 81 **/ 83 82 static inline void scsi_deactivate_tcq(struct scsi_device *sdev, int depth) 84 83 { 85 - if (!shost_use_blk_mq(sdev->host) && 86 - blk_queue_tagged(sdev->request_queue)) 84 + if (blk_queue_tagged(sdev->request_queue)) 87 85 blk_queue_free_tags(sdev->request_queue); 88 86 scsi_adjust_queue_depth(sdev, 0, depth); 89 87 }