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
| ||
|
Date: Fri, 01 Jun 2012 16:17:35 -0400 From: KOSAKI Motohiro <kosaki.motohiro@...il.com> To: John Stultz <john.stultz@...aro.org> CC: LKML <linux-kernel@...r.kernel.org>, Andrew Morton <akpm@...ux-foundation.org>, Android Kernel Team <kernel-team@...roid.com>, Robert Love <rlove@...gle.com>, Mel Gorman <mel@....ul.ie>, Hugh Dickins <hughd@...gle.com>, Dave Hansen <dave@...ux.vnet.ibm.com>, Rik van Riel <riel@...hat.com>, Dmitry Adamushko <dmitry.adamushko@...il.com>, Dave Chinner <david@...morbit.com>, Neil Brown <neilb@...e.de>, Andrea Righi <andrea@...terlinux.com>, "Aneesh Kumar K.V" <aneesh.kumar@...ux.vnet.ibm.com>, Taras Glek <tgek@...illa.com>, Mike Hommey <mh@...ndium.org>, Jan Kara <jack@...e.cz>, kosaki.motohiro@...il.com Subject: Re: [PATCH 3/3] [RFC] tmpfs: Add FALLOC_FL_MARK_VOLATILE/UNMARK_VOLATILE handlers Hi John, (6/1/12 2:29 PM), John Stultz wrote: > This patch enables FALLOC_FL_MARK_VOLATILE/UNMARK_VOLATILE > functionality for tmpfs making use of the volatile range > management code. > > Conceptually, FALLOC_FL_MARK_VOLATILE is like a delayed > FALLOC_FL_PUNCH_HOLE. This allows applications that have > data caches that can be re-created to tell the kernel that > some memory contains data that is useful in the future, but > can be recreated if needed, so if the kernel needs, it can > zap the memory without having to swap it out. > > In use, applications use FALLOC_FL_MARK_VOLATILE to mark > page ranges as volatile when they are not in use. Then later > if they wants to reuse the data, they use > FALLOC_FL_UNMARK_VOLATILE, which will return an error if the > data has been purged. > > This is very much influenced by the Android Ashmem interface by > Robert Love so credits to him and the Android developers. > In many cases the code& logic come directly from the ashmem patch. > The intent of this patch is to allow for ashmem-like behavior, but > embeds the idea a little deeper into the VM code. > > This is a reworked version of the fadvise volatile idea submitted > earlier to the list. Thanks to Dave Chinner for suggesting to > rework the idea in this fashion. Also thanks to Dmitry Adamushko > for continued review and bug reporting, and Dave Hansen for > help with the original design and mentoring me in the VM code. I like this patch concept. This is cleaner than userland notification quirk. But I don't like you use shrinker. Because of, after applying this patch, normal page reclaim path can still make swap out. this is undesirable. (snip) > +static > +int shmem_volatile_shrink(struct shrinker *ignored, struct shrink_control *sc) > +{ > + s64 nr_to_scan = sc->nr_to_scan; > + const gfp_t gfp_mask = sc->gfp_mask; > + struct address_space *mapping; > + loff_t start, end; > + int ret; > + s64 page_count; > + > + if (nr_to_scan&& !(gfp_mask& __GFP_FS)) > + return -1; > + > + volatile_range_lock(&shmem_volatile_head); > + page_count = volatile_range_lru_size(&shmem_volatile_head); > + if (!nr_to_scan) > + goto out; > + > + do { > + ret = volatile_ranges_get_last_used(&shmem_volatile_head, > + &mapping,&start,&end); Why drop last used region? Not recently used region is better? > + if (ret) { > + shmem_truncate_range(mapping->host, > + start<<PAGE_CACHE_SHIFT, > + (end<<PAGE_CACHE_SHIFT)-1); > + nr_to_scan -= end-start; > + page_count -= end-start; > + }; > + } while (ret&& (nr_to_scan> 0)); > + > +out: > + volatile_range_unlock(&shmem_volatile_head); > + > + return page_count; > +} > + -- 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