linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* 2.6: marking individual directories as synchronous?
@ 2003-07-17 20:59 Dan Behman
  2003-07-20  0:31 ` Theodore Ts'o
  0 siblings, 1 reply; 4+ messages in thread
From: Dan Behman @ 2003-07-17 20:59 UTC (permalink / raw)
  To: linux-kernel

Hi,

I'm reading through Joseph Pranevich's great document "Wonderful World of 
Linux 2.6" and I came across something that I'd love to learn more about.  
In the "Block Device Support" -> "Filesystems" section, reference is made to 
"Individual directories can now be marked as synchronous so that all changes 
(additional files, etc.) will be atomic".  I searched through the update 
info at kernelnewbies but
couldn't find any more information on this - could someone please elaborate 
on this?  What is it and how does it work?  Is there any design 
documentation for this?

Thanks!

Dan Behman...

_________________________________________________________________
MSN 8 with e-mail virus protection service: 2 months FREE*  
http://join.msn.com/?page=features/virus


^ permalink raw reply	[flat|nested] 4+ messages in thread
* Re: 2.6: marking individual directories as synchronous?
@ 2003-07-22 13:20 Carl Spalletta
  0 siblings, 0 replies; 4+ messages in thread
From: Carl Spalletta @ 2003-07-22 13:20 UTC (permalink / raw)
  To: linux-kernel; +Cc: dbehman

Grepping around in 2.6.0-test1 src I found:

include/linux/fs.h:
105 #define MS_DIRSYNC 128 /* Directory modifications are synchronous */
138 #define S_DIRSYNC  128 /* Directory modifications are synchronous */

Therefore, study the definitions and uses of those flags as well as
IS_DIRSYNC(), EXT3_DIRSYNC_FL, ext3_ioctl() & ext3_set_inode_flags().

For example:
[linux-2.6.0-test1]$ cscope -d -L -3 IS_DIRSYNC
...
fs/ext2/dir.c     ext2_commit_chunk  71    if  (IS_DIRSYNC(dir))
fs/ext3/ialloc.c  ext3_new_inode     585   if  (IS_DIRSYNC(inode))
fs/ext3/namei.c   ext3_create        1638  if  (IS_DIRSYNC(dir))
fs/ext3/namei.c   ext3_mknod         1665  if  (IS_DIRSYNC(dir))
fs/ext3/namei.c   ext3_mkdir         1697  if  (IS_DIRSYNC(dir))
fs/ext3/namei.c   ext3_rmdir         1981  if  (IS_DIRSYNC(dir))
fs/ext3/namei.c   ext3_unlink        2033  if  (IS_DIRSYNC(dir))
fs/ext3/namei.c   ext3_symlink       2089  if  (IS_DIRSYNC(dir))
fs/ext3/namei.c   ext3_link          2139  if  (IS_DIRSYNC(dir))
fs/minix/dir.c    dir_commit_chunk   53    if  (IS_DIRSYNC(dir))
fs/sysv/dir.c     dir_commit_chunk   46    if  (IS_DIRSYNC(dir))
fs/ufs/dir.c      ufs_set_link       359   if  (IS_DIRSYNC(dir))
fs/ufs/dir.c      ufs_add_link       458   if  (IS_DIRSYNC(dir))
fs/ufs/dir.c      ufs_delete_entry   507   if  (IS_DIRSYNC(inode))
...

I haven't actually played with the application of this, but it would appear
to be some combination of ioctl's and/or mount flags.  Check the source for
chattr(1) to see if and how it uses the ioctl.

^ permalink raw reply	[flat|nested] 4+ messages in thread
* Re: 2.6: marking individual directories as synchronous?
@ 2003-07-22 18:57 Carl Spalletta
  0 siblings, 0 replies; 4+ messages in thread
From: Carl Spalletta @ 2003-07-22 18:57 UTC (permalink / raw)
  To: linux-kernel; +Cc: dbehman

Here is further info on the use of IS_DIRSYNC in ext2.

ext2_alloc_branch() is used only in the O_DIRECT path.
ext2_commit_chunk() is called indirectly in the following paths, which provide
functionality comparable to that of ext3:

[linux-2.6.0-test1]$ fscope -func=ext2_commit_chunk

ext2_commit_chunk ext2_add_link ext2_add_nondir ext2_create
ext2_commit_chunk ext2_add_link ext2_add_nondir ext2_link
ext2_commit_chunk ext2_add_link ext2_add_nondir ext2_mknod
ext2_commit_chunk ext2_add_link ext2_add_nondir ext2_symlink
ext2_commit_chunk ext2_add_link ext2_mkdir
ext2_commit_chunk ext2_add_link ext2_rename
ext2_commit_chunk ext2_delete_entry ext2_rename
ext2_commit_chunk ext2_delete_entry ext2_unlink ext2_rmdir
ext2_commit_chunk ext2_make_empty ext2_mkdir
ext2_commit_chunk ext2_set_link ext2_rename

FOR CLARITY:

items 1-4 rotated:
ext2_create        ext2_link          ext2_mknod         ext2_symlink
ext2_add_nondir    ext2_add_nondir    ext2_add_nondir    ext2_add_nondir
ext2_add_link      ext2_add_link      ext2_add_link      ext2_add_link
ext2_commit_chunk  ext2_commit_chunk  ext2_commit_chunk  ext2_commit_chunk

items 5-8 rotated:
(null)             (null)             (null)             ext2_rmdir
ext2_mkdir         ext2_rename        ext2_rename        ext2_unlink
ext2_add_link      ext2_add_link      ext2_delete_entry  ext2_delete_entry
ext2_commit_chunk  ext2_commit_chunk  ext2_commit_chunk  ext2_commit_chunk

items 9-10 rotated:
ext2_mkdir         ext2_rename
ext2_make_empty    ext2_set_link
ext2_commit_chunk  ext2_commit_chunk

(See this list for tool 'fscope'.)

_


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2003-07-22 18:42 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-07-17 20:59 2.6: marking individual directories as synchronous? Dan Behman
2003-07-20  0:31 ` Theodore Ts'o
2003-07-22 13:20 Carl Spalletta
2003-07-22 18:57 Carl Spalletta

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).