Thread (9 messages) 9 messages, 5 authors, 2002-10-10

Re: Meaning of the dirty bit

From: Dharmender Rai <hidden>
Date: 2002-10-10 09:46:31

Hi ,

Read the //// commented part in the following code mentioned by you:

* Do a quick page-table lookup for a single page.
  */
 static struct page * follow_page(unsigned long address, int write)
{
 	pgd_t *pgd;
 	pmd_t *pmd;
                     pte_t *ptep, pte;

 pgd = pgd_offset(current->mm, address);
/// initialized page directory entry or the page directory entry is invalid
 if (pgd_none(*pgd) || pgd_bad(*pgd))
 	goto out;
 pmd = pmd_offset(pgd, address);
/// initialized page middle directory entry or the page middle directory
entry is invalid
 if (pmd_none(*pmd) || pmd_bad(*pmd))
 	goto out;

 ptep = pte_offset(pmd, address);
 if (!ptep)
 	goto out;

 pte = *ptep;
//// if the page table entry is valid
 if (pte_present(pte)) {
 	if (!write ||
//// page is write-able and dirty
      (pte_write(pte) && pte_dirty(pte)))
  	return pte_page(pte);
 }

out:
 return 0;
}

The logic here is very simple. This function is used to detect  one page.
Now a writeable and dirty page is the most suitable one as this page's
content has to be written out on the disk. Suppose you go for the read only
page then you will be interrupting the processes that might be reading from
that page.


Regards,
Dharmender Rai
================================
Dharmender Rai,
Cybage Software Pvt. Ltd,
Kalyani Nagar,
Pune -411006

Phone : 6686359
Extn    :    261
----- Original Message -----
From: "Martin Maletinsky" <redacted>
To: <redacted>
Cc: <redacted>; <redacted>
Sent: Thursday, October 10, 2002 2:27 PM
Subject: Re: Meaning of the dirty bit

Hello,

Thanks for your reply. What is the reason to check the dirty bit in
follow_page(), which (presumably) should just parse the page tables, verify
write access (if the write
argument is set) and return the page descriptor describing the page the
address is in (from what I understood, there is no I/O involved).
Is there any reason to deny write access when the dirty flag is not set?

Thanks again,
regards
Martin

Dharmender Rai wrote:
quoted
Hi,
The purpose is to achieve need-based disk I/O.
Dirty-flag-set means you have to write the contents of
that page to the disk before paging out or
invalidating that page. If the dirty flag is not set
then there is no need for the I/O part.

Regards
Dharmender Rai

 --- Martin Maletinsky [off-list ref] wrote: >
Hi,
quoted
While studying the follow_page() function (the
version of the function that is in place since
2.4.4, i.e. with the write argument), I noticed,
that for an address that
should be written to (i.e. write != 0), the function
checks not only the writeable flag (with
pte_write()), but also the dirty flag (with
pte_dirty()) of the page
containing this address.
From what I thought to understand from general
paging theory, the dirty flag of a page is set, when
its content in physical memory differs from its
backing on the permanent
storage system (file or swap space). Based on this
understanding I do not understand why it is
necessary to check the dirty flag, in order to
ensure that a page is writable
- what am I missing here?

Thanks in advance for any answers
with best regards
Martin Maletinsky

P.S. Pls. put me on cc: in your reply, since I am
not on the mailing list.

--
Supercomputing System AG          email:
maletinsky@scs.ch
Martin Maletinsky                 phone: +41 (0)1
445 16 05
Technoparkstrasse 1               fax:   +41 (0)1
445 16 10
CH-8005 Zurich


--
Kernelnewbies: Help each other learn about the Linux
kernel.
Archive:
http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/
__________________________________________________
Do You Yahoo!?
Everything you'll ever need on one web page
from News and Sport to Email and Music Charts
http://uk.my.yahoo.com
--
Supercomputing System AG          email: maletinsky@scs.ch
Martin Maletinsky                 phone: +41 (0)1 445 16 05
Technoparkstrasse 1               fax:   +41 (0)1 445 16 10
CH-8005 Zurich
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help