Re: [PATCH 02/12] Btrfs: Kill allocate_wait in space_info

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Apr 19, 2010 at 10:48 PM, Josef Bacik <josef@xxxxxxxxxx> wrote:
> On Mon, Apr 19, 2010 at 10:46:12PM +0800, Yan, Zheng wrote:
>> On Mon, Apr 19, 2010 at 9:57 PM, Josef Bacik <josef@xxxxxxxxxx> wrote:
>> > The purpose of maybe_allocate_chunk was that there is no way to know if some
>> > other CPU is currently trying to allocate a chunk for the given space info.  We
>> > could have two cpu's come inot do_chunk_alloc at relatively the same time and
>> > end up allocating twice the amount of space, which is why I did the waitqueue
>> > thing.  It seems like this is still a possibility with your patch.  Thanks,
>> >
>> This is impossible because the very first thing do_chunk_alloc does is
>> lock the chunk_mutex.
>>
>
> Sure, that just means we don't get two things creating chunks at the same time,
> but not from creating them one right after another.  So CPU 0 and 1 come in to
> the check free space stuff, realize they need to allocate a chunk, and race to
> call do_chunk_alloc.  One of them wins, and the other blocks on the chunk_mutex
> lock.  When the first finishes the other one is able to continue and do what it
> was originally going to do, and then you get two chunks when you really only
> wanted one.  Thanks,
>

there is a check in do_chunk_alloc, so the later one will do nothing
if the first
call adds enough space.

Yan Zheng
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux