<span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; ">I think you can mark the pages as PG_unevictable to let the inode pages remain mapped always.<div><br></div>
<div>OR</div><div><br></div><div>You can also set AS_UNEVICTABLE flag bit on whole address space mapping of inode. Please refer following code:</div><div><br></div><div><div>static inline void mapping_set_unevictable(struct address_space *mapping)</div>
<div>{</div><div>        set_bit(AS_UNEVICTABLE, &amp;mapping-&gt;flags);</div><div>}</div><div><br></div><div>This code is used to mark all inode pages ( i.e complete address space mapping) as unevictable.</div></div></span><br>
<div class="gmail_quote">On Wed, Jul 13, 2011 at 9:48 PM, shubham sharma <span dir="ltr">&lt;<a href="mailto:shubham20006@gmail.com">shubham20006@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi Joel,<br>
<div class="im"><br>
On Wed, Jul 13, 2011 at 9:28 PM, Joel A Fernandes &lt;<a href="mailto:agnel.joel@gmail.com">agnel.joel@gmail.com</a>&gt; wrote:<br>
&gt; [CC&#39;ing list]<br>
&gt;<br>
&gt; Hi Shubham,<br>
&gt;<br>
&gt; I am not very familiar with the code for pdflush. But wasn&#39;t it<br>
&gt; superseded by bdflush (or similar) in recent kernels?<br>
<br>
</div>I don&#39;t know about the bdflush daemon, but I guess that pdflush daemon<br>
has been superseded in recent kernel. I am working on 2.6.18 kernel.<br>
<div class="im"><br>
&gt;<br>
&gt; On Wed, Jul 13, 2011 at 10:45 AM, shubham sharma &lt;<a href="mailto:shubham20006@gmail.com">shubham20006@gmail.com</a>&gt; wrote:<br>
&gt;&gt; I am trying to write a memory based file system. The file system is<br>
&gt;&gt; intended to create files/directories and write their contents only on<br>
&gt;&gt; pages. For this I have used the function grab_cache_page() function to<br>
&gt;&gt; get a new locked page in case the page does not exists in the radix<br>
&gt;&gt; tree of the inode.<br>
&gt;&gt;<br>
&gt;&gt; As the filesystem is memory based and all the data exists only on the<br>
&gt;&gt; memory, so I don&#39;t release the lock on the page as I fear that the<br>
&gt;&gt; pdflush daemon can swap out the pages on which I have written data and<br>
&gt;&gt; I may never see that data again. I unlock all the pages of all the<br>
&gt;&gt; inodes of the file system in the kill_sb function once the file system<br>
&gt;&gt; is being unmounted. But the problem I am facing is that if I open a<br>
&gt;&gt; file in which I have already written something (and its pages are<br>
&gt;&gt; locked), the open system call in turn calls the __lock_page() function<br>
&gt;&gt; which waits for the pages belonging to the inode to get unlocked.<br>
&gt;&gt; Hence the system call stalls indefinitely. I want to know if there is<br>
&gt;&gt; a mechanism by which I can prevent the pdflush daemon from swapping<br>
&gt;&gt; the pages that my filesystem refers to??<br>
&gt;<br>
&gt; I&#39;m not sure if pdflush is what &quot;swaps&quot; pages? Isn&#39;t that the role of<br>
&gt; kswapd? pdflush AFAIK just writes dirty pages back to the backing<br>
&gt; device.<br>
&gt;<br>
&gt; I think what you&#39;re referring to is a certain page replacement<br>
&gt; behavior in low memory conditions that you want to protect your<br>
&gt; filesystem against.<br>
<br>
</div>Yes you got it correct. I want to protect my filesystem against low<br>
memory conditions.<br>
<div class="im"><br>
&gt;I will be interested in responses from others<br>
&gt; about this, and will dig into the code during off office hours.<br>
&gt;<br>
&gt; Maybe tmpfs is a good reference for your work?<br>
<br>
</div>Thanks for the lead. I will dig in that now.<br>
&gt;<br>
&gt; Thanks,<br>
&gt; Joel<br>
&gt;<br>
Thanks,<br>
<font color="#888888">Shubham<br>
</font><div><div></div><div class="h5"><br>
_______________________________________________<br>
Kernelnewbies mailing list<br>
<a href="mailto:Kernelnewbies@kernelnewbies.org">Kernelnewbies@kernelnewbies.org</a><br>
<a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
</div></div></blockquote></div><br>