
61
Symmetrix Fibre Channel with Qlogic HBAs on Linux Hosts
Fabric Configurations
Edit sg.h
The value for the SCSI generic buffer must be increased. Change to
the appropriate directory and increase the value for
SG_SCATTER_SZ to the maximum of 131072.
cd /usr/src/linux/include/scsi
vi sg.h
Around line 195, look for the following code block:
Change the value for SG_SCATTER_SZ (8* 4096) to (32 * 4096).
After the kernel compilation and system reboot, using the following
command can validate this change:
cat /proc/sys/kernel/sg-big-buff
Proceed to Configuring and Compiling the Kernel on page 64 to compile
the Linux kernel.
Additional Notes Dynamic Device Reconfiguration
Linux currently lacks a command built into the kernel that allows for
a dynamic SCSI channel reconfiguration like drvconfig or ioscan.
Depending upon the hardware configuration and on whether the
QLogic driver has been loaded into the kernel as a module, the
QLogic driver can be unloaded and then reloaded. If the QLogic
driver has been loaded as a module, this unloading and reloading
will cause a scan of the SCSI bus. The driver should detect the newly
added device(s). If the QLogic driver is loaded into the kernel
statically, the system will need to be rebooted in order for the devices
to be detected reliably.
The modprobe command is a wrapper or an extension to insmod. It
uses and maintains a set of files that describe all the modules that are
available for the current kernel in /lib/modules. modprobe can be
used to load and unload an entire set of modules in addition to just a
single module. Both the loading and unloading of the QLogic
modular driver is done with modprobe.
#define SG_SCATTER_SZ (8 * 4096) /* PAGE_SIZE not available to user */
/* Largest size (in bytes) a single scatter-gather list element can have.
The value must be a power of 2 and <= (PAGE_SIZE * 32) [131072 bytes on
i386]. The minimum value is PAGE_SIZE. If scatter-gather not supported
by adapter then this value is the largest data block that can be
read/written by a single scsi command. The user can find the value of
PAGE_SIZE by calling getpagesize() defined in unistd.h . */
Commentaires sur ces manuels