From: "Yang,Wei" <Wei.Yang@windriver.com>
To: <Wei.Yang@windriver.com>, <horms@verge.net.au>
Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v1] fs2dt: Refine kdump device_tree sort
Date: Tue, 17 Jun 2014 14:01:13 +0800 [thread overview]
Message-ID: <539FD9A9.1070307@windriver.com> (raw)
In-Reply-To: <1402550168-7826-1-git-send-email-Wei.Yang@windriver.com>
Hi Simon,
How about this patch?
Thanks
Wei
On 06/12/2014 01:16 PM, Wei.Yang@windriver.com wrote:
> From: Yang Wei <Wei.Yang@windriver.com>
>
> The commit b02d735bf was to rearrange the device-tree entries, and
> assumed that these entries are sorted in the ascending order. but
> acctually when I was validating kexec and kdump, the order of
> serial node still is changed. We should not only compare the length
> of directory name, but also compare the directory name, it would
> ensure that the order of device node is really in ascending order.
>
> Signed-off-by: Yang Wei <Wei.Yang@windriver.com>
> ---
> kexec/fs2dt.c | 13 ++++++++++---
> 1 file changed, 10 insertions(+), 3 deletions(-)
>
> It is validated on Freescale t4240qds.
>
> diff --git a/kexec/fs2dt.c b/kexec/fs2dt.c
> index 1e5f074..0bffaf5 100644
> --- a/kexec/fs2dt.c
> +++ b/kexec/fs2dt.c
> @@ -479,6 +479,9 @@ static int comparefunc(const struct dirent **dentry1,
> {
> char *str1 = (*(struct dirent **)dentry1)->d_name;
> char *str2 = (*(struct dirent **)dentry2)->d_name;
> + char* ptr1 = strchr(str1, '@');
> + char* ptr2 = strchr(str2, '@');
> + int len1, len2;
>
> /*
> * strcmp scans from left to right and fails to idetify for some
> @@ -486,9 +489,13 @@ static int comparefunc(const struct dirent **dentry1,
> * Therefore, we get the wrong sorted order like memory@10000000 and
> * memory@f000000.
> */
> - if (strchr(str1, '@') && strchr(str2, '@') &&
> - (strlen(str1) > strlen(str2)))
> - return 1;
> + if (ptr1 && ptr2) {
> + len1 = ptr1 - str1;
> + len2 = ptr2 - str2;
> + if (!strncmp(str1, str2, len1 >len2 ? len1: len2) &&
> + (strlen(str1) > strlen(str2)))
> + return 1;
> + }
>
> return strcmp(str1, str2);
> }
WARNING: multiple messages have this Message-ID (diff)
From: Wei.Yang@windriver.com (Yang,Wei)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v1] fs2dt: Refine kdump device_tree sort
Date: Tue, 17 Jun 2014 14:01:13 +0800 [thread overview]
Message-ID: <539FD9A9.1070307@windriver.com> (raw)
In-Reply-To: <1402550168-7826-1-git-send-email-Wei.Yang@windriver.com>
Hi Simon,
How about this patch?
Thanks
Wei
On 06/12/2014 01:16 PM, Wei.Yang at windriver.com wrote:
> From: Yang Wei <Wei.Yang@windriver.com>
>
> The commit b02d735bf was to rearrange the device-tree entries, and
> assumed that these entries are sorted in the ascending order. but
> acctually when I was validating kexec and kdump, the order of
> serial node still is changed. We should not only compare the length
> of directory name, but also compare the directory name, it would
> ensure that the order of device node is really in ascending order.
>
> Signed-off-by: Yang Wei <Wei.Yang@windriver.com>
> ---
> kexec/fs2dt.c | 13 ++++++++++---
> 1 file changed, 10 insertions(+), 3 deletions(-)
>
> It is validated on Freescale t4240qds.
>
> diff --git a/kexec/fs2dt.c b/kexec/fs2dt.c
> index 1e5f074..0bffaf5 100644
> --- a/kexec/fs2dt.c
> +++ b/kexec/fs2dt.c
> @@ -479,6 +479,9 @@ static int comparefunc(const struct dirent **dentry1,
> {
> char *str1 = (*(struct dirent **)dentry1)->d_name;
> char *str2 = (*(struct dirent **)dentry2)->d_name;
> + char* ptr1 = strchr(str1, '@');
> + char* ptr2 = strchr(str2, '@');
> + int len1, len2;
>
> /*
> * strcmp scans from left to right and fails to idetify for some
> @@ -486,9 +489,13 @@ static int comparefunc(const struct dirent **dentry1,
> * Therefore, we get the wrong sorted order like memory at 10000000 and
> * memory at f000000.
> */
> - if (strchr(str1, '@') && strchr(str2, '@') &&
> - (strlen(str1) > strlen(str2)))
> - return 1;
> + if (ptr1 && ptr2) {
> + len1 = ptr1 - str1;
> + len2 = ptr2 - str2;
> + if (!strncmp(str1, str2, len1 >len2 ? len1: len2) &&
> + (strlen(str1) > strlen(str2)))
> + return 1;
> + }
>
> return strcmp(str1, str2);
> }
WARNING: multiple messages have this Message-ID (diff)
From: "Yang,Wei" <Wei.Yang@windriver.com>
To: <Wei.Yang@windriver.com>, <horms@verge.net.au>
Cc: <linux-kernel@vger.kernel.org>, <linuxppc-dev@lists.ozlabs.org>,
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH v1] fs2dt: Refine kdump device_tree sort
Date: Tue, 17 Jun 2014 14:01:13 +0800 [thread overview]
Message-ID: <539FD9A9.1070307@windriver.com> (raw)
In-Reply-To: <1402550168-7826-1-git-send-email-Wei.Yang@windriver.com>
Hi Simon,
How about this patch?
Thanks
Wei
On 06/12/2014 01:16 PM, Wei.Yang@windriver.com wrote:
> From: Yang Wei <Wei.Yang@windriver.com>
>
> The commit b02d735bf was to rearrange the device-tree entries, and
> assumed that these entries are sorted in the ascending order. but
> acctually when I was validating kexec and kdump, the order of
> serial node still is changed. We should not only compare the length
> of directory name, but also compare the directory name, it would
> ensure that the order of device node is really in ascending order.
>
> Signed-off-by: Yang Wei <Wei.Yang@windriver.com>
> ---
> kexec/fs2dt.c | 13 ++++++++++---
> 1 file changed, 10 insertions(+), 3 deletions(-)
>
> It is validated on Freescale t4240qds.
>
> diff --git a/kexec/fs2dt.c b/kexec/fs2dt.c
> index 1e5f074..0bffaf5 100644
> --- a/kexec/fs2dt.c
> +++ b/kexec/fs2dt.c
> @@ -479,6 +479,9 @@ static int comparefunc(const struct dirent **dentry1,
> {
> char *str1 = (*(struct dirent **)dentry1)->d_name;
> char *str2 = (*(struct dirent **)dentry2)->d_name;
> + char* ptr1 = strchr(str1, '@');
> + char* ptr2 = strchr(str2, '@');
> + int len1, len2;
>
> /*
> * strcmp scans from left to right and fails to idetify for some
> @@ -486,9 +489,13 @@ static int comparefunc(const struct dirent **dentry1,
> * Therefore, we get the wrong sorted order like memory@10000000 and
> * memory@f000000.
> */
> - if (strchr(str1, '@') && strchr(str2, '@') &&
> - (strlen(str1) > strlen(str2)))
> - return 1;
> + if (ptr1 && ptr2) {
> + len1 = ptr1 - str1;
> + len2 = ptr2 - str2;
> + if (!strncmp(str1, str2, len1 >len2 ? len1: len2) &&
> + (strlen(str1) > strlen(str2)))
> + return 1;
> + }
>
> return strcmp(str1, str2);
> }
next prev parent reply other threads:[~2014-06-17 6:01 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-12 5:16 [PATCH v1] fs2dt: Refine kdump device_tree sort Wei.Yang
2014-06-12 5:16 ` Wei.Yang
2014-06-12 5:16 ` Wei.Yang at windriver.com
2014-06-17 6:01 ` Yang,Wei [this message]
2014-06-17 6:01 ` Yang,Wei
2014-06-17 6:01 ` Yang,Wei
2014-06-17 6:03 ` Yang,Wei
2014-06-17 6:03 ` Yang,Wei
2014-06-17 6:03 ` Yang,Wei
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=539FD9A9.1070307@windriver.com \
--to=wei.yang@windriver.com \
--cc=horms@verge.net.au \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.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.