* [ndctl PATCH] ndctl, monitor: support NVDIMM_FAMILY_HYPERV
@ 2019-02-15 6:38 Dexuan Cui
2019-02-15 8:31 ` Johannes Thumshirn
2019-02-15 9:26 ` qi.fuli
0 siblings, 2 replies; 6+ messages in thread
From: Dexuan Cui @ 2019-02-15 6:38 UTC (permalink / raw)
To: Dave Jiang, Vishal Verma, Dan Williams,
linux-nvdimm-hn68Rpc1hR1g9hUCZPvPmw
Cc: Michael Kelley
Currently "ndctl monitor" fails for NVDIMM_FAMILY_HYPERV due to
"no smart support".
Actually NVDIMM_FAMILY_HYPERV doesn't use ND_CMD_SMART to get the health
info. Instead, it uses ND_CMD_CALL, so the checking here can't apply,
and NVDIMM_FAMILY_HYPERV doesn't support threshold alarms.
Let's skip the unnecessary checking for NVDIMM_FAMILY_HYPERV.
With the patch, when an error happens, we can log it with such a message:
{"timestamp":"1550209474.683237420","pid":3874,"event":
{"dimm-spares-remaining":false,"dimm-media-temperature":false,
"dimm-controller-temperature":false,"dimm-health-state":true,
"dimm-unclean-shutdown":false},"dimm":{"dev":"nmem1",
"id":"04d5-01-1701-01000000","handle":1,"phys_id":0,"health":
{"health_state":"critical","shutdown_count":8}}}
Here the meaning info is:
"health": {"health_state":"critical","shutdown_count":8}
Signed-off-by: Dexuan Cui <decui-0li6OtcxBFHby3iVrkZq2A@public.gmane.org>
---
ndctl/lib/libndctl.c | 5 +++++
ndctl/lib/libndctl.sym | 1 +
ndctl/libndctl.h | 1 +
ndctl/monitor.c | 33 ++++++++++++++++++++++++++-------
4 files changed, 33 insertions(+), 7 deletions(-)
diff --git a/ndctl/lib/libndctl.c b/ndctl/lib/libndctl.c
index 48bdb27..1186579 100644
--- a/ndctl/lib/libndctl.c
+++ b/ndctl/lib/libndctl.c
@@ -1550,6 +1550,11 @@ NDCTL_EXPORT struct ndctl_dimm *ndctl_dimm_get_next(struct ndctl_dimm *dimm)
return list_next(&bus->dimms, dimm, list);
}
+NDCTL_EXPORT unsigned long ndctl_dimm_get_cmd_family(struct ndctl_dimm *dimm)
+{
+ return dimm->cmd_family;
+}
+
NDCTL_EXPORT unsigned int ndctl_dimm_get_handle(struct ndctl_dimm *dimm)
{
return dimm->handle;
diff --git a/ndctl/lib/libndctl.sym b/ndctl/lib/libndctl.sym
index cb9f769..470e895 100644
--- a/ndctl/lib/libndctl.sym
+++ b/ndctl/lib/libndctl.sym
@@ -38,6 +38,7 @@ global:
ndctl_bus_wait_probe;
ndctl_dimm_get_first;
ndctl_dimm_get_next;
+ ndctl_dimm_get_cmd_family;
ndctl_dimm_get_handle;
ndctl_dimm_get_phys_id;
ndctl_dimm_get_vendor;
diff --git a/ndctl/libndctl.h b/ndctl/libndctl.h
index 0debdb6..cb5a8fc 100644
--- a/ndctl/libndctl.h
+++ b/ndctl/libndctl.h
@@ -145,6 +145,7 @@ struct ndctl_dimm *ndctl_dimm_get_next(struct ndctl_dimm *dimm);
for (dimm = ndctl_dimm_get_first(bus); \
dimm != NULL; \
dimm = ndctl_dimm_get_next(dimm))
+unsigned long ndctl_dimm_get_cmd_family(struct ndctl_dimm *dimm);
unsigned int ndctl_dimm_get_handle(struct ndctl_dimm *dimm);
unsigned short ndctl_dimm_get_phys_id(struct ndctl_dimm *dimm);
unsigned short ndctl_dimm_get_vendor(struct ndctl_dimm *dimm);
diff --git a/ndctl/monitor.c b/ndctl/monitor.c
index 43b2abe..6adc305 100644
--- a/ndctl/monitor.c
+++ b/ndctl/monitor.c
@@ -265,31 +265,50 @@ static bool filter_region(struct ndctl_region *region,
return true;
}
-static void filter_dimm(struct ndctl_dimm *dimm, struct util_filter_ctx *fctx)
+static bool ndctl_dimm_test_and_enable_notification(struct ndctl_dimm *dimm)
{
- struct monitor_dimm *mdimm;
- struct monitor_filter_arg *mfa = fctx->monitor;
const char *name = ndctl_dimm_get_devname(dimm);
+ /*
+ * Hyper-V Virtual NVDIMM doesn't use ND_CMD_SMART to get the health
+ * info. Instead, it uses ND_CMD_CALL, so the checking here can't
+ * apply, and it doesn't support threshold alarms.
+ */
+ if (ndctl_dimm_get_cmd_family(dimm) == NVDIMM_FAMILY_HYPERV)
+ return true;
+
if (!ndctl_dimm_is_cmd_supported(dimm, ND_CMD_SMART)) {
err(&monitor, "%s: no smart support\n", name);
- return;
+ return false;
}
if (!ndctl_dimm_is_cmd_supported(dimm, ND_CMD_SMART_THRESHOLD)) {
err(&monitor, "%s: no smart threshold support\n", name);
- return;
+ return false;
}
if (!ndctl_dimm_is_flag_supported(dimm, ND_SMART_ALARM_VALID)) {
err(&monitor, "%s: smart alarm invalid\n", name);
- return;
+ return false;
}
if (enable_dimm_supported_threshold_alarms(dimm)) {
err(&monitor, "%s: enable supported threshold alarms failed\n", name);
- return;
+ return false;
}
+ return true;
+}
+
+static void filter_dimm(struct ndctl_dimm *dimm, struct util_filter_ctx *fctx)
+{
+ struct monitor_dimm *mdimm;
+ struct monitor_filter_arg *mfa = fctx->monitor;
+ const char *name = ndctl_dimm_get_devname(dimm);
+
+
+ if (!ndctl_dimm_test_and_enable_notification(dimm))
+ return;
+
mdimm = calloc(1, sizeof(struct monitor_dimm));
if (!mdimm) {
err(&monitor, "%s: calloc for monitor dimm failed\n", name);
--
2.19.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [ndctl PATCH] ndctl, monitor: support NVDIMM_FAMILY_HYPERV
2019-02-15 6:38 [ndctl PATCH] ndctl, monitor: support NVDIMM_FAMILY_HYPERV Dexuan Cui
@ 2019-02-15 8:31 ` Johannes Thumshirn
2019-02-15 9:26 ` qi.fuli
1 sibling, 0 replies; 6+ messages in thread
From: Johannes Thumshirn @ 2019-02-15 8:31 UTC (permalink / raw)
To: Dexuan Cui; +Cc: Michael Kelley, linux-nvdimm
Looks good,
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
--
Johannes Thumshirn SUSE Labs Filesystems
jthumshirn@suse.de +49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)
Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm
^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [ndctl PATCH] ndctl, monitor: support NVDIMM_FAMILY_HYPERV
2019-02-15 6:38 [ndctl PATCH] ndctl, monitor: support NVDIMM_FAMILY_HYPERV Dexuan Cui
2019-02-15 8:31 ` Johannes Thumshirn
@ 2019-02-15 9:26 ` qi.fuli
[not found] ` <OSAPR01MB3396F103A8B3B5569F26D4DDF7600-OxqQCv4d1nQ3UXb08eLJjncolHNk5qUtvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
1 sibling, 1 reply; 6+ messages in thread
From: qi.fuli @ 2019-02-15 9:26 UTC (permalink / raw)
To: 'Dexuan Cui',
Dave Jiang, Vishal Verma, Dan Williams, linux-nvdimm
Cc: Michael Kelley
> -----Original Message-----
> From: Linux-nvdimm <linux-nvdimm-bounces@lists.01.org> On Behalf Of Dexuan Cui
> Sent: Friday, February 15, 2019 3:38 PM
> To: Dave Jiang <dave.jiang@intel.com>; Vishal Verma <vishal.l.verma@intel.com>;
> Dan Williams <dan.j.williams@intel.com>; linux-nvdimm@lists.01.org
> Cc: Michael Kelley <mikelley@microsoft.com>
> Subject: [ndctl PATCH] ndctl, monitor: support NVDIMM_FAMILY_HYPERV
>
>
> Currently "ndctl monitor" fails for NVDIMM_FAMILY_HYPERV due to
> "no smart support".
>
> Actually NVDIMM_FAMILY_HYPERV doesn't use ND_CMD_SMART to get the health
> info. Instead, it uses ND_CMD_CALL, so the checking here can't apply,
> and NVDIMM_FAMILY_HYPERV doesn't support threshold alarms.
>
> Let's skip the unnecessary checking for NVDIMM_FAMILY_HYPERV.
>
> With the patch, when an error happens, we can log it with such a message:
>
> {"timestamp":"1550209474.683237420","pid":3874,"event":
> {"dimm-spares-remaining":false,"dimm-media-temperature":false,
> "dimm-controller-temperature":false,"dimm-health-state":true,
> "dimm-unclean-shutdown":false},"dimm":{"dev":"nmem1",
> "id":"04d5-01-1701-01000000","handle":1,"phys_id":0,"health":
> {"health_state":"critical","shutdown_count":8}}}
>
> Here the meaning info is:
> "health": {"health_state":"critical","shutdown_count":8}
>
> Signed-off-by: Dexuan Cui <decui@microsoft.com>
> ---
> ndctl/lib/libndctl.c | 5 +++++
> ndctl/lib/libndctl.sym | 1 +
> ndctl/libndctl.h | 1 +
> ndctl/monitor.c | 33 ++++++++++++++++++++++++++-------
> 4 files changed, 33 insertions(+), 7 deletions(-)
>
> diff --git a/ndctl/lib/libndctl.c b/ndctl/lib/libndctl.c
> index 48bdb27..1186579 100644
> --- a/ndctl/lib/libndctl.c
> +++ b/ndctl/lib/libndctl.c
> @@ -1550,6 +1550,11 @@ NDCTL_EXPORT struct ndctl_dimm
> *ndctl_dimm_get_next(struct ndctl_dimm *dimm)
> return list_next(&bus->dimms, dimm, list);
> }
>
> +NDCTL_EXPORT unsigned long ndctl_dimm_get_cmd_family(struct ndctl_dimm
> *dimm)
> +{
> + return dimm->cmd_family;
> +}
> +
> NDCTL_EXPORT unsigned int ndctl_dimm_get_handle(struct ndctl_dimm *dimm)
> {
> return dimm->handle;
> diff --git a/ndctl/lib/libndctl.sym b/ndctl/lib/libndctl.sym
> index cb9f769..470e895 100644
> --- a/ndctl/lib/libndctl.sym
> +++ b/ndctl/lib/libndctl.sym
> @@ -38,6 +38,7 @@ global:
> ndctl_bus_wait_probe;
> ndctl_dimm_get_first;
> ndctl_dimm_get_next;
> + ndctl_dimm_get_cmd_family;
> ndctl_dimm_get_handle;
> ndctl_dimm_get_phys_id;
> ndctl_dimm_get_vendor;
> diff --git a/ndctl/libndctl.h b/ndctl/libndctl.h
> index 0debdb6..cb5a8fc 100644
> --- a/ndctl/libndctl.h
> +++ b/ndctl/libndctl.h
> @@ -145,6 +145,7 @@ struct ndctl_dimm *ndctl_dimm_get_next(struct ndctl_dimm
> *dimm);
> for (dimm = ndctl_dimm_get_first(bus); \
> dimm != NULL; \
> dimm = ndctl_dimm_get_next(dimm))
> +unsigned long ndctl_dimm_get_cmd_family(struct ndctl_dimm *dimm);
> unsigned int ndctl_dimm_get_handle(struct ndctl_dimm *dimm);
> unsigned short ndctl_dimm_get_phys_id(struct ndctl_dimm *dimm);
> unsigned short ndctl_dimm_get_vendor(struct ndctl_dimm *dimm);
> diff --git a/ndctl/monitor.c b/ndctl/monitor.c
> index 43b2abe..6adc305 100644
> --- a/ndctl/monitor.c
> +++ b/ndctl/monitor.c
> @@ -265,31 +265,50 @@ static bool filter_region(struct ndctl_region *region,
> return true;
> }
>
> -static void filter_dimm(struct ndctl_dimm *dimm, struct util_filter_ctx *fctx)
> +static bool ndctl_dimm_test_and_enable_notification(struct ndctl_dimm *dimm)
> {
> - struct monitor_dimm *mdimm;
> - struct monitor_filter_arg *mfa = fctx->monitor;
> const char *name = ndctl_dimm_get_devname(dimm);
>
> + /*
> + * Hyper-V Virtual NVDIMM doesn't use ND_CMD_SMART to get the health
> + * info. Instead, it uses ND_CMD_CALL, so the checking here can't
> + * apply, and it doesn't support threshold alarms.
> + */
> + if (ndctl_dimm_get_cmd_family(dimm) == NVDIMM_FAMILY_HYPERV)
Hi,
I think it would be better to add a checking monitor.event_flags step here.
Users should be notified if they setup monitoring smart threshold events on NVDIMM_FAMILY_HYPERV.
QI
> + return true;
> +
> if (!ndctl_dimm_is_cmd_supported(dimm, ND_CMD_SMART)) {
> err(&monitor, "%s: no smart support\n", name);
> - return;
> + return false;
> }
> if (!ndctl_dimm_is_cmd_supported(dimm, ND_CMD_SMART_THRESHOLD))
> {
> err(&monitor, "%s: no smart threshold support\n", name);
> - return;
> + return false;
> }
>
> if (!ndctl_dimm_is_flag_supported(dimm, ND_SMART_ALARM_VALID)) {
> err(&monitor, "%s: smart alarm invalid\n", name);
> - return;
> + return false;
> }
>
> if (enable_dimm_supported_threshold_alarms(dimm)) {
> err(&monitor, "%s: enable supported threshold alarms failed\n",
> name);
> - return;
> + return false;
> }
>
> + return true;
> +}
> +
> +static void filter_dimm(struct ndctl_dimm *dimm, struct util_filter_ctx *fctx)
> +{
> + struct monitor_dimm *mdimm;
> + struct monitor_filter_arg *mfa = fctx->monitor;
> + const char *name = ndctl_dimm_get_devname(dimm);
> +
> +
> + if (!ndctl_dimm_test_and_enable_notification(dimm))
> + return;
> +
> mdimm = calloc(1, sizeof(struct monitor_dimm));
> if (!mdimm) {
> err(&monitor, "%s: calloc for monitor dimm failed\n", name);
> --
> 2.19.1
>
> _______________________________________________
> Linux-nvdimm mailing list
> Linux-nvdimm@lists.01.org
> https://lists.01.org/mailman/listinfo/linux-nvdimm
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm
^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [ndctl PATCH] ndctl, monitor: support NVDIMM_FAMILY_HYPERV
[not found] ` <OSAPR01MB3396F103A8B3B5569F26D4DDF7600-OxqQCv4d1nQ3UXb08eLJjncolHNk5qUtvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
@ 2019-02-16 7:25 ` Dexuan Cui
2019-02-18 1:52 ` qi.fuli
0 siblings, 1 reply; 6+ messages in thread
From: Dexuan Cui @ 2019-02-16 7:25 UTC (permalink / raw)
To: qi.fuli-LMvhtfratI1BDgjK7y7TUQ, Dave Jiang, Vishal Verma,
Dan Williams, linux-nvdimm-hn68Rpc1hR1g9hUCZPvPmw
Cc: Michael Kelley
> From: qi.fuli-LMvhtfratI1BDgjK7y7TUQ@public.gmane.org <qi.fuli-LMvhtfratI1BDgjK7y7TUQ@public.gmane.org>
> Sent: Friday, February 15, 2019 1:26 AM
> > ...
> > --- a/ndctl/monitor.c
> > +++ b/ndctl/monitor.c
> > @@ -265,31 +265,50 @@ static bool filter_region(struct ndctl_region
> *region,
> > return true;
> > }
> >
> > -static void filter_dimm(struct ndctl_dimm *dimm, struct util_filter_ctx *fctx)
> > +static bool ndctl_dimm_test_and_enable_notification(struct ndctl_dimm
> *dimm)
> > {
> > - struct monitor_dimm *mdimm;
> > - struct monitor_filter_arg *mfa = fctx->monitor;
> > const char *name = ndctl_dimm_get_devname(dimm);
> >
> > + /*
> > + * Hyper-V Virtual NVDIMM doesn't use ND_CMD_SMART to get the
> > health
> > + * info. Instead, it uses ND_CMD_CALL, so the checking here can't
> > + * apply, and it doesn't support threshold alarms.
> > + */
> > + if (ndctl_dimm_get_cmd_family(dimm) == NVDIMM_FAMILY_HYPERV)
> > + return true;
>
> Hi,
>
> I think it would be better to add a checking monitor.event_flags step here.
> Users should be notified if they setup monitoring smart threshold events on
> NVDIMM_FAMILY_HYPERV.
>
> QI
Hi Qi,
Unluckily NVDIMM_FAMILY_HYPERV doesn't support monitoring smart
threshold events. Please see the _DSM Interface for Hyper-V Virtual NVDIMM
at https://uefi.org/RFIC_LIST (Virtual NVDIMM 0x1901).
So there is no ops->new_smart_threshold defined for
NVDIMM_FAMILY_HYPERV.
The patch only skips the checks for NVDIMM_FAMILY_HYPERV, and the behavior
for the others remains the same.
Thanks,
-- Dexuan
^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [ndctl PATCH] ndctl, monitor: support NVDIMM_FAMILY_HYPERV
2019-02-16 7:25 ` Dexuan Cui
@ 2019-02-18 1:52 ` qi.fuli
[not found] ` <OSAPR01MB3396721CFC3535CC201B799DF7630-OxqQCv4d1nQ3UXb08eLJjncolHNk5qUtvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
0 siblings, 1 reply; 6+ messages in thread
From: qi.fuli @ 2019-02-18 1:52 UTC (permalink / raw)
To: 'Dexuan Cui',
Dave Jiang, Vishal Verma, Dan Williams, linux-nvdimm
Cc: Michael Kelley
> -----Original Message-----
> From: Dexuan Cui <decui@microsoft.com>
> Sent: Saturday, February 16, 2019 4:26 PM
> To: Qi, Fuli <qi.fuli@fujitsu.com>; Dave Jiang <dave.jiang@intel.com>;
> Vishal Verma <vishal.l.verma@intel.com>; Dan Williams <dan.j.williams@intel.com>;
> linux-nvdimm@lists.01.org
> Cc: Michael Kelley <mikelley@microsoft.com>
> Subject: RE: [ndctl PATCH] ndctl, monitor: support NVDIMM_FAMILY_HYPERV
>
> > From: qi.fuli@fujitsu.com <qi.fuli@fujitsu.com>
> > Sent: Friday, February 15, 2019 1:26 AM
> > > ...
> > > --- a/ndctl/monitor.c
> > > +++ b/ndctl/monitor.c
> > > @@ -265,31 +265,50 @@ static bool filter_region(struct ndctl_region
> > *region,
> > > return true;
> > > }
> > >
> > > -static void filter_dimm(struct ndctl_dimm *dimm, struct
> > > util_filter_ctx *fctx)
> > > +static bool ndctl_dimm_test_and_enable_notification(struct
> > > +ndctl_dimm
> > *dimm)
> > > {
> > > - struct monitor_dimm *mdimm;
> > > - struct monitor_filter_arg *mfa = fctx->monitor;
> > > const char *name = ndctl_dimm_get_devname(dimm);
> > >
> > > + /*
> > > + * Hyper-V Virtual NVDIMM doesn't use ND_CMD_SMART to get the
> > > health
> > > + * info. Instead, it uses ND_CMD_CALL, so the checking here can't
> > > + * apply, and it doesn't support threshold alarms.
> > > + */
> > > + if (ndctl_dimm_get_cmd_family(dimm) == NVDIMM_FAMILY_HYPERV)
> > > + return true;
> >
> > Hi,
> >
> > I think it would be better to add a checking monitor.event_flags step here.
> > Users should be notified if they setup monitoring smart threshold
> > events on NVDIMM_FAMILY_HYPERV.
> >
> > QI
>
> Hi Qi,
> Unluckily NVDIMM_FAMILY_HYPERV doesn't support monitoring smart threshold
> events. Please see the _DSM Interface for Hyper-V Virtual NVDIMM at
> https://uefi.org/RFIC_LIST (Virtual NVDIMM 0x1901).
>
> So there is no ops->new_smart_threshold defined for NVDIMM_FAMILY_HYPERV.
>
> The patch only skips the checks for NVDIMM_FAMILY_HYPERV, and the behavior for
> the others remains the same.
>
> Thanks,
> -- Dexuan
Hi Dexuan,
I am sorry I didn't explain it clearly enough.
I want to say that users may not know that NVDIMM_FAMILY_HYPERV doesn't support monitoring smart threshold events.
If users setup monitoring smart threshold events on NVDIMM_FAMILY_HYPERV by mistake,
it would be more friendly to send them a notification.
Thanks,
Qi
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm
^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [ndctl PATCH] ndctl, monitor: support NVDIMM_FAMILY_HYPERV
[not found] ` <OSAPR01MB3396721CFC3535CC201B799DF7630-OxqQCv4d1nQ3UXb08eLJjncolHNk5qUtvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
@ 2019-02-19 6:07 ` Dexuan Cui
0 siblings, 0 replies; 6+ messages in thread
From: Dexuan Cui @ 2019-02-19 6:07 UTC (permalink / raw)
To: qi.fuli-LMvhtfratI1BDgjK7y7TUQ, Dave Jiang, Vishal Verma,
Dan Williams, linux-nvdimm-hn68Rpc1hR1g9hUCZPvPmw
Cc: Michael Kelley
> From: qi.fuli-LMvhtfratI1BDgjK7y7TUQ@public.gmane.org <qi.fuli-LMvhtfratI1BDgjK7y7TUQ@public.gmane.org>
> Sent: Sunday, February 17, 2019 5:52 PM
> ...
> I am sorry I didn't explain it clearly enough.
> I want to say that users may not know that NVDIMM_FAMILY_HYPERV doesn't
> support monitoring smart threshold events.
> If users setup monitoring smart threshold events on
> NVDIMM_FAMILY_HYPERV by mistake,
> it would be more friendly to send them a notification.
>
> Qi
Got it.
I'll add an explicit warning and don't monitor unsupported events.
Thanks,
-- Dexuan
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2019-02-19 6:07 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-15 6:38 [ndctl PATCH] ndctl, monitor: support NVDIMM_FAMILY_HYPERV Dexuan Cui
2019-02-15 8:31 ` Johannes Thumshirn
2019-02-15 9:26 ` qi.fuli
[not found] ` <OSAPR01MB3396F103A8B3B5569F26D4DDF7600-OxqQCv4d1nQ3UXb08eLJjncolHNk5qUtvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2019-02-16 7:25 ` Dexuan Cui
2019-02-18 1:52 ` qi.fuli
[not found] ` <OSAPR01MB3396721CFC3535CC201B799DF7630-OxqQCv4d1nQ3UXb08eLJjncolHNk5qUtvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2019-02-19 6:07 ` Dexuan Cui
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.