From: Matt Domsch <Matt_Domsch@dell.com>
To: linux-scsi@vger.kernel.org
Subject: Re: [RFC][PATCH 2.6.11-rc2] Linux SCSI hotplug infrastructure
Date: Tue, 8 Feb 2005 17:23:22 -0600 [thread overview]
Message-ID: <20050208232322.GC30086@lists.us.dell.com> (raw)
In-Reply-To: <20050208231923.GA30086@lists.us.dell.com>
On Tue, Feb 08, 2005 at 05:19:23PM -0600, Matt Domsch wrote:
> On Mon, Feb 07, 2005 at 12:27:53PM -0600, Matt Domsch wrote:
> > Below is a patch to add some hotplug infrastructure to the Linux SCSI
> > subsystem.
>
> I've added and reworked the megaraid_mbox driver to make use of this
> new infrastructure. I'll send that patch next. The rest is unchanged
> from yesterday.
And these are the changes megaid_mbox to use the new infrastructure.
--
Matt Domsch
Software Architect
Dell Linux Solutions linux.dell.com & www.dell.com/linux
Linux on Dell mailing lists @ http://lists.us.dell.com
You can import this changeset into BK by piping this whole message to
'| bk receive [path to repository]' or apply the patch as usual.
===================================================================
ChangeSet@1.2132.2.3, 2005-02-08 16:46:03-06:00, Matt_Domsch@dell.com
Release Date : Tue Feb 08 12:27:22 EST 2005 - Matt Domsch <Matt_Domsch@dell.com>
Current Version : 2.20.4.6 (scsi module), 2.20.2.5 (cmm module)
Older Version : 2.20.4.5 (scsi module), 2.20.2.5 (cmm module)
1. Added two new megaraid_shost_attrs
/sys/class/scsi_host
|-- host0
| |-- logical_drive_created
| |-- logical_drive_destroyed
and helper functions for them. Written to from userspace by
a management application, these invoke SCSI hotplug
infrastructure for informing the kernel that a logical drive
has been created, or will be destroyed quite soon.
echo "2" > logical_drive_created
after creating logical drive #2 in the management app
echo "4" > logical_drive_destroyed
immediately before destroying logical drive #4 in the
management app. Eventually these functions should be called
directly from the management app.
2. Made class_device_megaraid_mbox_app_hndl and
dev_attr_megaraid_mbox_ld static.
Signed-off-by: Matt Domsch <Matt_Domsch@dell.com>
Documentation/scsi/ChangeLog.megaraid | 26 +++++++++
drivers/scsi/megaraid/megaraid_mbox.c | 97 ++++++++++++++++++++++++++++++----
drivers/scsi/megaraid/megaraid_mbox.h | 4 -
3 files changed, 116 insertions, 11 deletions
diff -Nru a/Documentation/scsi/ChangeLog.megaraid b/Documentation/scsi/ChangeLog.megaraid
--- a/Documentation/scsi/ChangeLog.megaraid 2005-02-08 17:16:27 -06:00
+++ b/Documentation/scsi/ChangeLog.megaraid 2005-02-08 17:16:27 -06:00
@@ -1,3 +1,29 @@
+Release Date : Tue Feb 08 12:27:22 EST 2005 - Matt Domsch <Matt_Domsch@dell.com>
+Current Version : 2.20.4.6 (scsi module), 2.20.2.5 (cmm module)
+Older Version : 2.20.4.5 (scsi module), 2.20.2.5 (cmm module)
+
+1. Added two new megaraid_shost_attrs
+ /sys/class/scsi_host
+ |-- host0
+ | |-- logical_drive_created
+ | |-- logical_drive_destroyed
+
+ and helper functions for them. Written to from userspace by
+ a management application, these invoke SCSI hotplug
+ infrastructure for informing the kernel that a logical drive
+ has been created, or will be destroyed quite soon.
+ echo "2" > logical_drive_created
+ after creating logical drive #2 in the management app
+ echo "4" > logical_drive_destroyed
+ immediately before destroying logical drive #4 in the
+ management app. Eventually these functions should be called
+ directly from the management app.
+
+2. Made class_device_megaraid_mbox_app_hndl and
+ dev_attr_megaraid_mbox_ld static.
+
+
+
Release Date : Thu Feb 03 12:27:22 EST 2005 - Seokmann Ju <sju@lsil.com>
Current Version : 2.20.4.5 (scsi module), 2.20.2.5 (cmm module)
Older Version : 2.20.4.4 (scsi module), 2.20.2.4 (cmm module)
diff -Nru a/drivers/scsi/megaraid/megaraid_mbox.c b/drivers/scsi/megaraid/megaraid_mbox.c
--- a/drivers/scsi/megaraid/megaraid_mbox.c 2005-02-08 17:16:27 -06:00
+++ b/drivers/scsi/megaraid/megaraid_mbox.c 2005-02-08 17:16:27 -06:00
@@ -69,6 +69,7 @@
* For history of changes, see Documentation/ChangeLog.megaraid
*/
+#include <scsi/scsi_hotplug.h>
#include "megaraid_mbox.h"
static int megaraid_init(void);
@@ -470,29 +471,107 @@
}
};
+/*
+ * sysfs class device support
+ * creates two files:
+ * /sys/class/scsi_host
+ * |-- host0
+ * | |-- logical_drive_created
+ * | |-- logical_drive_destroyed
+ *
+ * These make the midlayer invoke /sbin/hotplug, which then calls back into sysfs
+ * /sys/class/scsi_host
+ * |-- host0
+ * | |-- scan
+ *
+ * and
+ *
+ * /sys/devices/pci0000:0x/0000:0x:0x.0/host0
+ * |-- 0:0:0:0
+ * | |-- delete
+ *
+ * respectively. This allows userspace applications to work
+ * using their logical drive number, and lets the driver translate
+ * that into host, channel, id, and lun values which the other
+ * mechanisms require. This is similar to how hot plug CPU works.
+ */
+/**
+ * lda_to_hcil()
+ * @adapter
+ * @lda - logical drive address
+ * @host_no
+ * @channel
+ * @id
+ * @lun
+ *
+ * converts a logical drive address into a host, channel id, lun tuple.
+ */
-// definitions for the device attributes for exporting logical drive number
-// for a scsi address (Host, Channel, Id, Lun)
-
-CLASS_DEVICE_ATTR(megaraid_mbox_app_hndl, S_IRUSR, megaraid_sysfs_show_app_hndl,
+static inline int megaraid_lda_to_hcil(struct Scsi_Host *shost, u32 lda,
+ u32 *host_no, u32 *channel, u32 *id, u32 *lun)
+{
+ if (lda > MAX_LOGICAL_DRIVES_40LD)
+ return -EINVAL;
+ *host_no = shost->host_no;
+ *channel = shost->max_channel;
+ *id = (lda < shost->this_id) ? lda : lda + 1;
+ *lun = 0;
+ return 0;
+}
+
+static int megaraid_host_store(struct class_device *class_dev, const char *buf, size_t count,
+ enum scsi_topology_action action)
+{
+ struct Scsi_Host *shost = class_to_shost(class_dev);
+ int fields=0, rc=-EINVAL;
+ u32 lda=0, host_no=0, channel=0, id=0, lun=0;
+ fields = sscanf(buf, "%u", &lda);
+ if (fields != 1)
+ return rc;
+ if (lda > MAX_LOGICAL_DRIVES_40LD)
+ return rc;
+ rc = megaraid_lda_to_hcil(shost, lda, &host_no, &channel, &id, &lun);
+ if (rc)
+ return rc;
+
+ rc = scsi_topology_hctl_action(shost, channel, id, lun, action);
+
+ if (rc)
+ return rc;
+ return count;
+}
+
+static ssize_t megaraid_host_store_ld_created(struct class_device *class_dev, const char *buf, size_t count)
+{
+ return megaraid_host_store(class_dev, buf, count, SCSI_TOPOLOGY_ADDED);
+}
+static ssize_t megaraid_host_store_ld_destroyed(struct class_device *class_dev, const char *buf, size_t count)
+{
+ return megaraid_host_store(class_dev, buf, count, SCSI_TOPOLOGY_REMOVED);
+}
+
+#define MEGARAID_HOST_WOATTR(_name,_store) \
+CLASS_DEVICE_ATTR(_name, S_IWUSR|S_IWGRP, NULL, _store)
+
+static MEGARAID_HOST_WOATTR(logical_drive_created, megaraid_host_store_ld_created);
+static MEGARAID_HOST_WOATTR(logical_drive_destroyed, megaraid_host_store_ld_destroyed);
+static CLASS_DEVICE_ATTR(megaraid_mbox_app_hndl, S_IRUSR, megaraid_sysfs_show_app_hndl,
NULL);
-// Host template initializer for megaraid mbox sysfs device attributes
static struct class_device_attribute *megaraid_shost_attrs[] = {
&class_device_attr_megaraid_mbox_app_hndl,
+ &class_device_attr_logical_drive_created,
+ &class_device_attr_logical_drive_destroyed,
NULL,
};
+static DEVICE_ATTR(megaraid_mbox_ld, S_IRUSR, megaraid_sysfs_show_ldnum, NULL);
-DEVICE_ATTR(megaraid_mbox_ld, S_IRUSR, megaraid_sysfs_show_ldnum, NULL);
-
-// Host template initializer for megaraid mbox sysfs device attributes
static struct device_attribute *megaraid_sdev_attrs[] = {
&dev_attr_megaraid_mbox_ld,
NULL,
};
-
/*
* Scsi host template for megaraid unified driver
diff -Nru a/drivers/scsi/megaraid/megaraid_mbox.h b/drivers/scsi/megaraid/megaraid_mbox.h
--- a/drivers/scsi/megaraid/megaraid_mbox.h 2005-02-08 17:16:27 -06:00
+++ b/drivers/scsi/megaraid/megaraid_mbox.h 2005-02-08 17:16:27 -06:00
@@ -21,8 +21,8 @@
#include "megaraid_ioctl.h"
-#define MEGARAID_VERSION "2.20.4.5"
-#define MEGARAID_EXT_VERSION "(Release Date: Thu Feb 03 12:27:22 EST 2005)"
+#define MEGARAID_VERSION "2.20.4.6"
+#define MEGARAID_EXT_VERSION "(Release Date: Tue Feb 08 12:27:22 EST 2005)"
/*
===================================================================
This BitKeeper patch contains the following changesets:
1.2132.2.3
## Wrapped with gzip_uu ##
M'XL( $M("4( \U9^U/;2!+^V?HK^D@=!:P?>OJ5P,%B7]:U)% VD+U:ME1C
M:8P4]/!I) BWWO_]ND>2'\$$ \G5&<>6QC-?=W_=T]VCO($+P9-NY0-+4[L7
MA\+QE#?P2RS2;L7E05!WXA 'AG&, PTO#GDC=.6TQOBF(1SA-P(_RK[4]'JS
M1K<U+TZG07:MX*HSECH>W/)$="M:W9B/I/=3WJT,^^\O3HZ&BK*_#\<>BZ[Y
MB*>POZ^D<7++ E<<LM0+XJB>)BP2(4\9*3.;3YWIJJKCGZ6U#-5JSK2F:K9F
MCN9J&C,U[JJZV6Z:RI)EAZ5%OQ<V_+&*9B%:&P$-39^9;4-M*CW0ZKIFZ'6]
M;H!J-52]H;9!:W;-9E<U:BI^JK!. OQD0$U5?H;O:\RQXL"0!YP)#CV6\DH7
MSC,._^1C(+WTKM[JZCKT1^= ]D!-*@>Y<O!NG:8'"'F<)0F/4KA$5_EQA*AH
ML5HWZTW8(:="&+M9P'>K^;A>MV#'"<-R&!%. Y<G#]=;FZ['MU:O'+DN=R&]
MBR'B=Q#R:Y8PW[6%A_%HH^Z)P'F5AK@7#2=@0L@ M.E7&I_5:D#7JKP! !H(
MXFO?88'M)OXMMYV$(VONXQ-<+M(DOL^GT#\6N>#Q8(K63;+(2=$\ 9,X@=3C
M81W@4^*G*8_0SS!)T.\9;B<Q90Z'\;U<#R&+V#4/B5\VG08HC$"J!(!>]*/;
M^(;#Z'@T@'+KX#(_FB0,5<F<-$NX%(A#<1+ZT36MA!N>1#S 2X:PI1$@C:#U
M'A,PYJA787$5$.'.#P(<A;F1\._,3SF(& .35B$EP!TOABU]"PX>Y:Y\L4F*
MM,AQ4FM%"7BCH\92U54"5N68#^6LN, /0^[Z*#>X1\V1@+GV:R2:A41:N"H4
M'=6_Q>N,!0B4,[]P)\97%KC$#((%N6#73[B3XF3IU8=FU/.@U>N8.EU<2.&(
MJM_Z#K?G@1N.XR\V3K:]R T 0VF)/)PK0_JKV:B'2)%/IQ P\J\C[M;BR:0V
MON]NLIU_!=.R=$TY6V15I?;,EZ*H3%4.X#/_/#X,L^ Z8;>\OA/%$=_]G0;_
MF$G.DWP+-DH;&BO&U!U*:Z;:UEJ8S]JF,3,T4^W,QBK73#8V3&X8G9:JK\V@
MFPO(T[9N6F9G9JAZFQ1G:1:$AX'P<ZQ>[&3D.;GU<L2<G)/XNEY"$I:AFJ2L
MA=E_AJ M'7.P@;FW-;:XQDW#7*_KQOC+NC9-LVF]GF3O <EZIV/-^*2IMS1W
M8K;:5G/")B\GV7N@. K39=W>R&ZJZ3_,'T_4]V<Z1K5TRYR9K8ZNRMJOZ:M5
MW^J:G6]6?;WYH\K^Q=3%-"B[*32%D@DX$@:3(.[Y/)A.H9;<U9(:O3$!;&3]
M"Y+#0 6]J7SW1N2U;<CKFI K9;,.9'W_L=1]/-%[/-EY5)37=1TOZCE>UW&\
MI-_8K-MX7:^Q::?QPC[C=5W&!CW&E?+<!F/S]N)*_E$6WZC24A;_W[0#3Z3T
M9_8%>4HW6DW3RE.Z^<R4WFY#K?-#4CHF&\!<,A'P539IK,;IG^6FF@?L7U4,
M%=S",09-4F#$X\\836+NWU\A;X:*FG!7U(2-Z'M)36AIH"EO_,@),HS7=Q*_
ML$BFF+IWH S,E@ZZJ33V%-A;MAWRR :13:=QDM*ON=%")N.)'W#1I=&UR1?'
M%^F7;KZ9@!^=L,@'(/4[ESM8$BTWI^\&[)XG9?YLB+$?-0KKJG#G^?1LPZ,D
MB!L<\R%S;G NYFAIZ+.U%PZ+"DWDSMZ;(^1DB<;4\55\==4OC>(;WW6UL8!"
M&!RFOV5D#&Z>\@(QX6**@8,$!/>8P<X]7P#J']^)I;*R5$4$59V[.+FAQ9DH
MRH.??)4EHRP<\Z0J&Q64)B2%>?"!W#H!DRKD!4721&I795>#A:8*OENLSB+
MG9=A+,PYSB.?EH><%O@B%&@)UI>$ET;@6_BA'[ $)/@=%3L@9\'QV84T0=01
MHD%A:8"F85A*1@*7V6EL>XX?[.S2P"%SV33-Y1WBKU#[RECFNDBC=/&A;!6B
M6%X7MLAKW\V79Z53G3A",I 9MAXM)X6MTB)9(4;2;!KP7/V>V;+ )"O:8':4
M/ '@ZL"/J-BGBSYFV;*\UL.(XI >^,&>R"5EADX45)4*OHIR0F-[A67YC+VY
MG^0=J24O4+==Y4^LJ!/8(:H.X,/1;_;)Z?O!\=&)W1L.+OLCVU1/>KN(GW!L
M-B*H]0<?+X].WBJ54@;L@]2F=E ,T&\E!?/?0O;%+@;I=SQJR-=^+OE=.2W%
M:+!]=Q?^079!5W[^!!JM(2KS-2K>%OK@Y5]8&^=$+C$HU1%8"WA)X')E1E;*
MNRKY%UE%_1+8&V>3*D;C?[B-(W$6I9+=@ER.>P5D/DCC:8RQ<&\SV31 _D5\
MEG7]$:^A_KED]*X<V)DKLON6FKL4<RC'ZK6O5B%Q]A>,%]ZF\8)JNBQ8I4O?
MI4_D:9\8RE'(!92>)CO2L*V_9UM5V$88*0P]7TS[VSYH2WY.G+?/"PRY(,'>
MXY$0S@.6@A6VY]&Y/8_,;8K*;8K(0F[B? 5^5<"OLN]A5U:XH)2QDI40L5KZ
M1F*LQ2ZOI;]7(DH4D; FJM"^LE"]+L#D)BPT6!>]2SAR;1Z5\E!@GY^>G:)C
M_F4?]7K]WB[IOIGF\PKZ?Z#[L/_A]++0_DIYX_()I<,/_?='PZ-!S_[E='1N
M?SH].C\?[M@1"WDU!]^%*^7XY&@TLGO]R\%QWUZ: 2-[\.EB-)S1]_OA614^
M7IR<5*%8N7#P6BEKNY'J$T& ZF^..:?_4=3YC 7N0V/7'R^D]4.T?@E<-C:4
M<.X6T[ <M:D5')AM W2ELKUR=)%GDO5,;#!U82#!-U%*8<3CZ@?N$XH'+J;?
MW)-("BK?!@._.A:B;WHZ\K[#Z6C#YWC?X73DK9Z.+'J@IW;DZ:CSW.==4--_
MR-GHYRR<E@^[Z/&6?.3X@J.,]X*C3$\W,7 'NH6?#_+&97\X&IQ^K&R5SZ:V
M'L[I_W:^F+>S_)SLVX_)=K<6_VWJ>-RY$5FXKXW52=,<6\I_ 9(%20&L'0
next prev parent reply other threads:[~2005-02-08 23:23 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-02-07 18:27 [RFC][PATCH 2.6.11-rc2] Linux SCSI hotplug infrastructure Matt Domsch
2005-02-07 18:27 ` Matt Domsch
2005-02-07 18:29 ` Matt Domsch
2005-02-07 18:29 ` Matt Domsch
2005-02-07 18:29 ` Matt Domsch
2005-02-07 18:29 ` Matt Domsch
2005-02-07 18:30 ` Matt Domsch
2005-02-07 18:30 ` Matt Domsch
2005-02-07 19:22 ` Brian King
2005-02-07 19:22 ` Brian King
2005-02-07 19:40 ` Matt Domsch
2005-02-07 19:40 ` Matt Domsch
2005-02-08 23:19 ` Matt Domsch
2005-02-08 23:19 ` Matt Domsch
2005-02-08 23:22 ` Matt Domsch
2005-02-08 23:23 ` Matt Domsch [this message]
-- strict thread matches above, loose matches on Subject: below --
2005-04-14 18:24 Matt Domsch
2005-04-14 19:00 ` Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050208232322.GC30086@lists.us.dell.com \
--to=matt_domsch@dell.com \
--cc=linux-scsi@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.