Provided by: linux-doc-2.6.15_2.6.15-23.39_all bug


       __mark_inode_dirty - internal function


       void __mark_inode_dirty  (struct inode * inode, int flags);


       inode  inode to mark

       flags  what  kind  of dirty (i.e. I_DIRTY_SYNC) Mark an inode as dirty.
              Callers should use mark_inode_dirty or mark_inode_dirty_sync.


       Put the inode on the super block’s dirty list.

       CAREFUL! We mark it dirty unconditionally, but move it onto  the  dirty
       list  only if it is hashed or if it refers to a blockdev. If it was not
       hashed, it will never be added to the dirty list even if  it  is  later
       hashed, as it will have been marked dirty already.

       In short, make sure you hash any inodes _before_ you start marking them

       This  function  *must*  be  atomic  for  the   I_DIRTY_PAGES   case   -
       set_page_dirty is called under spinlock in several places.

       Note  that  for  blockdevs, inode->dirtied_when represents the dirtying
       time  of  the  block-special  inode   (/dev/hda1)   itself.   And   the
       ->dirtied_when  field  of the kernel-internal blockdev inode represents
       the  dirtying  time  of  the  blockdev’s  pages.  This   is   why   for
       I_DIRTY_PAGES  we  always use page->mapping->host, so the page-dirtying
       time is recorded in the internal blockdev inode.