lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 05 Apr 2012 22:19:10 -0600
From:	Jens Axboe <axboe@...nel.dk>
To:	Tao Guo <glorioustao@...il.com>
CC:	Andrew Morton <akpm@...ux-foundation.org>,
	linux-kernel@...r.kernel.org, neilb@...e.de, axboe@...ionio.com
Subject: Re: [PATCH] umem: fix up unplugging.

On 2012-04-05 22:09, Tao Guo wrote:
> On Thu, Apr 5, 2012 at 4:51 PM, Jens Axboe <axboe@...nel.dk> wrote:
>> On 2012-04-04 17:58, Tao Guo wrote:
>>> On Wed, Apr 4, 2012 at 4:18 PM, Jens Axboe <axboe@...nel.dk> wrote:
>>>> On 2012-04-04 16:20, Tao Guo wrote:
>>>>> Hi Andrew,
>>>>>
>>>>> Thanks for your reply.
>>>>>
>>>>> Yes, without this patch the umem driver just doesn't work.
>>>>> It is a bug introduced by commit 7eaceaccab5f40bbfda044629a6298616aeaed50.
>>>>> In that patch, Jens removed the whole mm_unplug_device() function,
>>>>> which used to be
>>>>> the trigger to make umem start to work.
>>>>
>>>> Hmm indeed, that's isn't terribly useful. Why aren't we just calling
>>>> activate_card() on addition of a bio?
>>>>
>>> It is the original design idea, the umem driver also wants to do batch
>>> IO the same as
>>> hard disk drive to fully utilize the IO bandwidth.
>>
>> Sure, just wondering whether the benefits have been tested. But yes, it
>> certainly makes sense.
>>
>> Your patch looks buggy, though. What if the card is currently plugged on
>> another tasks plug list? You seem to assume that it can only be plugged
>> once.
> No, it will register in its own plug callback list successfully, so
> the unplug functions
> will be called separately(twice the same).

So the code loops through the current plug, checking if it's already on
that list. If not, then it adds it. But what if it's on another plug
list? The above loop could be done with just a

        if (!list_empty(&card->plug_cb.list))
                ...

instead. Right now you could have !list_empty(&card->plug_cb.list) but
still add it to a different list.

-- 
Jens Axboe

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists