X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fobdclass%2Fuuid.c;h=2226f9058dd7b125ed04d42be9b73b2665287e84;hb=7f504e0c2f50b9c727ae0ce5f446a52f4bfeb5a2;hp=0e279fb572c59d548461e87a65cc1f80260b9822;hpb=93acd158c57c4c5d0fc751d46741231490c04707;p=fs%2Flustre-release.git diff --git a/lustre/obdclass/uuid.c b/lustre/obdclass/uuid.c index 0e279fb..2226f90 100644 --- a/lustre/obdclass/uuid.c +++ b/lustre/obdclass/uuid.c @@ -10,14 +10,21 @@ * Library General Public License. * %End-Header% */ -#include -#include - #define DEBUG_SUBSYSTEM S_CLASS +#ifdef __KERNEL__ +# include +# include +# include +# include +#else +# include +#endif + #include #include -#include +#include /* for LUSTRE_OST_NAME */ +#include /* for LUSTRE_MDC_NAME */ struct uuid { __u32 time_low; @@ -134,3 +141,26 @@ void class_uuid_unparse(class_uuid_t uu, struct obd_uuid *out) uuid.node[0], uuid.node[1], uuid.node[2], uuid.node[3], uuid.node[4], uuid.node[5]); } + +struct obd_device *client_tgtuuid2obd(struct obd_uuid *tgtuuid) +{ + int i; + + for (i = 0; i < MAX_OBD_DEVICES; i++) { + struct obd_device *obd = &obd_dev[i]; + if (obd->obd_type == NULL) + continue; + if ((strncmp(obd->obd_type->typ_name, LUSTRE_OSC_NAME, + sizeof LUSTRE_OSC_NAME) == 0) || + (strncmp(obd->obd_type->typ_name, LUSTRE_MDC_NAME, + sizeof LUSTRE_MDC_NAME) == 0)) { + struct client_obd *cli = &obd->u.cli; + struct obd_import *imp = cli->cl_import; + if (strncmp(tgtuuid->uuid, imp->imp_target_uuid.uuid, + sizeof(imp->imp_target_uuid)) == 0) + return obd; + } + } + + return NULL; +}