Re: [PATCH 02/10] target/core: Use kvcalloc() instead of open-coding it

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

 



On Fri, 2018-11-16 at 14:10 +-0100, David Disseldorp wrote:
+AD4 On Thu, 08 Nov 2018 15:17:45 -0800, Bart Van Assche wrote:
+AD4 +AD4 What makes you think that I dropped any of the +AF8AXw-GFP flags? The only purpose
+AD4 +AD4 of the +AF8AXw-GFP+AF8-NOWARN and +AF8AXw-GFP+AF8-RETRY+AF8-MAYFAIL flags is to make kcalloc() fail
+AD4 +AD4 quickly and silently.
+AD4 
+AD4 Are you confusing +AF8AXw-GFP+AF8-RETRY+AF8-MAYFAIL with +AF8AXw-GFP+AF8-NORETRY here?

No. Passing +AF8AXw-GFP+AF8-RETRY+AF8-MAYFAIL to a memory allocation function makes the memory
allocator try less hard than without that flag. From should+AF8-continue+AF8-reclaim():

	/+ACo
	 +ACo For +AF8AXw-GFP+AF8-RETRY+AF8-MAYFAIL allocations, stop reclaiming if the
	 +ACo full LRU list has been scanned and we are still failing
	 +ACo to reclaim pages. This full LRU scan is potentially
	 +ACo expensive but a +AF8AXw-GFP+AF8-RETRY+AF8-MAYFAIL caller really wants to succeed
	 +ACo-/

+AD4 +AD4 I'm not dropping these flags: as one can see in the
+AD4 +AD4 kvmalloc+AF8-node() implementation that function passes these flags to
+AD4 +AD4 kmalloc+AF8-node(). The source code I'm referring to is available in mm/util.c.
+AD4 
+AD4 I see that (given tag+AF8-num +ACo tag+AF8-size +AD4 PAGE+AF8-SIZE) +AF8AXw-GFP+AF8-NOWARN is added
+AD4 by kvmalloc+AF8-node(), but +AF8AXw-GFP+AF8-RETRY+AF8-MAYFAIL is dropped with your change,
+AD4 which sees +AF8AXw-GFP+AF8-NORETRY added in the +AD4-PAGE+AF8-SIZE path.

That's right. If you want I can mention this in the patch description.

Bart.



[Index of Archives]     [Linux SCSI]     [Kernel Newbies]     [Linux SCSI Target Infrastructure]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Device Mapper]

  Powered by Linux