aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordavem <davem>2002-02-10 00:44:10 +0000
committerdavem <davem>2002-02-10 00:44:10 +0000
commita049347b868bcbbf1e4c20ee9c1cb2624e598a17 (patch)
tree39fa6b9168f8b7383f7b8fcbd0db98cb96a679cc
parenteb4437a9904c7e0413ea54ab964db8c5b2fe6e6f (diff)
downloadnetdev-vger-cvs-a049347b868bcbbf1e4c20ee9c1cb2624e598a17.tar.gz
Merge errors.
-rw-r--r--drivers/scsi/scsi_debug.c13
-rw-r--r--drivers/scsi/sg.c11
2 files changed, 22 insertions, 2 deletions
diff --git a/drivers/scsi/scsi_debug.c b/drivers/scsi/scsi_debug.c
index 220f5aab8..48b82933b 100644
--- a/drivers/scsi/scsi_debug.c
+++ b/drivers/scsi/scsi_debug.c
@@ -89,6 +89,8 @@ static int scsi_debug_fake_blk0 = DEF_FAKE_BLK0;
/* Only use this in the actual kernel, not in the simulator. */
#define IMMEDIATE
+#define SDEBUG_SG_ADDRESS
+
#define START_PARTITION 4
/* Time to wait before completing a command */
@@ -511,9 +513,16 @@ unsigned char * sdebug_scatg2virt(const struct scatterlist * sclp)
{
if (NULL == sclp)
return NULL;
- else
+ else if (sclp->page)
return (unsigned char *)page_address(sclp->page) +
- sclp->offset;
+ sclp->offset;
+ else {
+#ifdef SDEBUG_SG_ADDRESS
+ return sclp->address;
+#else
+ return NULL;
+#endif
+ }
}
static int scsi_debug_read(Scsi_Cmnd * SCpnt, int upper_blk, int block,
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
index e59074258..62263c59d 100644
--- a/drivers/scsi/sg.c
+++ b/drivers/scsi/sg.c
@@ -76,6 +76,8 @@ static void sg_proc_cleanup(void);
#include <linux/version.h>
#endif /* LINUX_VERSION_CODE */
+#define SG_STILL_HAVE_ADDRESS_IN_SCATTERLIST
+
#define SG_ALLOW_DIO_DEF 0
#define SG_ALLOW_DIO_CODE /* compile out be commenting this define */
#ifdef SG_ALLOW_DIO_CODE
@@ -1712,6 +1714,9 @@ static int sg_build_dir(Sg_request * srp, Sg_fd * sfp, int dxfer_len)
rem_sz;
sclp->page = kp->maplist[k];
sclp->offset = offset;
+#ifdef SG_STILL_HAVE_ADDRESS_IN_SCATTERLIST
+ sclp->address = page_address(kp->maplist[k]) + offset;
+#endif
sclp->length = num;
mem_src_arr[k] = SG_USER_MEM;
rem_sz -= num;
@@ -1799,6 +1804,9 @@ static int sg_build_indi(Sg_scatter_hold * schp, Sg_fd * sfp, int buff_size)
}
sclp->page = virt_to_page(p);
sclp->offset = (unsigned long)p & ~PAGE_MASK;
+#ifdef SG_STILL_HAVE_ADDRESS_IN_SCATTERLIST
+ sclp->address = p;
+#endif
sclp->length = ret_sz;
mem_src_arr[k] = mem_src;
@@ -1959,6 +1967,9 @@ static void sg_remove_scat(Sg_scatter_hold * schp)
sg_free(sg_scatg2virt(sclp), sclp->length, mem_src);
sclp->page = NULL;
sclp->offset = 0;
+#ifdef SG_STILL_HAVE_ADDRESS_IN_SCATTERLIST
+ sclp->address = 0;
+#endif
sclp->length = 0;
}
sg_free(schp->buffer, schp->sglist_len, schp->buffer_mem_src);