linux-raid.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Zhilong Liu <zlliu@suse.com>
To: Jes Sorensen <jes.sorensen@gmail.com>
Cc: linux-raid@vger.kernel.org
Subject: Re: [mdadm PATCH] Create: move STOP_ARRAY to abort_locked
Date: Mon, 8 May 2017 09:50:57 +0800	[thread overview]
Message-ID: <2b947e61-36b6-0c6c-c25c-a9d2831cca11@suse.com> (raw)
In-Reply-To: <be1df636-2bbb-2757-7a96-264d2d1a4b65@suse.com>



On 05/05/2017 11:31 AM, Liu Zhilong wrote:
>
>
> On 05/04/2017 10:54 PM, Jes Sorensen wrote:
>> On 05/04/2017 08:20 AM, Zhilong Liu wrote:
>>> Hi Jes,
>>>
>>> apply for review, this is a bug I ever encountered.
>>
>> Zhilong,
>>
>> Under what circumstances do you see this?
>>
>
> Issued the command:
> linux-g0sr:/home/test # ./mdadm -CR /dev/md0 -l1 -n2 -b internal 
> /dev/loop[0-1] --size 63
> ... ... ...
> mdadm: Given bitmap chunk size not supported.
> linux-g0sr:/home/test # ls /dev/md0
> /dev/md0
> linux-g0sr:/home/test # ls /sys/block/md0/md/
> array_size   bitmap      component_size  level metadata_version 
> raid_disks         reshape_position safe_mode_delay
> array_state  chunk_size  layout          max_read_errors 
> new_dev           reshape_direction  resync_start
>
> create_mddev() writes the devnm to 
> /sys/module/md_mod/parameter/new_array,
> then in md.c, module_param_call() called the 'set' function of 
> add_named_array(),
> md_alloc() init_and_add the kobject for devm, finally the devnm device 
> has created
> and sysfs has registered after create_mddev executed successfully. 
> Thus it's better
> to STOP_ARRAY in any case after create_mddev() invoked.
>

this patch depends on the kernel commit:
039b7225e6e9 ("md: allow creation of mdNNN arrays via 
md_mod/parameters/new_array")
Neil's patch has set "mddev->hold_active = UNTIL_STOP", thus the 
STOP_ARRAY can work
well on this situation.

Thanks,
-Zhilong

> Thanks,
> -Zhilong
>
>> Thanks,
>> Jes
>>
>>>
>>> On 04/26/2017 03:03 PM, Zhilong Liu wrote:
>>>> The sysfs entry and devnm would be created once create_mddev()
>>>> performed successfully, but the creating isn't completed here,
>>>> move STOP_ARRAY to abort_locked, the purpose is to cleanup the
>>>> partially created array.
>>>>
>>>> Signed-off-by: Zhilong Liu <zlliu@suse.com>
>>>> ---
>>>>   Create.c | 11 ++++-------
>>>>   1 file changed, 4 insertions(+), 7 deletions(-)
>>>>
>>>> diff --git a/Create.c b/Create.c
>>>> index 6ca0924..fe0ab7e 100644
>>>> --- a/Create.c
>>>> +++ b/Create.c
>>>> @@ -904,10 +904,8 @@ int Create(struct supertype *st, char *mddev,
>>>>                       remove_partitions(fd);
>>>>                   if (st->ss->add_to_super(st, &inf->disk,
>>>>                                fd, dv->devname,
>>>> -                             dv->data_offset)) {
>>>> -                    ioctl(mdfd, STOP_ARRAY, NULL);
>>>> +                             dv->data_offset))
>>>>                       goto abort_locked;
>>>> -                }
>>>>                   st->ss->getinfo_super(st, inf, NULL);
>>>>                   safe_mode_delay = inf->safe_mode_delay;
>>>>   @@ -1008,7 +1006,6 @@ int Create(struct supertype *st, char *mddev,
>>>>               sysfs_set_safemode(&info, safe_mode_delay);
>>>>               if (err) {
>>>>                   pr_err("failed to activate array.\n");
>>>> -                ioctl(mdfd, STOP_ARRAY, NULL);
>>>>                   goto abort;
>>>>               }
>>>>           } else if (c->readonly &&
>>>> @@ -1018,7 +1015,6 @@ int Create(struct supertype *st, char *mddev,
>>>>                         "array_state", "readonly") < 0) {
>>>>                   pr_err("Failed to start array: %s\n",
>>>>                          strerror(errno));
>>>> -                ioctl(mdfd, STOP_ARRAY, NULL);
>>>>                   goto abort;
>>>>               }
>>>>           } else {
>>>> @@ -1030,7 +1026,6 @@ int Create(struct supertype *st, char *mddev,
>>>>                   if (info.array.chunk_size &
>>>> (info.array.chunk_size-1)) {
>>>>                       cont_err("Problem may be that chunk size is not
>>>> a power of 2\n");
>>>>                   }
>>>> -                ioctl(mdfd, STOP_ARRAY, NULL);
>>>>                   goto abort;
>>>>               }
>>>>               /* if start_ro module parameter is set, array is
>>>> @@ -1061,7 +1056,9 @@ int Create(struct supertype *st, char *mddev,
>>>>       map_remove(&map, fd2devnm(mdfd));
>>>>       map_unlock(&map);
>>>>   -    if (mdfd >= 0)
>>>> +    if (mdfd >= 0) {
>>>> +        ioctl(mdfd, STOP_ARRAY, NULL);
>>>>           close(mdfd);
>>>> +    }
>>>>       return 1;
>>>>   }
>>>
>>
>> -- 
>> To unsubscribe from this list: send the line "unsubscribe linux-raid" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>
>
> -- 
> To unsubscribe from this list: send the line "unsubscribe linux-raid" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>


  reply	other threads:[~2017-05-08  1:50 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-26  7:03 [mdadm PATCH] Create: move STOP_ARRAY to abort_locked Zhilong Liu
2017-05-04 12:20 ` Zhilong Liu
2017-05-04 14:54   ` Jes Sorensen
2017-05-04 17:42     ` Zhilong
2017-05-05  3:31     ` Liu Zhilong
2017-05-08  1:50       ` Zhilong Liu [this message]
2017-05-08 17:54         ` Jes Sorensen
2017-05-11 13:01           ` Zhilong Liu
2017-05-31 10:25           ` Zhilong Liu

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=2b947e61-36b6-0c6c-c25c-a9d2831cca11@suse.com \
    --to=zlliu@suse.com \
    --cc=jes.sorensen@gmail.com \
    --cc=linux-raid@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).