"active" attribute for vdisk_blockio devices is managed by an ALUA
state change (start/finish), for specific ALUA states (eg,
active/standby). Relying on ALUA state changes to open/close the
back-end block device does indeed work for some SCST configurations,
however, some users desire advanced control over this setting, and
prefer to handle opening/closing a back-end block device from the
cluster resource agent (RA) script. Certain ambiguous situations can
also arise if more than one target group exists per SCST device
group... in this case, a back-end device may flip/flop (opened/closed)
and may end up in an inconsistent state if care is not taken in the
implementation of the cluster RA.
The patch below makes the "active" sysfs attribute for vdisk_blockio
readable/writable by a user, thereby giving full control over a
device's opened/closed state. The default behavior for SCST
vdisk_blockio devices is to allow ALUA state changes to control the
opened/closed ("active") state of a back-end device
(bind_alua_state=1). If the user wishes to handle setting the "active"
attribute themselves via a script or cluster RA, they would set
bind_alua_state=0 for the vdisk_blockio device, and the "active"
attribute would not be modified on ALUA state changes, it is then left
up to the user to handle this.
The patch below also fixes a bug where the attribute value is not
changed when the appropriate ALUA state is set, unless a target
session exists for the target group target; see here for more
information: https://sourceforge.net/p/scst/mailman/message/35898014/
Signed-off-by: Marc A. Smith <marc.smith@parodyne.com>
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7212 d57e44dd-8a1f-0410-8b47-8ef2f437770f
The "numa_node_id" attribute reside in the scst_vdisk_dev struct as
signed integer and may well be negative values (eg, -1), so move fetching
it above the unsigned attributes and use kstrtoll() to retrieve the
values.
Signed-off-by: Marc A. Smith <marc.smith@parodyne.com>
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7205 d57e44dd-8a1f-0410-8b47-8ef2f437770f
Remove a few "shadow" declarations that appear unnecessary and probably
unintended. (These are cases where a declaration in an inner scope hides
another declaration of the same name in an outer scope.)
Not all shadow declarations are superfluous -- so this particular compiler
warning is one that cannot be simply heeded while half asleep. But these
particular ones I removed appear to be superfluous.
Signed-off-by: David Butterfield <dab21774@gmail.com>
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7201 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This is a "marginal" warning, but there are only six of them in the SCST code
and this fixes two of those.
session.c:105:4: warning: cast from function call of type void * to non-matching type _Bool [-Wbad-function-cast]
target.c:668:14: warning: cast from function call of type void * to non-matching type _Bool [-Wbad-function-cast]
Signed-off-by: David Butterfield <dab21774@gmail.com>
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7200 d57e44dd-8a1f-0410-8b47-8ef2f437770f