From: Jerome Marchand <jmarchan@redhat.com>
To: Dan Carpenter <dan.carpenter@oracle.com>
Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
devel@driverdev.osuosl.org, Minchan Kim <minchan@kernel.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/2] staging: zram: remove init_done from zram struct (v2)
Date: Mon, 09 Sep 2013 15:51:25 +0200 [thread overview]
Message-ID: <522DD25D.5030000@redhat.com> (raw)
In-Reply-To: <20130909123448.GA19256@mwanda>
On 09/09/2013 02:34 PM, Dan Carpenter wrote:
> On Fri, Sep 06, 2013 at 06:21:20PM +0300, Sergey Senozhatsky wrote:
>> @@ -558,14 +563,12 @@ static void zram_reset_device(struct zram *zram, bool reset_capacity)
>> flush_work(&zram->free_work);
>>
>> down_write(&zram->init_lock);
>> - if (!zram->init_done) {
>> + if (!init_done(zram)) {
>> up_write(&zram->init_lock);
>> return;
>> }
>>
>> meta = zram->meta;
>> - zram->init_done = 0;
>> -
>> /* Free all pages that are still in this zram device */
>> for (index = 0; index < zram->disksize >> PAGE_SHIFT; index++) {
>> unsigned long handle = meta->table[index].handle;
>> @@ -604,9 +607,7 @@ static void zram_init_device(struct zram *zram, struct zram_meta *meta)
>>
>> /* zram devices sort of resembles non-rotational disks */
>> queue_flag_set_unlocked(QUEUE_FLAG_NONROT, zram->disk->queue);
>> -
>> zram->meta = meta;
>> - zram->init_done = 1;
>>
>> pr_debug("Initialization done!\n");
>> }
>
> I am uncomfortable with the locking in zram_reset_device(). There
> should be a check for init_done() in zram_slot_free_notify() otherwise
> we could add more work at the same time we are calling flush_work().
>
> It should be that as soon as we start to reset then we say init is not
> done, we stop loading more work, we any existing work and then clean up.
> (There are details involved that I haven't looked at, but the original
> code looks racy to me).
Good point! I wonder why flush_work() isn't protected by init_lock.
Minchan, any reason why you did it that way?
Jerome
>
> regards,
> dan carpenter
>
>
prev parent reply other threads:[~2013-09-09 13:51 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-06 15:21 [PATCH 2/2] staging: zram: remove init_done from zram struct (v2) Sergey Senozhatsky
2013-09-09 12:34 ` Dan Carpenter
2013-09-09 13:51 ` Jerome Marchand [this message]
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=522DD25D.5030000@redhat.com \
--to=jmarchan@redhat.com \
--cc=dan.carpenter@oracle.com \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=minchan@kernel.org \
--cc=sergey.senozhatsky@gmail.com \
/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