void __mark_inode_dirty (struct inode * inode, int flags);
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 dirty.
This function *must* be atomic for the I_DIRTY_PAGES case - set_page_dirty is called under spinlock in several places.