Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e7ca2d41 authored by Joern Engel's avatar Joern Engel Committed by Linus Torvalds
Browse files

Document I_SYNC and I_DATASYNC

After some archeology (see http://logfs.org/logfs/inode_state_bits

) I
finally figured out what the three I_DIRTY bits do.  Maybe others would
prefer less effort to reach this insight.

Signed-off-by: default avatarJoern Engel <joern@logfs.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 20420bba
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -1279,8 +1279,10 @@ struct super_operations {
 *
 * Two bits are used for locking and completion notification, I_LOCK and I_SYNC.
 *
 * I_DIRTY_SYNC		Inode itself is dirty.
 * I_DIRTY_DATASYNC	Data-related inode changes pending
 * I_DIRTY_SYNC		Inode is dirty, but doesn't have to be written on
 *			fdatasync().  i_atime is the usual cause.
 * I_DIRTY_DATASYNC	Inode is dirty and must be written on fdatasync(), f.e.
 *			because i_size changed.
 * I_DIRTY_PAGES	Inode has dirty pages.  Inode itself may be clean.
 * I_NEW		get_new_inode() sets i_state to I_LOCK|I_NEW.  Both
 *			are cleared by unlock_new_inode(), called from iget().
@@ -1312,8 +1314,6 @@ struct super_operations {
 *			purpose reduces latency and prevents some filesystem-
 *			specific deadlocks.
 *
 * Q: Why does I_DIRTY_DATASYNC exist?  It appears as if it could be replaced
 *    by (I_DIRTY_SYNC|I_DIRTY_PAGES).
 * Q: What is the difference between I_WILL_FREE and I_FREEING?
 * Q: igrab() only checks on (I_FREEING|I_WILL_FREE).  Should it also check on
 *    I_CLEAR?  If not, why?