Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
77dfce07
Commit
77dfce07
authored
Nov 25, 2011
by
Cong Wang
Committed by
Cong Wang
Mar 20, 2012
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
scsi: remove the second argument of k[un]map_atomic()
Signed-off-by:
Cong Wang
<
amwang@redhat.com
>
parent
4679026d
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
64 additions
and
69 deletions
+64
-69
drivers/scsi/arcmsr/arcmsr_hba.c
drivers/scsi/arcmsr/arcmsr_hba.c
+4
-4
drivers/scsi/bnx2fc/bnx2fc_fcoe.c
drivers/scsi/bnx2fc/bnx2fc_fcoe.c
+2
-3
drivers/scsi/cxgbi/libcxgbi.c
drivers/scsi/cxgbi/libcxgbi.c
+2
-3
drivers/scsi/fcoe/fcoe.c
drivers/scsi/fcoe/fcoe.c
+2
-2
drivers/scsi/fcoe/fcoe_transport.c
drivers/scsi/fcoe/fcoe_transport.c
+2
-3
drivers/scsi/gdth.c
drivers/scsi/gdth.c
+2
-2
drivers/scsi/ips.c
drivers/scsi/ips.c
+3
-3
drivers/scsi/isci/request.c
drivers/scsi/isci/request.c
+8
-8
drivers/scsi/libfc/fc_fcp.c
drivers/scsi/libfc/fc_fcp.c
+4
-4
drivers/scsi/libfc/fc_libfc.c
drivers/scsi/libfc/fc_libfc.c
+3
-5
drivers/scsi/libfc/fc_libfc.h
drivers/scsi/libfc/fc_libfc.h
+1
-1
drivers/scsi/libfc/fc_lport.c
drivers/scsi/libfc/fc_lport.c
+1
-1
drivers/scsi/libiscsi_tcp.c
drivers/scsi/libiscsi_tcp.c
+2
-2
drivers/scsi/libsas/sas_host_smp.c
drivers/scsi/libsas/sas_host_smp.c
+4
-4
drivers/scsi/megaraid.c
drivers/scsi/megaraid.c
+2
-2
drivers/scsi/mvsas/mv_sas.c
drivers/scsi/mvsas/mv_sas.c
+2
-2
drivers/scsi/scsi_debug.c
drivers/scsi/scsi_debug.c
+12
-12
drivers/scsi/scsi_lib.c
drivers/scsi/scsi_lib.c
+2
-2
drivers/scsi/sd_dif.c
drivers/scsi/sd_dif.c
+6
-6
No files found.
drivers/scsi/arcmsr/arcmsr_hba.c
View file @
77dfce07
...
...
@@ -1736,7 +1736,7 @@ static int arcmsr_iop_message_xfer(struct AdapterControlBlock *acb,
(
uint32_t
)
cmd
->
cmnd
[
8
];
/* 4 bytes: Areca io control code */
sg
=
scsi_sglist
(
cmd
);
buffer
=
kmap_atomic
(
sg_page
(
sg
)
,
KM_IRQ0
)
+
sg
->
offset
;
buffer
=
kmap_atomic
(
sg_page
(
sg
))
+
sg
->
offset
;
if
(
scsi_sg_count
(
cmd
)
>
1
)
{
retvalue
=
ARCMSR_MESSAGE_FAIL
;
goto
message_out
;
...
...
@@ -1985,7 +1985,7 @@ static int arcmsr_iop_message_xfer(struct AdapterControlBlock *acb,
}
message_out:
sg
=
scsi_sglist
(
cmd
);
kunmap_atomic
(
buffer
-
sg
->
offset
,
KM_IRQ0
);
kunmap_atomic
(
buffer
-
sg
->
offset
);
return
retvalue
;
}
...
...
@@ -2035,11 +2035,11 @@ static void arcmsr_handle_virtual_command(struct AdapterControlBlock *acb,
strncpy
(
&
inqdata
[
32
],
"R001"
,
4
);
/* Product Revision */
sg
=
scsi_sglist
(
cmd
);
buffer
=
kmap_atomic
(
sg_page
(
sg
)
,
KM_IRQ0
)
+
sg
->
offset
;
buffer
=
kmap_atomic
(
sg_page
(
sg
))
+
sg
->
offset
;
memcpy
(
buffer
,
inqdata
,
sizeof
(
inqdata
));
sg
=
scsi_sglist
(
cmd
);
kunmap_atomic
(
buffer
-
sg
->
offset
,
KM_IRQ0
);
kunmap_atomic
(
buffer
-
sg
->
offset
);
cmd
->
scsi_done
(
cmd
);
}
...
...
drivers/scsi/bnx2fc/bnx2fc_fcoe.c
View file @
77dfce07
...
...
@@ -322,8 +322,7 @@ static int bnx2fc_xmit(struct fc_lport *lport, struct fc_frame *fp)
return
-
ENOMEM
;
}
frag
=
&
skb_shinfo
(
skb
)
->
frags
[
skb_shinfo
(
skb
)
->
nr_frags
-
1
];
cp
=
kmap_atomic
(
skb_frag_page
(
frag
),
KM_SKB_DATA_SOFTIRQ
)
+
frag
->
page_offset
;
cp
=
kmap_atomic
(
skb_frag_page
(
frag
))
+
frag
->
page_offset
;
}
else
{
cp
=
(
struct
fcoe_crc_eof
*
)
skb_put
(
skb
,
tlen
);
}
...
...
@@ -332,7 +331,7 @@ static int bnx2fc_xmit(struct fc_lport *lport, struct fc_frame *fp)
cp
->
fcoe_eof
=
eof
;
cp
->
fcoe_crc32
=
cpu_to_le32
(
~
crc
);
if
(
skb_is_nonlinear
(
skb
))
{
kunmap_atomic
(
cp
,
KM_SKB_DATA_SOFTIRQ
);
kunmap_atomic
(
cp
);
cp
=
NULL
;
}
...
...
drivers/scsi/cxgbi/libcxgbi.c
View file @
77dfce07
...
...
@@ -1956,12 +1956,11 @@ int cxgbi_conn_init_pdu(struct iscsi_task *task, unsigned int offset,
/* data fits in the skb's headroom */
for
(
i
=
0
;
i
<
tdata
->
nr_frags
;
i
++
,
frag
++
)
{
char
*
src
=
kmap_atomic
(
frag
->
page
,
KM_SOFTIRQ0
);
char
*
src
=
kmap_atomic
(
frag
->
page
);
memcpy
(
dst
,
src
+
frag
->
offset
,
frag
->
size
);
dst
+=
frag
->
size
;
kunmap_atomic
(
src
,
KM_SOFTIRQ0
);
kunmap_atomic
(
src
);
}
if
(
padlen
)
{
memset
(
dst
,
0
,
padlen
);
...
...
drivers/scsi/fcoe/fcoe.c
View file @
77dfce07
...
...
@@ -1515,7 +1515,7 @@ static int fcoe_xmit(struct fc_lport *lport, struct fc_frame *fp)
return
-
ENOMEM
;
}
frag
=
&
skb_shinfo
(
skb
)
->
frags
[
skb_shinfo
(
skb
)
->
nr_frags
-
1
];
cp
=
kmap_atomic
(
skb_frag_page
(
frag
)
,
KM_SKB_DATA_SOFTIRQ
)
cp
=
kmap_atomic
(
skb_frag_page
(
frag
))
+
frag
->
page_offset
;
}
else
{
cp
=
(
struct
fcoe_crc_eof
*
)
skb_put
(
skb
,
tlen
);
...
...
@@ -1526,7 +1526,7 @@ static int fcoe_xmit(struct fc_lport *lport, struct fc_frame *fp)
cp
->
fcoe_crc32
=
cpu_to_le32
(
~
crc
);
if
(
skb_is_nonlinear
(
skb
))
{
kunmap_atomic
(
cp
,
KM_SKB_DATA_SOFTIRQ
);
kunmap_atomic
(
cp
);
cp
=
NULL
;
}
...
...
drivers/scsi/fcoe/fcoe_transport.c
View file @
77dfce07
...
...
@@ -210,10 +210,9 @@ u32 fcoe_fc_crc(struct fc_frame *fp)
while
(
len
>
0
)
{
clen
=
min
(
len
,
PAGE_SIZE
-
(
off
&
~
PAGE_MASK
));
data
=
kmap_atomic
(
skb_frag_page
(
frag
)
+
(
off
>>
PAGE_SHIFT
),
KM_SKB_DATA_SOFTIRQ
);
skb_frag_page
(
frag
)
+
(
off
>>
PAGE_SHIFT
));
crc
=
crc32
(
crc
,
data
+
(
off
&
~
PAGE_MASK
),
clen
);
kunmap_atomic
(
data
,
KM_SKB_DATA_SOFTIRQ
);
kunmap_atomic
(
data
);
off
+=
clen
;
len
-=
clen
;
}
...
...
drivers/scsi/gdth.c
View file @
77dfce07
...
...
@@ -2310,10 +2310,10 @@ static void gdth_copy_internal_data(gdth_ha_str *ha, Scsi_Cmnd *scp,
return
;
}
local_irq_save
(
flags
);
address
=
kmap_atomic
(
sg_page
(
sl
)
,
KM_BIO_SRC_IRQ
)
+
sl
->
offset
;
address
=
kmap_atomic
(
sg_page
(
sl
))
+
sl
->
offset
;
memcpy
(
address
,
buffer
,
cpnow
);
flush_dcache_page
(
sg_page
(
sl
));
kunmap_atomic
(
address
,
KM_BIO_SRC_IRQ
);
kunmap_atomic
(
address
);
local_irq_restore
(
flags
);
if
(
cpsum
==
cpcount
)
break
;
...
...
drivers/scsi/ips.c
View file @
77dfce07
...
...
@@ -1511,14 +1511,14 @@ static int ips_is_passthru(struct scsi_cmnd *SC)
/* kmap_atomic() ensures addressability of the user buffer.*/
/* local_irq_save() protects the KM_IRQ0 address slot. */
local_irq_save
(
flags
);
buffer
=
kmap_atomic
(
sg_page
(
sg
)
,
KM_IRQ0
)
+
sg
->
offset
;
buffer
=
kmap_atomic
(
sg_page
(
sg
))
+
sg
->
offset
;
if
(
buffer
&&
buffer
[
0
]
==
'C'
&&
buffer
[
1
]
==
'O'
&&
buffer
[
2
]
==
'P'
&&
buffer
[
3
]
==
'P'
)
{
kunmap_atomic
(
buffer
-
sg
->
offset
,
KM_IRQ0
);
kunmap_atomic
(
buffer
-
sg
->
offset
);
local_irq_restore
(
flags
);
return
1
;
}
kunmap_atomic
(
buffer
-
sg
->
offset
,
KM_IRQ0
);
kunmap_atomic
(
buffer
-
sg
->
offset
);
local_irq_restore
(
flags
);
}
return
0
;
...
...
drivers/scsi/isci/request.c
View file @
77dfce07
...
...
@@ -1304,9 +1304,9 @@ sci_stp_request_pio_data_in_copy_data_buffer(struct isci_stp_request *stp_req,
struct
page
*
page
=
sg_page
(
sg
);
copy_len
=
min_t
(
int
,
total_len
,
sg_dma_len
(
sg
));
kaddr
=
kmap_atomic
(
page
,
KM_IRQ0
);
kaddr
=
kmap_atomic
(
page
);
memcpy
(
kaddr
+
sg
->
offset
,
src_addr
,
copy_len
);
kunmap_atomic
(
kaddr
,
KM_IRQ0
);
kunmap_atomic
(
kaddr
);
total_len
-=
copy_len
;
src_addr
+=
copy_len
;
sg
=
sg_next
(
sg
);
...
...
@@ -1654,7 +1654,7 @@ sci_io_request_frame_handler(struct isci_request *ireq,
sci_unsolicited_frame_control_get_header
(
&
ihost
->
uf_control
,
frame_index
,
&
frame_header
);
kaddr
=
kmap_atomic
(
sg_page
(
sg
)
,
KM_IRQ0
);
kaddr
=
kmap_atomic
(
sg_page
(
sg
));
rsp
=
kaddr
+
sg
->
offset
;
sci_swab32_cpy
(
rsp
,
frame_header
,
1
);
...
...
@@ -1691,7 +1691,7 @@ sci_io_request_frame_handler(struct isci_request *ireq,
ireq
->
sci_status
=
SCI_FAILURE_CONTROLLER_SPECIFIC_IO_ERR
;
sci_change_state
(
&
ireq
->
sm
,
SCI_REQ_COMPLETED
);
}
kunmap_atomic
(
kaddr
,
KM_IRQ0
);
kunmap_atomic
(
kaddr
);
sci_controller_release_frame
(
ihost
,
frame_index
);
...
...
@@ -3023,10 +3023,10 @@ static void isci_request_io_request_complete(struct isci_host *ihost,
dma_unmap_sg
(
&
ihost
->
pdev
->
dev
,
sg
,
1
,
DMA_TO_DEVICE
);
/* need to swab it back in case the command buffer is re-used */
kaddr
=
kmap_atomic
(
sg_page
(
sg
)
,
KM_IRQ0
);
kaddr
=
kmap_atomic
(
sg_page
(
sg
));
smp_req
=
kaddr
+
sg
->
offset
;
sci_swab32_cpy
(
smp_req
,
smp_req
,
sg
->
length
/
sizeof
(
u32
));
kunmap_atomic
(
kaddr
,
KM_IRQ0
);
kunmap_atomic
(
kaddr
);
break
;
}
default:
...
...
@@ -3311,7 +3311,7 @@ sci_io_request_construct_smp(struct device *dev,
u8
req_len
;
u32
cmd
;
kaddr
=
kmap_atomic
(
sg_page
(
sg
)
,
KM_IRQ0
);
kaddr
=
kmap_atomic
(
sg_page
(
sg
));
smp_req
=
kaddr
+
sg
->
offset
;
/*
* Look at the SMP requests' header fields; for certain SAS 1.x SMP
...
...
@@ -3337,7 +3337,7 @@ sci_io_request_construct_smp(struct device *dev,
req_len
=
smp_req
->
req_len
;
sci_swab32_cpy
(
smp_req
,
smp_req
,
sg
->
length
/
sizeof
(
u32
));
cmd
=
*
(
u32
*
)
smp_req
;
kunmap_atomic
(
kaddr
,
KM_IRQ0
);
kunmap_atomic
(
kaddr
);
if
(
!
dma_map_sg
(
dev
,
sg
,
1
,
DMA_TO_DEVICE
))
return
SCI_FAILURE
;
...
...
drivers/scsi/libfc/fc_fcp.c
View file @
77dfce07
...
...
@@ -485,11 +485,11 @@ static void fc_fcp_recv_data(struct fc_fcp_pkt *fsp, struct fc_frame *fp)
if
(
!
(
fr_flags
(
fp
)
&
FCPHF_CRC_UNCHECKED
))
{
copy_len
=
fc_copy_buffer_to_sglist
(
buf
,
len
,
sg
,
&
nents
,
&
offset
,
KM_SOFTIRQ0
,
NULL
);
&
offset
,
NULL
);
}
else
{
crc
=
crc32
(
~
0
,
(
u8
*
)
fh
,
sizeof
(
*
fh
));
copy_len
=
fc_copy_buffer_to_sglist
(
buf
,
len
,
sg
,
&
nents
,
&
offset
,
KM_SOFTIRQ0
,
&
crc
);
&
offset
,
&
crc
);
buf
=
fc_frame_payload_get
(
fp
,
0
);
if
(
len
%
4
)
crc
=
crc32
(
crc
,
buf
+
len
,
4
-
(
len
%
4
));
...
...
@@ -650,10 +650,10 @@ static int fc_fcp_send_data(struct fc_fcp_pkt *fsp, struct fc_seq *seq,
* The scatterlist item may be bigger than PAGE_SIZE,
* but we must not cross pages inside the kmap.
*/
page_addr
=
kmap_atomic
(
page
,
KM_SOFTIRQ0
);
page_addr
=
kmap_atomic
(
page
);
memcpy
(
data
,
(
char
*
)
page_addr
+
(
off
&
~
PAGE_MASK
),
sg_bytes
);
kunmap_atomic
(
page_addr
,
KM_SOFTIRQ0
);
kunmap_atomic
(
page_addr
);
data
+=
sg_bytes
;
}
offset
+=
sg_bytes
;
...
...
drivers/scsi/libfc/fc_libfc.c
View file @
77dfce07
...
...
@@ -105,14 +105,13 @@ module_exit(libfc_exit);
* @sg: pointer to the pointer of the SG list.
* @nents: pointer to the remaining number of entries in the SG list.
* @offset: pointer to the current offset in the SG list.
* @km_type: dedicated page table slot type for kmap_atomic.
* @crc: pointer to the 32-bit crc value.
* If crc is NULL, CRC is not calculated.
*/
u32
fc_copy_buffer_to_sglist
(
void
*
buf
,
size_t
len
,
struct
scatterlist
*
sg
,
u32
*
nents
,
size_t
*
offset
,
enum
km_type
km_type
,
u32
*
crc
)
u32
*
crc
)
{
size_t
remaining
=
len
;
u32
copy_len
=
0
;
...
...
@@ -142,12 +141,11 @@ u32 fc_copy_buffer_to_sglist(void *buf, size_t len,
off
=
*
offset
+
sg
->
offset
;
sg_bytes
=
min
(
sg_bytes
,
(
size_t
)(
PAGE_SIZE
-
(
off
&
~
PAGE_MASK
)));
page_addr
=
kmap_atomic
(
sg_page
(
sg
)
+
(
off
>>
PAGE_SHIFT
),
km_type
);
page_addr
=
kmap_atomic
(
sg_page
(
sg
)
+
(
off
>>
PAGE_SHIFT
));
if
(
crc
)
*
crc
=
crc32
(
*
crc
,
buf
,
sg_bytes
);
memcpy
((
char
*
)
page_addr
+
(
off
&
~
PAGE_MASK
),
buf
,
sg_bytes
);
kunmap_atomic
(
page_addr
,
km_type
);
kunmap_atomic
(
page_addr
);
buf
+=
sg_bytes
;
*
offset
+=
sg_bytes
;
remaining
-=
sg_bytes
;
...
...
drivers/scsi/libfc/fc_libfc.h
View file @
77dfce07
...
...
@@ -134,6 +134,6 @@ extern void fc_fc4_conf_lport_params(struct fc_lport *, enum fc_fh_type);
u32
fc_copy_buffer_to_sglist
(
void
*
buf
,
size_t
len
,
struct
scatterlist
*
sg
,
u32
*
nents
,
size_t
*
offset
,
enum
km_type
km_type
,
u32
*
crc
);
u32
*
crc
);
#endif
/* _FC_LIBFC_H_ */
drivers/scsi/libfc/fc_lport.c
View file @
77dfce07
...
...
@@ -1698,7 +1698,7 @@ static void fc_lport_bsg_resp(struct fc_seq *sp, struct fc_frame *fp,
job
->
reply
->
reply_payload_rcv_len
+=
fc_copy_buffer_to_sglist
(
buf
,
len
,
info
->
sg
,
&
info
->
nents
,
&
info
->
offset
,
KM_BIO_SRC_IRQ
,
NULL
);
&
info
->
offset
,
NULL
);
if
(
fr_eof
(
fp
)
==
FC_EOF_T
&&
(
ntoh24
(
fh
->
fh_f_ctl
)
&
(
FC_FC_LAST_SEQ
|
FC_FC_END_SEQ
))
==
...
...
drivers/scsi/libiscsi_tcp.c
View file @
77dfce07
...
...
@@ -135,7 +135,7 @@ static void iscsi_tcp_segment_map(struct iscsi_segment *segment, int recv)
if
(
recv
)
{
segment
->
atomic_mapped
=
true
;
segment
->
sg_mapped
=
kmap_atomic
(
sg_page
(
sg
)
,
KM_SOFTIRQ0
);
segment
->
sg_mapped
=
kmap_atomic
(
sg_page
(
sg
));
}
else
{
segment
->
atomic_mapped
=
false
;
/* the xmit path can sleep with the page mapped so use kmap */
...
...
@@ -149,7 +149,7 @@ void iscsi_tcp_segment_unmap(struct iscsi_segment *segment)
{
if
(
segment
->
sg_mapped
)
{
if
(
segment
->
atomic_mapped
)
kunmap_atomic
(
segment
->
sg_mapped
,
KM_SOFTIRQ0
);
kunmap_atomic
(
segment
->
sg_mapped
);
else
kunmap
(
sg_page
(
segment
->
sg
));
segment
->
sg_mapped
=
NULL
;
...
...
drivers/scsi/libsas/sas_host_smp.c
View file @
77dfce07
...
...
@@ -246,9 +246,9 @@ int sas_smp_host_handler(struct Scsi_Host *shost, struct request *req,
}
local_irq_disable
();
buf
=
kmap_atomic
(
bio_page
(
req
->
bio
)
,
KM_USER0
)
+
bio_offset
(
req
->
bio
);
buf
=
kmap_atomic
(
bio_page
(
req
->
bio
));
memcpy
(
req_data
,
buf
,
blk_rq_bytes
(
req
));
kunmap_atomic
(
buf
-
bio_offset
(
req
->
bio
)
,
KM_USER0
);
kunmap_atomic
(
buf
-
bio_offset
(
req
->
bio
));
local_irq_enable
();
if
(
req_data
[
0
]
!=
SMP_REQUEST
)
...
...
@@ -361,10 +361,10 @@ int sas_smp_host_handler(struct Scsi_Host *shost, struct request *req,
}
local_irq_disable
();
buf
=
kmap_atomic
(
bio_page
(
rsp
->
bio
)
,
KM_USER0
)
+
bio_offset
(
rsp
->
bio
);
buf
=
kmap_atomic
(
bio_page
(
rsp
->
bio
));
memcpy
(
buf
,
resp_data
,
blk_rq_bytes
(
rsp
));
flush_kernel_dcache_page
(
bio_page
(
rsp
->
bio
));
kunmap_atomic
(
buf
-
bio_offset
(
rsp
->
bio
)
,
KM_USER0
);
kunmap_atomic
(
buf
-
bio_offset
(
rsp
->
bio
));
local_irq_enable
();
out:
...
...
drivers/scsi/megaraid.c
View file @
77dfce07
...
...
@@ -670,10 +670,10 @@ mega_build_cmd(adapter_t *adapter, Scsi_Cmnd *cmd, int *busy)
struct
scatterlist
*
sg
;
sg
=
scsi_sglist
(
cmd
);
buf
=
kmap_atomic
(
sg_page
(
sg
)
,
KM_IRQ0
)
+
sg
->
offset
;
buf
=
kmap_atomic
(
sg_page
(
sg
))
+
sg
->
offset
;
memset
(
buf
,
0
,
cmd
->
cmnd
[
4
]);
kunmap_atomic
(
buf
-
sg
->
offset
,
KM_IRQ0
);
kunmap_atomic
(
buf
-
sg
->
offset
);
cmd
->
result
=
(
DID_OK
<<
16
);
cmd
->
scsi_done
(
cmd
);
...
...
drivers/scsi/mvsas/mv_sas.c
View file @
77dfce07
...
...
@@ -1885,11 +1885,11 @@ int mvs_slot_complete(struct mvs_info *mvi, u32 rx_desc, u32 flags)
case
SAS_PROTOCOL_SMP
:
{
struct
scatterlist
*
sg_resp
=
&
task
->
smp_task
.
smp_resp
;
tstat
->
stat
=
SAM_STAT_GOOD
;
to
=
kmap_atomic
(
sg_page
(
sg_resp
)
,
KM_IRQ0
);
to
=
kmap_atomic
(
sg_page
(
sg_resp
));
memcpy
(
to
+
sg_resp
->
offset
,
slot
->
response
+
sizeof
(
struct
mvs_err_info
),
sg_dma_len
(
sg_resp
));
kunmap_atomic
(
to
,
KM_IRQ0
);
kunmap_atomic
(
to
);
break
;
}
...
...
drivers/scsi/scsi_debug.c
View file @
77dfce07
...
...
@@ -1778,7 +1778,7 @@ static int prot_verify_read(struct scsi_cmnd *SCpnt, sector_t start_sec,
scsi_for_each_prot_sg
(
SCpnt
,
psgl
,
scsi_prot_sg_count
(
SCpnt
),
i
)
{
int
len
=
min
(
psgl
->
length
,
resid
);
paddr
=
kmap_atomic
(
sg_page
(
psgl
)
,
KM_IRQ0
)
+
psgl
->
offset
;
paddr
=
kmap_atomic
(
sg_page
(
psgl
))
+
psgl
->
offset
;
memcpy
(
paddr
,
dif_storep
+
dif_offset
(
sector
),
len
);
sector
+=
len
>>
3
;
...
...
@@ -1788,7 +1788,7 @@ static int prot_verify_read(struct scsi_cmnd *SCpnt, sector_t start_sec,
sector
=
do_div
(
tmp_sec
,
sdebug_store_sectors
);
}
resid
-=
len
;
kunmap_atomic
(
paddr
,
KM_IRQ0
);
kunmap_atomic
(
paddr
);
}
dix_reads
++
;
...
...
@@ -1881,12 +1881,12 @@ static int prot_verify_write(struct scsi_cmnd *SCpnt, sector_t start_sec,
BUG_ON
(
scsi_sg_count
(
SCpnt
)
==
0
);
BUG_ON
(
scsi_prot_sg_count
(
SCpnt
)
==
0
);
paddr
=
kmap_atomic
(
sg_page
(
psgl
)
,
KM_IRQ1
)
+
psgl
->
offset
;
paddr
=
kmap_atomic
(
sg_page
(
psgl
))
+
psgl
->
offset
;
ppage_offset
=
0
;
/* For each data page */
scsi_for_each_sg
(
SCpnt
,
dsgl
,
scsi_sg_count
(
SCpnt
),
i
)
{
daddr
=
kmap_atomic
(
sg_page
(
dsgl
)
,
KM_IRQ0
)
+
dsgl
->
offset
;
daddr
=
kmap_atomic
(
sg_page
(
dsgl
))
+
dsgl
->
offset
;
/* For each sector-sized chunk in data page */
for
(
j
=
0
;
j
<
dsgl
->
length
;
j
+=
scsi_debug_sector_size
)
{
...
...
@@ -1895,10 +1895,10 @@ static int prot_verify_write(struct scsi_cmnd *SCpnt, sector_t start_sec,
* protection page advance to the next one
*/
if
(
ppage_offset
>=
psgl
->
length
)
{
kunmap_atomic
(
paddr
,
KM_IRQ1
);
kunmap_atomic
(
paddr
);
psgl
=
sg_next
(
psgl
);
BUG_ON
(
psgl
==
NULL
);
paddr
=
kmap_atomic
(
sg_page
(
psgl
)
,
KM_IRQ1
)
paddr
=
kmap_atomic
(
sg_page
(
psgl
))
+
psgl
->
offset
;
ppage_offset
=
0
;
}
...
...
@@ -1971,10 +1971,10 @@ static int prot_verify_write(struct scsi_cmnd *SCpnt, sector_t start_sec,
ppage_offset
+=
sizeof
(
struct
sd_dif_tuple
);
}
kunmap_atomic
(
daddr
,
KM_IRQ0
);
kunmap_atomic
(
daddr
);
}
kunmap_atomic
(
paddr
,
KM_IRQ1
);
kunmap_atomic
(
paddr
);
dix_writes
++
;
...
...
@@ -1982,8 +1982,8 @@ static int prot_verify_write(struct scsi_cmnd *SCpnt, sector_t start_sec,
out:
dif_errors
++
;
kunmap_atomic
(
daddr
,
KM_IRQ0
);
kunmap_atomic
(
paddr
,
KM_IRQ1
);
kunmap_atomic
(
daddr
);
kunmap_atomic
(
paddr
);
return
ret
;
}
...
...
@@ -2303,7 +2303,7 @@ static int resp_xdwriteread(struct scsi_cmnd *scp, unsigned long long lba,
offset
=
0
;
for_each_sg
(
sdb
->
table
.
sgl
,
sg
,
sdb
->
table
.
nents
,
i
)
{
kaddr
=
(
unsigned
char
*
)
kmap_atomic
(
sg_page
(
sg
)
,
KM_USER0
);
kaddr
=
(
unsigned
char
*
)
kmap_atomic
(
sg_page
(
sg
));
if
(
!
kaddr
)
goto
out
;
...
...
@@ -2311,7 +2311,7 @@ static int resp_xdwriteread(struct scsi_cmnd *scp, unsigned long long lba,
*
(
kaddr
+
sg
->
offset
+
j
)
^=
*
(
buf
+
offset
+
j
);
offset
+=
sg
->
length
;
kunmap_atomic
(
kaddr
,
KM_USER0
);
kunmap_atomic
(
kaddr
);
}
ret
=
0
;
out:
...
...
drivers/scsi/scsi_lib.c
View file @
77dfce07
...
...
@@ -2567,7 +2567,7 @@ void *scsi_kmap_atomic_sg(struct scatterlist *sgl, int sg_count,
if
(
*
len
>
sg_len
)
*
len
=
sg_len
;
return
kmap_atomic
(
page
,
KM_BIO_SRC_IRQ
);
return
kmap_atomic
(
page
);
}
EXPORT_SYMBOL
(
scsi_kmap_atomic_sg
);
...
...
@@ -2577,6 +2577,6 @@ EXPORT_SYMBOL(scsi_kmap_atomic_sg);
*/
void
scsi_kunmap_atomic_sg
(
void
*
virt
)
{
kunmap_atomic
(
virt
,
KM_BIO_SRC_IRQ
);
kunmap_atomic
(
virt
);
}
EXPORT_SYMBOL
(
scsi_kunmap_atomic_sg
);
drivers/scsi/sd_dif.c
View file @
77dfce07
...
...
@@ -392,7 +392,7 @@ int sd_dif_prepare(struct request *rq, sector_t hw_sector, unsigned int sector_s
virt
=
bio
->
bi_integrity
->
bip_sector
&
0xffffffff
;
bip_for_each_vec
(
iv
,
bio
->
bi_integrity
,
i
)
{
sdt
=
kmap_atomic
(
iv
->
bv_page
,
KM_USER0
)
sdt
=
kmap_atomic
(
iv
->
bv_page
)
+
iv
->
bv_offset
;
for
(
j
=
0
;
j
<
iv
->
bv_len
;
j
+=
tuple_sz
,
sdt
++
)
{
...
...
@@ -405,7 +405,7 @@ int sd_dif_prepare(struct request *rq, sector_t hw_sector, unsigned int sector_s
phys
++
;
}
kunmap_atomic
(
sdt
,
KM_USER0
);
kunmap_atomic
(
sdt
);
}
bio
->
bi_flags
|=
(
1
<<
BIO_MAPPED_INTEGRITY
);
...
...
@@ -414,7 +414,7 @@ int sd_dif_prepare(struct request *rq, sector_t hw_sector, unsigned int sector_s
return
0
;
error:
kunmap_atomic
(
sdt
,
KM_USER0
);
kunmap_atomic
(
sdt
);
sd_printk
(
KERN_ERR
,
sdkp
,
"%s: virt %u, phys %u, ref %u, app %4x
\n
"
,
__func__
,
virt
,
phys
,
be32_to_cpu
(
sdt
->
ref_tag
),
be16_to_cpu
(
sdt
->
app_tag
));
...
...
@@ -453,13 +453,13 @@ void sd_dif_complete(struct scsi_cmnd *scmd, unsigned int good_bytes)
virt
=
bio
->
bi_integrity
->
bip_sector
&
0xffffffff
;
bip_for_each_vec
(
iv
,
bio
->
bi_integrity
,
i
)
{
sdt
=
kmap_atomic
(
iv
->
bv_page
,
KM_USER0
)
sdt
=
kmap_atomic
(
iv
->
bv_page
)
+
iv
->
bv_offset
;
for
(
j
=
0
;
j
<
iv
->
bv_len
;
j
+=
tuple_sz
,
sdt
++
)
{
if
(
sectors
==
0
)
{
kunmap_atomic
(
sdt
,
KM_USER0
);
kunmap_atomic
(
sdt
);
return
;
}
...
...
@@ -474,7 +474,7 @@ void sd_dif_complete(struct scsi_cmnd *scmd, unsigned int good_bytes)
sectors
--
;
}
kunmap_atomic
(
sdt
,
KM_USER0
);
kunmap_atomic
(
sdt
);
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment