On Mon, Oct 22, 2007 at 08:10:58PM +0200, Jens Axboe wrote: > Signed-off-by: Jens Axboe <jens.axboe@xxxxxxxxxx> > --- You forgot s390's zfcp driver. But unfortunately the trivial fix below doesn't work. No more I/O possible. Swen and/or Christof could you provide a correct fix for this please? Thanks! --- drivers/s390/scsi/zfcp_def.h | 4 ++-- drivers/s390/scsi/zfcp_erp.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) Index: linux-2.6/drivers/s390/scsi/zfcp_def.h =================================================================== --- linux-2.6.orig/drivers/s390/scsi/zfcp_def.h +++ linux-2.6/drivers/s390/scsi/zfcp_def.h @@ -63,7 +63,7 @@ static inline void * zfcp_sg_to_address(struct scatterlist *list) { - return (void *) (page_address(list->page) + list->offset); + return (void *) (page_address(sg_page(list) + list->offset)); } /** @@ -74,7 +74,7 @@ zfcp_sg_to_address(struct scatterlist *l static inline void zfcp_address_to_sg(void *address, struct scatterlist *list) { - list->page = virt_to_page(address); + sg_set_page(list, virt_to_page(address)); list->offset = ((unsigned long) address) & (PAGE_SIZE - 1); } Index: linux-2.6/drivers/s390/scsi/zfcp_erp.c =================================================================== --- linux-2.6.orig/drivers/s390/scsi/zfcp_erp.c +++ linux-2.6/drivers/s390/scsi/zfcp_erp.c @@ -363,7 +363,7 @@ zfcp_erp_adisc(struct zfcp_port *port) retval = -ENOMEM; freemem: if (address != NULL) - __free_pages(send_els->req->page, 0); + __free_pages(sg_page(send_els->req), 0); if (send_els != NULL) { kfree(send_els->req); kfree(send_els->resp); @@ -437,7 +437,7 @@ zfcp_erp_adisc_handler(unsigned long dat out: zfcp_port_put(port); - __free_pages(send_els->req->page, 0); + __free_pages(sg_page(send_els->req), 0); kfree(send_els->req); kfree(send_els->resp); kfree(send_els); - To unsubscribe from this list: send the line "unsubscribe linux-s390" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html