From 10ebf80e7aea94a22d62f9270f5bfd41bb946875 Mon Sep 17 00:00:00 2001 From: Vladislav Bolkhovitin Date: Thu, 11 Dec 2014 04:27:17 +0000 Subject: [PATCH] Docs update git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@5931 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- doc/Makefile | 2 +- doc/fig2.png | Bin 28345 -> 42859 bytes doc/fig3.png | Bin 39441 -> 0 bytes doc/fig4.png | Bin 42859 -> 0 bytes doc/scst_pg.sgml | 2841 +++++++++++++++++++++----------------------- doc/sgv_cache.sgml | 335 ------ 6 files changed, 1361 insertions(+), 1817 deletions(-) delete mode 100644 doc/fig3.png delete mode 100644 doc/fig4.png delete mode 100644 doc/sgv_cache.sgml diff --git a/doc/Makefile b/doc/Makefile index 44257779d..d2b95bd76 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -8,7 +8,7 @@ RTFS = $(SRCS:.sgml=.rtf) COMMAND=linuxdoc --backend= -all: txt pdf html +all: pdf html txt: $(TXTS) diff --git a/doc/fig2.png b/doc/fig2.png index 3bdf882dc0aa5ce82b099aa72b328402e2a50ec4..667e4128971da7d71ed7bd8446e5260038acddc3 100644 GIT binary patch literal 42859 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 DM7$IA diff --git a/doc/fig3.png b/doc/fig3.png deleted file mode 100644 index e502f2dd31637f56d1646d316d2e821bdb07c1ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39441 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 HTNGRP%OM|3C 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 E2V -Generic SCSI Target Middle Level for Linux + +SCST technical description + Vladislav Bolkhovitin -Version 0.9.5 2006/12/01, actual for SCST 0.9.5 and later - - -This document describes SCSI target mid-level for Linux (SCST), its -architecture and drivers from the driver writer's point of view. - + +Version 3.0.0 for SCST 3.0.0 and later + Introduction -

-SCST is a SCSI target mid-level subsystem for Linux. It is designed to -provide unified, consistent interface between SCSI target drivers and -Linux kernel and simplify target drivers development as much as -possible. It has the following features: +

SCST is a SCSI target mid-level subsystem for Linux. It provides +unified consistent interface between SCSI target drivers, backend device +handlers and Linux kernel as well as simplifies target drivers +development as much as possible. + +It has the following features: - Very low overhead, fine-grained locks and simplest commands -processing path, which allow to reach maximum possible performance and -scalability that close to theoretical limit. - - Incoming requests can be processed in the caller's context or in -one of the internal SCST's tasklets, therefore no extra context switches -required. + Very low overhead and fine-grained locks, which allow to reach +maximum possible performance and scalability that close to theoretical +limit. Complete SMP support. - Undertakes most problems, related to execution contexts, thus -practically eliminating one of the most complicated problem in the -kernel drivers development. For example, target drivers for Marvell SAS -adapters or for InfiniBand SRP are less 3000 lines of code long. - Performs all required pre- and post- processing of incoming -requests and all necessary error recovery functionality. +requests and all necessary error recovery functionality. - Emulates necessary functionality of SCSI host adapter, because + Emulates necessary functionality of SCSI host adapters, because from a remote initiator's point of view SCST acts as a SCSI host with its own devices. Some of the emulated functions are the following: - + Generation of necessary UNIT ATTENTIONs, their storage and delivery to all connected remote initiators (sessions). - RESERVE/RELEASE functionality. + RESERVE/RELEASE functionality, including Persistent Reservations. - CA/ACA conditions. - All types of RESETs and other task management functions. - - REPORT LUNS command as well as SCSI address space management - in order to have consistent address space on all remote initiators, - since local SCSI devices could not know about each other to report - via REPORT LUNS command. Additionally, SCST responds with error on - all commands to non-existing devices and provides access control - (not implemented yet), so different remote initiators could see - different set of devices. + + REPORT LUNS command as well as SCSI address space + management in order to have consistent address space on all + remote initiators, since local SCSI devices could not know about + each other to report via REPORT LUNS command. Additionally, SCST + responds with error on all commands to non-existing devices and + provides access control, so different remote initiators could + see different set of devices. Other necessary functionality (task attributes, etc.) as specified in SAM-2, SPC-2, SAM-3, SPC-3 and other SCSI standards. - + - - Device handlers architecture provides extra reliability and -security via verifying all incoming requests and allows to make any -additional requests processing, which is completely independent from -target drivers, for example, data caching or device dependent -exceptional conditions treatment. + + Verifies all incoming requests to ensure commands execution +reliability and security. + + Device handlers architecture provides extra flexibility by +allowing to make additional requests processing, which is completely +independent from target drivers, for example, data caching or device +dependent exceptional conditions treatment. -Interoperability between SCST and local SCSI initiators (like sd, st) is -the additional issue that SCST is going to address (it is not -implemented yet). It is necessary, because local SCSI initiators can -change the state of the device, for example RESERVE the device, or some -of its parameters and that would be done behind SCST, which could lead -to various problems. Thus, RESERVE/RELEASE commands, locally generated -UNIT ATTENTIONs, etc. should be intercepted and processed as if local -SCSI initiators act as remote SCSI initiators connected to SCST. This -feature requires some the kernel modification. Since in the current -version it is not implemented, SCST and the target drivers are able to -work with any unpatched 2.4 kernel version. - -Interface between SCST and the target drivers is based on work, done by -University of New Hampshire Interoperability Labs (UNH IOL). - -All described below data structures and function could be found in -. - Terms and Definitions -

+SCST Architecture +SCST Core Architecture -

+

SCST accepts commands and passes them to SCSI mid-level at the same way as SCSI high-level drivers (sg, sd, st) do. Figure 1 shows interaction between SCST, its drivers and Linux SCSI subsystem. @@ -171,42 +135,61 @@ interaction between SCST, its drivers and Linux SCSI subsystem. -Target driver registration + Target drivers + +struct scst_tgt_template

To work with SCST a target driver must register its template in SCST by -calling scst_register_target_template(). The template lets SCST know the +calling Structure scst_tgt_template - -

struct scst_tgt_template { int sg_tablesize; - const char name[15]; + const char name[SCST_MAX_NAME]; unsigned unchecked_isa_dma:1; unsigned use_clustering:1; + unsigned no_clustering:1; unsigned xmit_response_atomic:1; unsigned rdy_to_xfer_atomic:1; - unsigned report_aen_atomic:1; - int (* detect) (struct scst_tgt_template *tgt_template); - int (* release)(struct scst_tgt *tgt); + unsigned no_proc_entry:1; - int (* xmit_response)(struct scst_cmd *cmd); + int max_hw_pending_time; + + int threads_num; + + int (*detect) (struct scst_tgt_template *tgt_template); + int (*release)(struct scst_tgt *tgt); + + int (*xmit_response)(struct scst_cmd *cmd); int (* rdy_to_xfer)(struct scst_cmd *cmd); - + + void (*on_hw_pending_cmd_timeout) (struct scst_cmd *cmd); + void (*on_free_cmd) (struct scst_cmd *cmd); - void (* task_mgmt_fn_done)(struct scst_mgmt_cmd *mgmt_cmd); - void (* report_aen)(int mgmt_fn, const uint8_t *lun, int lun_len); - - int (*proc_info) (char *buffer, char **start, off_t offset, - int length, int *eof, struct scst_tgt *tgt, int inout); + int (*alloc_data_buf) (struct scst_cmd *cmd); + + void (*preprocessing_done) (struct scst_cmd *cmd); + + int (*pre_exec) (struct scst_cmd *cmd); + + void (*task_mgmt_affected_cmds_done) (struct scst_mgmt_cmd *mgmt_cmd); + void (*task_mgmt_fn_done)(struct scst_mgmt_cmd *mgmt_cmd); + + int (*report_aen) (struct scst_aen *aen); + + int (*read_proc) (struct seq_file *seq, struct scst_tgt *tgt); + int (*write_proc) (char *buffer, char **start, off_t offset, + int length, int *eof, struct scst_tgt *tgt); + + int (*get_initiator_port_transport_id) (struct scst_session *sess, + uint8_t **transport_id); } @@ -225,97 +208,163 @@ the template. Must be defined. unchecked DMA onto an ISA bus. = 0 to signify -the number of detected target adapters. A negative value should be -returned whenever there is an error. Must be defined. += 0 to +signify the number of detected target adapters. A negative value should +be returned whenever there is an error. Must be defined. - +0 if the regular SCST allocation should be done. In case of returning +successfully, scst_cmd->tgt_data_buf_alloced will be set by SCST. It is +possible that both target driver and dev handler request own memory +allocation. If allocation in atomic context, i.e. scst_cmd_atomic() is +true, and < 0 is returned, this function will be recalled in thread +context. Note that the driver will have to handle itself all relevant +details such as scatterlist setup, highmem, freeing the allocated +memory, etc. + + - - + Functions @@ -344,58 +393,35 @@ command will be destroyed, if by -More about More about xmit_response() -

-As already written above, function +As already written above, function xmit_response() should transmit +the response data and the status from the cmd parameter. - - - - -If Target driver registration functions scst_register_target_template() @@ -416,13 +442,13 @@ Where: Returns 0 on success or appropriate error code otherwise. -scst_register() +scst_register_target()

-Function -struct scst_tgt *scst_register( +struct scst_tgt *scst_register_target( struct scst_tgt_template *vtt) @@ -434,20 +460,20 @@ Where: Returns target structure based on template vtt or NULL in case of error. -Target driver unregistration +Target driver unregistration functions

In order to unregister itself target driver should at first call -scst_unregister() +scst_unregister_target()

-Function -void scst_unregister( +void scst_unregister_target( struct scst_tgt *tgt) @@ -457,7 +483,7 @@ Where: -scst_unregister_target_template() +scst_unregister_target_template()

Function -SCST session registration +Device specific drivers (backend device handlers) + +

Device specific drivers are add-ons for SCST, which help SCST to +analyze incoming requests and determine parameters, specific to various +types of devices as well as actually execute specified SCSI commands. +Device handlers are intended for the following: + + + +To get data transfer length and direction directly from CDB and +current device's configuration exactly as an end-target SCSI device +does. This serves two purposes: + + + + Improves security and reliability by not trusting the data + supplied by remote initiator via SCSI low-level protocol. + + Some low-level SCSI protocols don't provide data transfer + length and direction, so that information can be get only + directly from CDB and current device's configuration. For + example, for tape devices to get data transfer size it might be + necessary to know block size setting. + + + + Execute commands + +To process some exceptional conditions, like ILI on tape devices. + +To initialize incoming commands with some device-specific +parameters, like timeout value. + +To allow some additional device-specific commands pre-, post- +processing or alternative execution, like copying data from system +cache, and do that completely independently from target drivers. + + + +Device handlers considered to be part of SCST, so they could directly +access any fields in SCST's structures as well as use the corresponding +functions. + +Without appropriate device handler SCST hides devices of this type from +remote initiators and returns Structure +Structure +struct scst_dev_type +{ + char name[]; + int type; + + unsigned parse_atomic:1; + unsigned alloc_data_buf_atomic:1; + unsigned dev_done_atomic:1; + + unsigned no_proc:1; + + unsigned exec_sync:1; + + unsigned pr_cmds_notifications:1; + + int threads_num; + enum scst_dev_type_threads_pool_type threads_pool_type; + + int (*attach) (struct scst_device *dev); + void (*detach) (struct scst_device *dev); + + int (*attach_tgt) (struct scst_tgt_device *tgt_dev); + void (*detach_tgt) (struct scst_tgt_device *tgt_dev); + + int (*parse) (struct scst_cmd *cmd); + int (*alloc_data_buf) (struct scst_cmd *cmd); + int (*exec) (struct scst_cmd *cmd); + int (*dev_done) (struct scst_cmd *cmd); + int (*on_free_cmd) (struct scst_cmd *cmd); + + int (*task_mgmt_fn) (struct scst_mgmt_cmd *mgmt_cmd, + struct scst_tgt_dev *tgt_dev); + + int (*read_proc) (struct seq_file *seq, struct scst_dev_type *dev_type); + int (*write_proc) (char *buffer, char **start, off_t offset, + int length, int *eof, struct scst_dev_type *dev_type); +} + + +Where: + + + + 0. Possible values: + + + + + +bufflen/ and data_direction/ (both - REQUIRED). Returns the +command's scst_cmd_done()/ callback. + +Returns: + + + + +If this function provides sync execution, you should set +exec_sync flag and consider to setup dedicated threads by +setting 0. + +Optional, if not set, the commands will be sent directly to SCSI +device. + + + + + + + +Device specific drivers registration + + scst_register_dev_driver() + +

+To work with SCST a device specific driver must register itself in SCST by +calling +int scst_register_dev_driver( + struct scst_dev_type *dev_type) + + +Where: + + + + +The function returns 0 on success or appropriate error code otherwise. + + scst_register_virtual_device() + +

+To create a virtual device a device handler must register it in SCST by +calling +int scst_register_virtual_device( + struct scst_dev_type *dev_handler, + const char *dev_name) + + +Where: + + + + + +The function returns ID assigned to the device on success, or negative +value otherwise. + +All local real SCSI devices will be registered and unregistered by the +SCST core automatically, so pass-through dev handlers don't have to +worry about it. + + +Device specific drivers unregistration + + scst_unregister_virtual_device() + +

+Virtual devices unregistered by calling + +void scst_unregister_virtual_device( + int id) + + +Where: + + + + + scst_unregister_dev_driver() + +

+Device specific driver is unregistered by calling + +void scst_unregister_dev_driver( + struct scst_dev_type *dev_type) + + +Where: + + + + +SCST sessions + +SCST sessions registration

When target driver determines that it needs to create new SCST session @@ -485,11 +843,12 @@ struct scst_session *scst_register_session( struct scst_tgt *tgt, int atomic, const char *initiator_name, - void *data, + void *tgt_priv, + void *result_fn_data, void (*result_fn) ( struct scst_session *sess, - void *data, - int result)); + void *data, + int result)) Where: @@ -505,7 +864,9 @@ string, e.g. iSCSI name, which used as the key to found appropriate access control group. Could be NULL, then "default" group is used. The groups are set up via /proc interface. - - - - - Session registration when - - -

- - - - Session registration when -
- -SCST session unregistration +SCST sessions unregistration

SCST session unregistration basically is the same, except that instead of @@ -571,9 +914,9 @@ atomic parameter there is void scst_unregister_session( - struct scst_session *sess, + struct scst_session *sess, int wait, - void (* unreg_done_fn)( + void (*unreg_done_fn)( struct scst_session *sess)) @@ -584,9 +927,9 @@ Where: - + All outstanding commands will be finished regularly. After -The commands processing and interaction between SCST and its drivers + +Commands processing and interaction between SCST core and its drivers

+Consider simplified commands processing example. It assumes that target +driver doesn't need own memory allocation, i.e. not defined +alloc_data_buf() callback. Example of such target driver is qla2x00t. + The commands processing by SCST started when target driver calls - If the command required no data transfer, it will be passed to -SCSI mid-level directly or via device handler's If the command is a If the command is a If the command is a If the command is a When the command is finished by SCSI mid-level, device handler's - - - + + The commands processing flow -Additionally, before calling - - Expected transfer length and direction via - - The commands processing functions scst_rx_cmd() @@ -696,11 +1026,11 @@ following: struct scst_cmd *scst_rx_cmd( - struct scst_session *sess, - const uint8_t *lun, + struct scst_session *sess, + const uint8_t *lun, int lun_len, - const uint8_t *cdb, - int cdb_len, + const uint8_t *cdb, + int cdb_len, int atomic) @@ -710,15 +1040,14 @@ Where: void scst_cmd_init_done( - struct scst_cmd *cmd, - int pref_context) + struct scst_cmd *cmd, + enum scst_exec_context pref_context) Where: @@ -745,7 +1074,7 @@ Where: @@ -760,7 +1089,7 @@ is defined as the following: void scst_rx_data( struct scst_cmd *cmd, int status, - int pref_context) + enum scst_exec_context pref_context) Where: @@ -772,7 +1101,7 @@ Where: @@ -784,45 +1113,51 @@ Parameter scst_tgt_cmd_done()

-Function void scst_tgt_cmd_done( - struct scst_cmd *cmd) + struct scst_cmd *cmd, + enum scst_exec_context pref_context) Where: + The commands processing context

Execution context often is a major problem in the kernel drivers -development, because many contexts, like IRQ one, greatly limit +development, because many contexts, like IRQ context, greatly limit available functionality, therefore require additional complex code in order to pass processing to more simple context. SCST does its best to -undertake most of the context handling. +undertake most of the context handling. On the initialization time SCST creates for internal command processing as many threads as there are processors in the system or specified by @@ -834,17 +1169,16 @@ Each command can be processed in one of four contexts: Directly, i.e. in the caller's context, without limitations Directly atomically, i.e. with sleeping forbidden -In the SCST's internal per processor or per session thread -In the SCST's per processor tasklet +In the SCST's internal threads +In the SCST's per processor tasklets -The target driver sets this context as pref_context parameter for -Preferred context constants

-There are the following preferred context constants: +There are the following preferred context constants: @@ -878,8 +1212,85 @@ context. command processing. Supposed to be used if the driver's architecture does not allow using any of above. + +SCST commands' processing states + +

+There are the following processing states, which a SCST command passes +through during execution and which could be returned by device handler's + + +tgt_dev/ +assignment) state + + + + Task management functions

@@ -887,49 +1298,62 @@ There are the following task management functions supported: - +All task management functions return completion status via +scst_rx_mgmt_fn_tag()

Function int scst_rx_mgmt_fn_tag( - struct scst_session *sess, - int fn, + struct scst_session *sess, + int fn, uint32_t tag, - int atomic, - void *tgt_specific) + int atomic, + void *tgt_priv) Where: @@ -944,15 +1368,15 @@ Where: Returns 0 if the command was successfully created and scheduled for execution, error code otherwise. On success, the completion status of -the command will be reported asynchronously via scst_rx_mgmt_fn_lun() @@ -960,18 +1384,18 @@ driver's callback.

Function int scst_rx_mgmt_fn_lun( - struct scst_session *sess, + struct scst_session *sess, int fn, - const uint8_t *lun, + const uint8_t *lun, int lun_len, - int atomic, - void *tgt_specific); + int atomic, + void *tgt_priv); Where: @@ -988,1312 +1412,767 @@ Where: Returns 0 if the command was successfully created and scheduled for execution, error code otherwise. On success, the completion status of -the command will be reported asynchronously via Device specific drivers (device handlers) +Possible status constants which can be returned by + + + + +SGV cache

-Device specific drivers are plugins for SCST, which help SCST to analyze -incoming requests and determine parameters, specific to various types -of devices. Device handlers are intended for the following: +SCST SGV cache is a memory management subsystem in SCST. One can call it +a "memory pool", but Linux kernel already have a mempool interface, +which serves different purposes. SGV cache provides to SCST core, target +drivers and backend dev handlers facilities to allocate, build and cache +SG vectors for data buffers. The main advantage of it is the caching +facility, when it doesn't free to the system each vector, which is not +used anymore, but keeps it for a while (possibly indefinitely) to let it +be reused by the next consecutive command. This allows to: -To get data transfer length and direction directly from CDB and -current device's configuration exactly as an end-target SCSI device -does. This serves two purposes: + Reduce commands processing latencies and, hence, improve performance; - - - Improves security and reliability by not trusting the data - supplied by remote initiator via SCSI low-level protocol. - - Some low-level SCSI protocols don't provide data transfer - length and direction, so that information can be get only - directly from CDB and current device's configuration. For - example, for tape devices to get data transfer size it might be - necessary to know block size setting. - - - -To process some exceptional conditions, like ILI on tape devices. - -To initialize incoming commands with some device-specific -parameters, like timeout value. - -To allow some additional device-specific commands pre-, post- -processing or alternative execution, like copying data from system -cache, and do that completely independently from target drivers. + Make commands processing latencies predictable, which is essential + for RT applications. -Device handlers performs very lightweight processing and therefore -should not considerably affect performance or CPU load. They are -considered to be part of SCST, so they could directly access any fields -in SCST's structures as well as use the corresponding functions. +The freed SG vectors are kept by the SGV cache either for some (possibly +indefinite) time, or, optionally, until the system needs more memory and +asks to free some using the set_shrinker() interface. Also the SGV cache +allows to: -Without appropriate device handler SCST hides devices of this type from -remote initiators and returns -Device specific driver registration + Cluster pages together. "Cluster" means merging adjacent pages in a +single SG entry. It allows to have less SG entries in the resulting SG +vector, hence improve performance handling it as well as allow to +work with bigger buffers on hardware with limited SG capabilities. -scst_register_dev_driver() + Set custom page allocator functions. For instance, scst_user device +handler uses this facility to eliminate unneeded mapping/unmapping of +user space pages and avoid unneeded IOCTL calls for buffers allocations. +In fileio_tgt application, which uses a regular malloc() function to +allocate data buffers, this facility allows ~30% less CPU load and +considerable performance increase. + + Prevent each initiator or all initiators altogether to allocate too +much memory and DoS the target. Consider 10 initiators, which can have +access to 10 devices each. Any of them can queue up to 64 commands, each +can transfer up to 1MB of data. So, all of them in a peak can allocate +up to 10*10*64 = ~6.5GB of memory for data buffers. This amount must be +limited somehow and the SGV cache performs this function. + + + + Implementation

-To work with SCST a device specific driver must register itself in SCST by -calling -int scst_register_dev_driver( - struct scst_dev_type *dev_type) - + -Where: + With fixed size buffers. - - + With a set of power 2 size buffers. In this mode each SGV cache +(struct sgv_pool) has SGV_POOL_ELEMENTS (11 currently) of kmem caches. +Each of those kmem caches keeps SGV cache objects (struct sgv_pool_obj) +corresponding to SG vectors with size of order X pages. For instance, +request to allocate 4 pages will be served from kmem cache[2&rsqb, since the +order of the of number of requested pages is 2. If later request to +allocate 11KB comes, the same SG vector with 4 pages will be reused (see +below). This mode is in average allows less memory overhead comparing +with the fixed size buffers mode. -The function returns 0 on success or appropriate error code otherwise. + -Structure Interface + + sgv_pool *sgv_pool_create()

-Structure -struct scst_dev_type -{ - char name[15]; - int type; - - unsigned parse_atomic:1; - unsigned exec_atomic:1; - unsigned dev_done_atomic:1; - - int (*init) (struct scst_dev_type *dev_type); - void (*release) (struct scst_dev_type *dev_type); - - int (*attach) (struct scst_device *dev); - void (*detach) (struct scst_device *dev); - - int (*attach_tgt) (struct scst_tgt_device *tgt_dev); - void (*detach_tgt) (struct scst_tgt_device *tgt_dev); - - int (*parse) (struct scst_cmd *cmd); - int (*exec) (struct scst_cmd *cmd, - void (*scst_cmd_done)(struct scsi_cmnd *cmd, int next_state)); - int (*dev_done) (struct scst_cmd *cmd); - int (*task_mgmt_fn) (struct scst_mgmt_cmd *mgmt_cmd, - struct scst_tgt_dev *tgt_dev, struct scst_cmd *cmd_to_abort); - int (*on_free_cmd) (struct scst_cmd *cmd); - - int (*proc_info) (char *buffer, char **start, off_t offset, - int length, int *eof, struct scst_dev_type *dev_type, - int inout) - - struct module *module; -} +struct sgv_pool *sgv_pool_create( + const char *name, + enum sgv_clustering_types clustered, int single_alloc_pages, + bool shared, int purge_interval) -Where: +This function creates and initializes an SGV cache. It has the following +arguments: - - - 0, then the SGV cache will work in the + fixed size buffers mode. In this case single_alloc_pages sets the + size of each buffer in pages. - bufflen/ and data_direction/ (see below - - - - - - - - - - - - -If the driver needs to create additional files in its /proc -subdirectory, it can use -Structure -struct scst_info_cdb -{ - enum scst_cdb_flags flags; - scst_data_direction direction; - unsigned int transfer_len; - unsigned short cdb_len; - const char *op_name; -} - - -Where: - - - - - - - - - -Field data_direction/, set by - - - -Device specific driver unregistration + void sgv_pool_del()

-Device specific driver is unregistered by calling - -void scst_unregister_dev_driver( - struct scst_dev_type *dev_type) +void sgv_pool_del( + struct sgv_pool *pool) -Where: +This function deletes the corresponding SGV cache. If the cache is +shared, it will decrease its reference counter. If the reference counter +reaches 0, the cache will be destroyed. - - - -SCST commands' states - -

-There are the following states, which a SCST command passes through -during execution and which could be returned by device handler's - - -tgt_dev/ -assignment) state - - - -SCST's structures manipulation functions + void sgv_pool_flush()

-Target drivers must not directly access any fields in SCST's structures, -they must use only described below functions. - -SCST target driver manipulation functions - -scst_tgt_get_tgt_specific() and scst_tgt_set_tgt_specific() - -

-Function -void *scst_tgt_get_tgt_specific( - struct scst_tgt *tgt) +void sgv_pool_flush( + struct sgv_pool *pool) -Function -void scst_tgt_set_tgt_specific( - struct scst_tgt *tgt, - void *val) - - -Where: - - - - -SCST session manipulation functions - -scst_sess_get_tgt_specific() and scst_sess_set_tgt_specific() + void sgv_pool_set_allocator()

-Function -void *scst_sess_get_tgt_specific( - struct scst_session *sess) +void sgv_pool_set_allocator( + struct sgv_pool *pool, + struct page *(*alloc_pages_fn)(struct scatterlist *sg, gfp_t gfp, void *priv), + void (*free_pages_fn)(struct scatterlist *sg, int sg_count, void *priv)); -Function -void scst_sess_set_tgt_specific( - struct scst_session *sess, - void *val) - - -Where: + - -SCST command manipulation functions +This function should return the allocated page or NULL, if no page was +allocated. -scst_cmd_atomic() + + + + + + struct scatterlist *sgv_pool_alloc()

-Function -int scst_cmd_atomic( - struct scst_cmd *cmd) +struct scatterlist *sgv_pool_alloc( + struct sgv_pool *pool, + unsigned int size, + gfp_t gfp_mask, + int flags, + int *count, + struct sgv_pool_obj **sgv, + struct scst_mem_lim *mem_lim, + void *priv) -Where: +This function allocates an SG vector from the SGV cache. It has the +following parameters: - + + + + -scst_cmd_get_session() +This function returns pointer to the resulting SG vector or NULL in case +of any error. + + void sgv_pool_free()

-Function -struct scst_session *scst_cmd_get_session( - struct scst_cmd *cmd) +void sgv_pool_free( + struct sgv_pool_obj *sgv, + struct scst_mem_lim *mem_lim) -Where: +This function frees previously allocated SG vector, referenced by SGV +cache object sgv. - - - -scst_cmd_get_resp_data_len() + void *sgv_get_priv(struct sgv_pool_obj *sgv)

-Function -unsigned int scst_cmd_get_resp_data_len( - struct scst_cmd *cmd) +void *sgv_get_priv( + struct sgv_pool_obj *sgv) -Where: +This function allows to get the allocation private data for this SGV +cache object sgv. The private data are set by sgv_pool_alloc(). - - - -scst_cmd_get_tgt_resp_flags() + void scst_init_mem_lim()

-Function -int scst_cmd_get_tgt_resp_flags( - struct scst_cmd *cmd) +void scst_init_mem_lim( + struct scst_mem_lim *mem_lim) -Where: +This function initializes memory limits structure mem_lim according to +the current system configuration. This structure should be latter used +to track and limit allocated by one or more SGV caches memory. - - -scst_cmd_get_buffer() + Runtime information and statistics.

-Function /proc/scsi_tgt/sgv. - -void *scst_cmd_get_buffer( - struct scst_cmd *cmd) - -Where: - - - - -It is recommended to use scst_cmd_get_bufflen() + Target driver qla2x00t

-Function -unsigned int scst_cmd_get_bufflen( - struct scst_cmd *cmd) - - -Where: +It consists from two parts: - -It is recommended to use scst_cmd_get_use_sg() + + + To provide support for the target mode add-on via a set of +exported callbacks + + To provide extra info and management interface in the driver's +sysfs interface (attributes target_mode_enabled, ports_database, etc.) + + To fix some problems uncovered during target mode development and +usage. + + + +The changes are relatively small (few thousands lines big patch) and local. + +The changed qla2xxx is still capable to work as initiator only. Mode, +when a host acts as initiator and target simultaneously, is supported as +well. + +Since firmware interface for 24xx+ chips is fundamentally different from +earlier versions, qla2x00t generally contains 2 separate drivers sharing +some common processing. + + Driver initialization

-Function -unsigned short scst_cmd_get_use_sg( - struct scst_cmd *cmd) - +In this function qla2x00tgt registers its callbacks in qla2xxx by +calling qla2xxx_tgt_register_driver(). Qla2xxx_tgt_register_driver() +stores pointer to the being registered callbacks in variable qla_target. -Where: +Then q2t_target_detect() calls qla2xxx_add_targets(), which calls for +each known local FC port (HBA instance) qla_target.tgt_host_action() +callback with ADD_TARGET action. Then q2t_host_action() calls +q2t_add_target() which registers SCST target for this FC port. - - +If later a new FC port is hot added, qla2x00_probe_one() will also call +for all new local ports qla_target.tgt_host_action() with ADD_TARGET +action. -It is recommended to use scst_cmd_get_data_direction() + Driver unload

-Function -scst_data_direction scst_cmd_get_data_direction( - struct scst_cmd *cmd) - +Then q2t_host_action() calls q2t_remove_target(), which unregisters the +corresponding SCST target in SCST. During unregistration SCST core calls +release() callback of tgt2x_template, which is q2t_target_release(). -Where: +Then q2t_target_release() calls q2t_target_stop(). Then +q2t_target_stop() marks this target as stopped by setting flag tgt_stop. +When this flag is set, all incoming from initiators commands are +refused. - - +Then q2t_target_stop() schedules deletion of all sessions of the target. -scst_cmd_get_status() +Then q2t_target_stop() waits until all outstanding commands finished and +sessions deleted. + +Then q2t_target_stop(), if necessary, calls qla2x00_disable_tgt_mode() +to disables target mode, which disables target mode of the corresponding +HBA and resets it. Then qla2x00_disable_tgt_mode() waits until reset +finished. + +Then q2t_target_stop() returns and then q2t_target_release() frees the +target. + + +If module qla2x00tgt is being unloaded, q2t_exit() at first takes +q2t_unreg_rwsem on writing. Taking it is necessary to make sure that +q2t_host_action() will not be active during qla2x00tgt unload. + +Then q2t_exit() calls scst_unregister_target_template() for +tgt2x_template, which then in a loop will unregister all QLA SCST targets +from SCST as described above. + + + Enabling target mode

-Functions -uint8_t scst_cmd_get_status( - struct scst_cmd *cmd) - +Then it calls qla2x00_enable_tgt_mode(), which enables target mode of +the corresponding HBA and resets it. Then qla2x00_enable_tgt_mode() +waits until reset finished. -Where: +During reset firmware initialization functions detect that target mode +is enables and initialize the firmware accordingly. - - -scst_cmd_get_masked_status() + Disabling target mode

-Functions -uint8_t scst_cmd_get_masked_status( - struct scst_cmd *cmd) - -Where: - - - - -scst_cmd_get_msg_status() + SCST sessions management

-Functions -uint8_t scst_cmd_get_msg_status( - struct scst_cmd *cmd) - +Since qla2xxx is not intended to strictly maintain database of remote +initiator FC ports as it is needed for target mode, qla2x00t uses mixed +approach for SCST sessions management, when both qla2xxx and QLogic +firmware generate events and information about currently active remote +FC ports. -Where: +Remote FC ports management also has to handle changing FC and loop IDs +after fabric events, so it needs to constantly monitor FC and loop IDs +of the registered FC ports. This is implemented by checks in +q2t_create_sess() that being registered FC port already has SCST session +and q2t_check_fcport_exist() in q2t_del_sess_work_fn(). See below for +more info. - - +Interaction with qla2xxx is implemented using tgt_fc_port_added() and +tgt_fc_port_deleted() qla_target's callbacks. -scst_cmd_get_host_status() +Callback tgt_fc_port_added() called by qla2xxx when the target driver +detects new remote FC port. Assigned to it q2t_fc_port_added() checks if +an SCST session already exists for this remote FC port and, if not, +creates it. + +Callback tgt_fc_port_deleted() called by qla2xxx when it deletes a +remote FC port from its database. Assigned to it q2t_fc_port_deleted() +checks if an SCST session already exists for this remote FC port and, if +yes, schedules it for deletion. + +Driver qla2x00tgt has 2 types of SCST sessions: local and not local. +Sessions created by q2t_fc_port_added() are not local. Local sessions +created if qla2x00tgt receives a command from remote initiator for which +there is no know remote FC port and, hence, SCST session. Local sessions +are created in tgt->sess_work (q2t_sess_work_fn()) by calling +q2t_make_local_sess(). All received from remote initiators commands for +local sessions are delayed until the sessions are created. + +To minimize affecting initiators by FC fabric events, qla2x00tgt doesn't +immediately delete SCST sessions scheduled for deletion, but instead +delay them for some time. If during this time a command from an unknown +remote initiator received, q2t_make_local_sess()/q2t_create_sess() at +first check if a session for this initiator already exists and, if yes, +undelete then reuse it after updating its s_id and loop_id to new values. + +If a session not reused during the delete delay time, then +q2t_del_sess_work_fn() asks the firmware internal database if it knows +the corresponding remote FC port. If yes, then this session is undeleted +and its s_id and loop_id updated to new values. If no, the session is +deleted. + + + Handling stuck commands

-Functions -uint16_t scst_cmd_get_host_status( - struct scst_cmd *cmd) - +In this callback all the stuck commands are forcibly finished. -Where: + - - - -scst_cmd_get_driver_status() + Debugging and troubleshooting

-Functions -uint16_t scst_cmd_get_driver_status( - struct scst_cmd *cmd) - - -Where: +Depending from amount debugging and logging facilities available, there +are 3 types of builds: - -scst_cmd_get_sense_buffer() +Switch between build modes is done by calling "make x2y", where "x" - +current build mode and "y" - desired build mode. For instance, to switch +from release to debug mode you should run "make release2debug". + + Logging levels management

-Functions -uint8_t *scst_cmd_get_sense_buffer( - struct scst_cmd *cmd) - +Reading from it you can find currently enabled logging levels. -Where: +You can change them by writing in this file, like: + +# echo "add scsi" >/proc/scsi_tgt/trace_level + +The following commands are available: - -scst_cmd_get_sense_buffer_len() +The following trace levels are common for all drivers: + + + + + +The following trace levels are additionally available for SCST core: + + + + + + Preparing a debug kernel

-Functions -int scst_cmd_get_sense_buffer_len( - struct scst_cmd *cmd) - +For that you should change in lib/Kconfig.debug or init/Kconfig +depending from your kernel version LOG_BUF_SHIFT from "12 21" to "12 25". -Where: +Then you should in your .config set CONFIG_LOG_BUF_SHIFT to 25. - - +Also, Linux kernel has a lot of helpful debug facilities, like lockdep, +which allows to catch various deadlocks, or memory allocation debugging. +It is recommended to enable them during SCST debugging. -scst_cmd_get_tag() and scst_cmd_set_tag() +The following options are recommended to be enabled (available depending +from your kernel version): CONFIG_SLUB_DEBUG, CONFIG_PRINTK_TIME, +CONFIG_MAGIC_SYSRQ, CONFIG_DEBUG_FS, CONFIG_DEBUG_KERNEL, +CONFIG_DEBUG_SHIRQ, CONFIG_DETECT_SOFTLOCKUP, CONFIG_DETECT_HUNG_TASK, +CONFIG_SLUB_DEBUG_ON, CONFIG_SLUB_STATS, CONFIG_DEBUG_PREEMPT, +CONFIG_DEBUG_RT_MUTEXES, CONFIG_DEBUG_PI_LIST, CONFIG_DEBUG_SPINLOCK, +CONFIG_DEBUG_MUTEXES, CONFIG_DEBUG_LOCK_ALLOC, CONFIG_PROVE_LOCKING, +CONFIG_LOCKDEP, CONFIG_LOCK_STAT, CONFIG_DEBUG_SPINLOCK_SLEEP, +CONFIG_STACKTRACE, CONFIG_DEBUG_BUGVERBOSE, CONFIG_DEBUG_VM, +CONFIG_DEBUG_VIRTUAL, CONFIG_DEBUG_WRITECOUNT, CONFIG_DEBUG_MEMORY_INIT, +CONFIG_DEBUG_LIST, CONFIG_DEBUG_SG, CONFIG_DEBUG_NOTIFIERS, +CONFIG_FRAME_POINTER, CONFIG_FAULT_INJECTION, CONFIG_FAILSLAB, +CONFIG_FAIL_PAGE_ALLOC, CONFIG_FAIL_MAKE_REQUEST, +CONFIG_FAIL_IO_TIMEOUT, CONFIG_FAULT_INJECTION_DEBUG_FS, +CONFIG_FAULT_INJECTION_STACKTRACE_FILTER. -

Function -uint32_t scst_cmd_get_tag( - struct scst_cmd *cmd) - - -Function -void scst_cmd_set_tag( - struct scst_cmd *cmd, - uint32_t tag) - - -Where: - - - - -scst_cmd_get_tgt_specific() and scst_cmd_get_tgt_specific_lock() + Preparing logging subsystem

-Functions -void *scst_cmd_get_tgt_specific( - struct scst_cmd *cmd) - - - -void *scst_cmd_get_tgt_specific_lock( - struct scst_cmd *cmd) - - -Where: +It is recommended that you system logger daemon on the target configured: - To store kernel logs in separate files on the fastest disk you +have. It will be better if this disk is dedicated for logging or, at +least, doesn't contain your LUNs data. + + To write the kernel logs to the disk in asynchronous manner, i.e. +without calling fsync() after each written message. Usually, you can +achieve it, if you add a '-' sign before the corresponding file path in +your syslog daemon conf file, like: + +kern.* -/var/log/kern.log + -scst_cmd_set_tgt_specific() and scst_cmd_set_tgt_specific_lock() + Decoding OOPS messages

-Functions -void *scst_cmd_set_tgt_specific( - struct scst_cmd *cmd, - void *val) +[<ffffffff88646174>&rsqb :iscsi_scst:iscsi_extracheck_is_rd_thread+0x94/0xb0 +You can decode it by: + -void *scst_cmd_set_tgt_specific_lock( - struct scst_cmd *cmd, - void *val) +$ gdb iscsi-scst.ko +(gdb) l *iscsi_scst:iscsi_extracheck_is_rd_thread+0x94 -Where: +For that the corresponding module (iscsi-scst.ko) should be build with +debug info. But modules not always have debug info built-in. To +workaround it you can add "-g" flag in the corresponding Makefile +(without changing anything else!) or enable in .config using "make +menuconfig" building kernel with debug info. Then rebuild only the .o +file you need. - - - -scst_cmd_get_data_buff_alloced() and scst_cmd_set_data_buff_alloced() - -

-Function -int scst_cmd_get_data_buff_alloced( - struct scst_cmd *cmd) +$ make mm/filemap.o +... +$ gdb mm/filemap.o -Function -void scst_cmd_set_data_buff_alloced( - struct scst_cmd *cmd) - - -Where: - - - - -scst_cmd_set_expected(), scst_cmd_is_expected_set(), -scst_cmd_get_expected_data_direction() and -scst_cmd_get_expected_transfer_len() - -

-Function -void scst_cmd_set_expected( - struct scst_cmd *cmd, - scst_data_direction expected_data_direction, - unsigned int expected_transfer_len) - - -Function -int scst_cmd_is_expected_set( - struct scst_cmd *cmd) - - -Function -scst_data_direction scst_cmd_get_expected_data_direction( - struct scst_cmd *cmd) - - -Function -unsigned int scst_cmd_get_expected_transfer_len( - struct scst_cmd *cmd) - - -Where: - - - - -scst_get_buf_first(), scst_get_buf_next(), -scst_put_buf() and scst_get_buf_count() - -

-These functions are designed to simplify and unify access to the -commands data (SG vector or plain data buffer) in all possible -conditions, including HIGHMEM environment, and should be used instead of -direct access. - -Function -int scst_get_buf_first( - struct scst_cmd *cmd, - uint8_t **buf) - - -Where: - - - - -Returns the length of the chunk of data for success, 0 for the end of -data, negative error code otherwise. - -Function -int scst_get_buf_next( - struct scst_cmd *cmd, - uint8_t **buf) - - -Where: - - - - -Returns the length of the chunk of data for success, 0 for the end of -data, negative error code otherwise. - -Function -void scst_put_buf( - struct scst_cmd *cmd, - uint8_t *buf) - - -Where: - - - - -Function -int scst_get_buf_count( - struct scst_cmd *cmd) - - -Where: - - - - -SCST task management commands manipulation functions - -scst_mgmt_cmd_get_tgt_specific() - -

-Function -void *scst_mgmt_cmd_get_tgt_specific( - struct scst_mgmt_cmd *mcmd) - - -Where: - - - - -scst_mgmt_cmd_get_status() - -

-Functions -void *scst_mgmt_cmd_get_status( - struct scst_mgmt_cmd *mcmd) - - -Where: - - - - -The following status values are possible: - - - - SCST_MGMT_STATUS_SUCCESS - the task management command completed -successfully - - SCST_MGMT_STATUS_FAILED - the task management command failed. - - - -Miscellaneous functions - -scst_find_cmd_by_tag() - -

-Function -struct scst_cmd *scst_find_cmd_by_tag( - struct scst_session *sess, - uint32_t tag) - - -Where: - - - - -Returns found command or NULL otherwise. - -scst_find_cmd() - -

-Function -struct scst_cmd *scst_find_cmd( - struct scst_session *sess, - void *data, - int (*cmp_fn)(struct scst_cmd *cmd, void *data)) - - -Where: - - - - - - - - -Returns found command or NULL otherwise. - -scst_get_cdb_info() - -

-Function -int scst_get_cdb_info( - const uint8_t *cdb_p, - int dev_type, - struct scst_info_cdb *info_p) - - -Where: - - - - - -Returns 0 on success, -1 otherwise. - -scst_to_dma_dir() - -

-Function -int scst_to_dma_dir( - int scst_dir) - - -Where: - - - - -Returns the corresponding scst_is_cmd_local() - -

-Function -int scst_is_cmd_local( - struct scst_cmd *cmd) - - -Where: - - - - -Returns 1, if the command's CDB is locally handled by SCST or 0 -otherwise - -scst_register_virtual_device() and scst_unregister_virtual_device() - -

-These functions provide a way for device handlers to register a virtual -(emulated) device, which will be visible only by remote initiators. For -example, FILEIO device handler uses files on file system to makes from -them virtual remotely available SCSI disks. - -Function -int scst_register_virtual_device( - struct scst_dev_type *dev_handler) - - -Where: - - - - -Returns assigned to the device ID on success, or negative value otherwise. - -Function -void scst_unregister_virtual_device( - int id) - - -Where: - - - - -scst_add_threads() and scst_del_threads() - -

-These functions allows to add or delete some SCST threads. For example, -if -int scst_add_threads( - int num) - - -Where: - - - - -Returns 0 on success, error code otherwise. - -Function -void scst_del_threads( - int num) - - -Where: - - - - -scst_proc_get_tgt_root() - -

-Function -struct proc_dir_entry *scst_proc_get_tgt_root( - struct scst_tgt_template *vtt) - - -Where: - - - - -Returns proc_dir_entry on success, NULL otherwise. - -scst_proc_get_dev_type_root() - -

-Function -struct proc_dir_entry *scst_proc_get_dev_type_root( - struct scst_dev_type *dtt) - - -Where: - - - - -Returns proc_dir_entry on success, NULL otherwise. - diff --git a/doc/sgv_cache.sgml b/doc/sgv_cache.sgml deleted file mode 100644 index 4d6240031..000000000 --- a/doc/sgv_cache.sgml +++ /dev/null @@ -1,335 +0,0 @@ - - -

- - -SCST SGV cache description - - - - Vladislav Bolkhovitin - - -Version 2.1.0 - - - -Introduction - -

-SCST SGV cache is a memory management subsystem in SCST. One can call it -a "memory pool", but Linux kernel already have a mempool interface, -which serves different purposes. SGV cache provides to SCST core, target -drivers and backend dev handlers facilities to allocate, build and cache -SG vectors for data buffers. The main advantage of it is the caching -facility, when it doesn't free to the system each vector, which is not -used anymore, but keeps it for a while (possibly indefinitely) to let it -be reused by the next consecutive command. This allows to: - - - - Reduce commands processing latencies and, hence, improve performance; - - Make commands processing latencies predictable, which is essential - for RT applications. - - - -The freed SG vectors are kept by the SGV cache either for some (possibly -indefinite) time, or, optionally, until the system needs more memory and -asks to free some using the set_shrinker() interface. Also the SGV cache -allows to: - - - - Cluster pages together. "Cluster" means merging adjacent pages in a -single SG entry. It allows to have less SG entries in the resulting SG -vector, hence improve performance handling it as well as allow to -work with bigger buffers on hardware with limited SG capabilities. - - Set custom page allocator functions. For instance, scst_user device -handler uses this facility to eliminate unneeded mapping/unmapping of -user space pages and avoid unneeded IOCTL calls for buffers allocations. -In fileio_tgt application, which uses a regular malloc() function to -allocate data buffers, this facility allows ~30% less CPU load and -considerable performance increase. - - Prevent each initiator or all initiators altogether to allocate too -much memory and DoS the target. Consider 10 initiators, which can have -access to 10 devices each. Any of them can queue up to 64 commands, each -can transfer up to 1MB of data. So, all of them in a peak can allocate -up to 10*10*64 = ~6.5GB of memory for data buffers. This amount must be -limited somehow and the SGV cache performs this function. - - - - Implementation - -

-From implementation POV the SGV cache is a simple extension of the kmem -cache. It can work in 2 modes: - - - - With fixed size buffers. - - With a set of power 2 size buffers. In this mode each SGV cache -(struct sgv_pool) has SGV_POOL_ELEMENTS (11 currently) of kmem caches. -Each of those kmem caches keeps SGV cache objects (struct sgv_pool_obj) -corresponding to SG vectors with size of order X pages. For instance, -request to allocate 4 pages will be served from kmem cache[2&rsqb, since the -order of the of number of requested pages is 2. If later request to -allocate 11KB comes, the same SG vector with 4 pages will be reused (see -below). This mode is in average allows less memory overhead comparing -with the fixed size buffers mode. - - - -Consider how the SGV cache works in the set of buffers mode. When a -request to allocate new SG vector comes, sgv_pool_alloc() via -sgv_get_obj() checks if there is already a cached vector with that -order. If yes, then that vector will be reused and its length, if -necessary, will be modified to match the requested size. In the above -example request for 11KB buffer, 4 pages vector will be reused and -modified using trans_tbl to contain 3 pages and the last entry will be -modified to contain the requested length - 2*PAGE_SIZE. If there is no -cached object, then a new sgv_pool_obj will be allocated from the -corresponding kmem cache, chosen by the order of number of requested -pages. Then that vector will be filled by pages and returned. - -In the fixed size buffers mode the SGV cache works similarly, except -that it always allocate buffer with the predefined fixed size. I.e. -even for 4K request the whole buffer with predefined size, say, 1MB, -will be used. - -In both modes, if size of a request exceeds the maximum allowed for -caching buffer size, the requested buffer will be allocated, but not -cached. - -Freed cached sgv_pool_obj objects are actually freed to the system -either by the purge work, which is scheduled once in 60 seconds, or in -sgv_shrink() called by system, when it's asking for memory. - - Interface - - sgv_pool *sgv_pool_create() - -

- -struct sgv_pool *sgv_pool_create( - const char *name, - enum sgv_clustering_types clustered, int single_alloc_pages, - bool shared, int purge_interval) - - -This function creates and initializes an SGV cache. It has the following -arguments: - - - - - - - - 0, then the SGV cache will work in the - fixed size buffers mode. In this case single_alloc_pages sets the - size of each buffer in pages. - - - -Returns the resulting SGV cache or NULL in case of any error. - - void sgv_pool_del() - -

- -void sgv_pool_del( - struct sgv_pool *pool) - - -This function deletes the corresponding SGV cache. If the cache is -shared, it will decrease its reference counter. If the reference counter -reaches 0, the cache will be destroyed. - - void sgv_pool_flush() - -

- -void sgv_pool_flush( - struct sgv_pool *pool) - - -This function flushes, i.e. frees, all the cached entries in the SGV -cache. - - void sgv_pool_set_allocator() - -

- -void sgv_pool_set_allocator( - struct sgv_pool *pool, - struct page *(*alloc_pages_fn)(struct scatterlist *sg, gfp_t gfp, void *priv), - void (*free_pages_fn)(struct scatterlist *sg, int sg_count, void *priv)); - - -This function allows to set for the SGV cache a custom pages allocator. For -instance, scst_user uses such function to supply to the cache mapped from -user space pages. - - - - - -This function should return the allocated page or NULL, if no page was -allocated. - - - - - - - struct scatterlist *sgv_pool_alloc() - -

- -struct scatterlist *sgv_pool_alloc( - struct sgv_pool *pool, - unsigned int size, - gfp_t gfp_mask, - int flags, - int *count, - struct sgv_pool_obj **sgv, - struct scst_mem_lim *mem_lim, - void *priv) - - -This function allocates an SG vector from the SGV cache. It has the -following parameters: - - - - - - - - - -This function returns pointer to the resulting SG vector or NULL in case -of any error. - - void sgv_pool_free() - -

- -void sgv_pool_free( - struct sgv_pool_obj *sgv, - struct scst_mem_lim *mem_lim) - - -This function frees previously allocated SG vector, referenced by SGV -cache object sgv. - - void *sgv_get_priv(struct sgv_pool_obj *sgv) - -

- -void *sgv_get_priv( - struct sgv_pool_obj *sgv) - - -This function allows to get the allocation private data for this SGV -cache object sgv. The private data are set by sgv_pool_alloc(). - - void scst_init_mem_lim() - -

- -void scst_init_mem_lim( - struct scst_mem_lim *mem_lim) - - -This function initializes memory limits structure mem_lim according to -the current system configuration. This structure should be latter used -to track and limit allocated by one or more SGV caches memory. - - - Runtime information and statistics. - -

-Runtime information and statistics is available in /sys/kernel/scst_tgt/sgv. - -