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
Kirill Smelkov
linux
Commits
64ac28dd
Commit
64ac28dd
authored
Nov 20, 2002
by
Christoph Hellwig
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[PATCH] make a few more routines private to scsi_lib.c
parent
6295e6cf
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
35 additions
and
75 deletions
+35
-75
drivers/scsi/scsi.h
drivers/scsi/scsi.h
+0
-4
drivers/scsi/scsi_lib.c
drivers/scsi/scsi_lib.c
+35
-70
drivers/scsi/scsi_syms.c
drivers/scsi/scsi_syms.c
+0
-1
No files found.
drivers/scsi/scsi.h
View file @
64ac28dd
...
...
@@ -445,10 +445,6 @@ void scsi_free_sgtable(struct scatterlist *sgl, int index);
* Prototypes for functions in scsi_lib.c
*/
extern
int
scsi_maybe_unblock_host
(
Scsi_Device
*
SDpnt
);
extern
Scsi_Cmnd
*
scsi_end_request
(
Scsi_Cmnd
*
SCpnt
,
int
uptodate
,
int
sectors
);
extern
struct
Scsi_Device_Template
*
scsi_get_request_dev
(
struct
request
*
);
extern
int
scsi_init_cmd_errh
(
Scsi_Cmnd
*
SCpnt
);
extern
void
scsi_setup_cmd_retry
(
Scsi_Cmnd
*
SCpnt
);
extern
int
scsi_insert_special_cmd
(
Scsi_Cmnd
*
SCpnt
,
int
);
extern
void
scsi_io_completion
(
Scsi_Cmnd
*
SCpnt
,
int
good_sectors
,
...
...
drivers/scsi/scsi_lib.c
View file @
64ac28dd
...
...
@@ -95,7 +95,7 @@ int scsi_insert_special_req(Scsi_Request * SRpnt, int at_head)
* fields related to error handling. Typically this will
* be called once for each command, as required.
*/
int
scsi_init_cmd_errh
(
Scsi_Cmnd
*
SCpnt
)
static
int
scsi_init_cmd_errh
(
Scsi_Cmnd
*
SCpnt
)
{
SCpnt
->
owner
=
SCSI_OWNER_MIDLEVEL
;
SCpnt
->
reset_chain
=
NULL
;
...
...
@@ -306,11 +306,10 @@ void scsi_queue_next_request(request_queue_t * q, Scsi_Cmnd * SCpnt)
* We are guaranteeing that the request queue will be goosed
* at some point during this call.
*/
static
Scsi_Cmnd
*
__
scsi_end_request
(
Scsi_Cmnd
*
SCpnt
,
static
Scsi_Cmnd
*
scsi_end_request
(
Scsi_Cmnd
*
SCpnt
,
int
uptodate
,
int
sectors
,
int
requeue
,
int
frequeue
)
int
requeue
)
{
request_queue_t
*
q
=
&
SCpnt
->
device
->
request_queue
;
struct
request
*
req
=
SCpnt
->
request
;
...
...
@@ -337,12 +336,9 @@ static Scsi_Cmnd *__scsi_end_request(Scsi_Cmnd * SCpnt,
add_disk_randomness
(
req
->
rq_disk
);
spin_lock_irqsave
(
q
->
queue_lock
,
flags
);
if
(
blk_rq_tagged
(
req
))
blk_queue_end_tag
(
q
,
req
);
end_that_request_last
(
req
);
spin_unlock_irqrestore
(
q
->
queue_lock
,
flags
);
/*
...
...
@@ -350,38 +346,10 @@ static Scsi_Cmnd *__scsi_end_request(Scsi_Cmnd * SCpnt,
* need to worry about launching another command.
*/
__scsi_release_command
(
SCpnt
);
if
(
frequeue
)
scsi_queue_next_request
(
q
,
NULL
);
scsi_queue_next_request
(
q
,
NULL
);
return
NULL
;
}
/*
* Function: scsi_end_request()
*
* Purpose: Post-processing of completed commands called from interrupt
* handler or a bottom-half handler.
*
* Arguments: SCpnt - command that is complete.
* uptodate - 1 if I/O indicates success, 0 for I/O error.
* sectors - number of sectors we want to mark.
*
* Lock status: Assumed that lock is not held upon entry.
*
* Returns: Nothing
*
* Notes: This is called for block device requests in order to
* mark some number of sectors as complete.
*
* We are guaranteeing that the request queue will be goosed
* at some point during this call.
*/
Scsi_Cmnd
*
scsi_end_request
(
Scsi_Cmnd
*
SCpnt
,
int
uptodate
,
int
sectors
)
{
return
__scsi_end_request
(
SCpnt
,
uptodate
,
sectors
,
1
,
1
);
}
/*
* Function: scsi_release_buffers()
*
...
...
@@ -428,6 +396,29 @@ static void scsi_release_buffers(Scsi_Cmnd * SCpnt)
SCpnt
->
request_bufflen
=
0
;
}
/*
* Function: scsi_get_request_dev()
*
* Purpose: Find the upper-level driver that is responsible for this
* request
*
* Arguments: request - I/O request we are preparing to queue.
*
* Lock status: No locks assumed to be held, but as it happens the
* q->queue_lock is held when this is called.
*
* Returns: Nothing
*
* Notes: The requests in the request queue may have originated
* from any block device driver. We need to find out which
* one so that we can later form the appropriate command.
*/
static
struct
Scsi_Device_Template
*
scsi_get_request_dev
(
struct
request
*
req
)
{
struct
gendisk
*
p
=
req
->
rq_disk
;
return
p
?
*
(
struct
Scsi_Device_Template
**
)
p
->
private_data
:
NULL
;
}
/*
* Function: scsi_io_completion()
*
...
...
@@ -527,11 +518,7 @@ void scsi_io_completion(Scsi_Cmnd * SCpnt, int good_sectors,
* requeueing right here - we will requeue down below
* when we handle the bad sectors.
*/
SCpnt
=
__scsi_end_request
(
SCpnt
,
1
,
good_sectors
,
result
==
0
,
1
);
SCpnt
=
scsi_end_request
(
SCpnt
,
1
,
good_sectors
,
result
==
0
);
/*
* If the command completed without error, then either finish off the
...
...
@@ -574,7 +561,8 @@ void scsi_io_completion(Scsi_Cmnd * SCpnt, int good_sectors,
* and quietly refuse further access.
*/
SCpnt
->
device
->
changed
=
1
;
SCpnt
=
scsi_end_request
(
SCpnt
,
0
,
this_count
);
SCpnt
=
scsi_end_request
(
SCpnt
,
0
,
this_count
,
1
);
return
;
}
else
{
/*
...
...
@@ -606,14 +594,14 @@ void scsi_io_completion(Scsi_Cmnd * SCpnt, int good_sectors,
scsi_queue_next_request
(
q
,
SCpnt
);
result
=
0
;
}
else
{
SCpnt
=
scsi_end_request
(
SCpnt
,
0
,
this_count
);
SCpnt
=
scsi_end_request
(
SCpnt
,
0
,
this_count
,
1
);
return
;
}
break
;
case
NOT_READY
:
printk
(
KERN_INFO
"Device %s not ready.
\n
"
,
req
->
rq_disk
?
req
->
rq_disk
->
disk_name
:
""
);
SCpnt
=
scsi_end_request
(
SCpnt
,
0
,
this_count
);
SCpnt
=
scsi_end_request
(
SCpnt
,
0
,
this_count
,
1
);
return
;
break
;
case
MEDIUM_ERROR
:
...
...
@@ -623,7 +611,7 @@ void scsi_io_completion(Scsi_Cmnd * SCpnt, int good_sectors,
(
int
)
SCpnt
->
target
,
(
int
)
SCpnt
->
lun
);
print_command
(
SCpnt
->
data_cmnd
);
print_sense
(
"sd"
,
SCpnt
);
SCpnt
=
scsi_end_request
(
SCpnt
,
0
,
block_sectors
);
SCpnt
=
scsi_end_request
(
SCpnt
,
0
,
block_sectors
,
1
);
return
;
default:
break
;
...
...
@@ -656,34 +644,11 @@ void scsi_io_completion(Scsi_Cmnd * SCpnt, int good_sectors,
* We sometimes get this cruft in the event that a medium error
* isn't properly reported.
*/
SCpnt
=
scsi_end_request
(
SCpnt
,
0
,
req
->
current_nr_sectors
);
SCpnt
=
scsi_end_request
(
SCpnt
,
0
,
req
->
current_nr_sectors
,
1
);
return
;
}
}
/*
* Function: scsi_get_request_dev()
*
* Purpose: Find the upper-level driver that is responsible for this
* request
*
* Arguments: request - I/O request we are preparing to queue.
*
* Lock status: No locks assumed to be held, but as it happens the
* q->queue_lock is held when this is called.
*
* Returns: Nothing
*
* Notes: The requests in the request queue may have originated
* from any block device driver. We need to find out which
* one so that we can later form the appropriate command.
*/
struct
Scsi_Device_Template
*
scsi_get_request_dev
(
struct
request
*
req
)
{
struct
gendisk
*
p
=
req
->
rq_disk
;
return
p
?
*
(
struct
Scsi_Device_Template
**
)
p
->
private_data
:
NULL
;
}
/*
* Function: scsi_init_io()
*
...
...
@@ -763,7 +728,7 @@ static int scsi_init_io(Scsi_Cmnd *SCpnt)
/*
* kill it. there should be no leftover blocks in this request
*/
SCpnt
=
scsi_end_request
(
SCpnt
,
0
,
req
->
nr_sectors
);
SCpnt
=
scsi_end_request
(
SCpnt
,
0
,
req
->
nr_sectors
,
1
);
BUG_ON
(
SCpnt
);
ret
=
BLKPREP_KILL
;
out:
...
...
drivers/scsi/scsi_syms.c
View file @
64ac28dd
...
...
@@ -75,7 +75,6 @@ EXPORT_SYMBOL(scsi_free_host_dev);
EXPORT_SYMBOL
(
scsi_sleep
);
EXPORT_SYMBOL
(
scsi_io_completion
);
EXPORT_SYMBOL
(
scsi_end_request
);
EXPORT_SYMBOL
(
scsi_register_blocked_host
);
EXPORT_SYMBOL
(
scsi_deregister_blocked_host
);
...
...
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