public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Hans Reiser <reiser@namesys.com>
To: Daniel Phillips <phillips@arcor.de>
Cc: Helge Hafting <helgehaf@aitel.hist.no>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: atomic kernel operations are very tricky to export to user space (was  [RFC] Improved inode number allocation for HTree )
Date: Wed, 12 Mar 2003 00:25:51 +0300	[thread overview]
Message-ID: <3E6E545F.5060608@namesys.com> (raw)
In-Reply-To: <20030311133705.2157A102100@mx12.arcor-online.net>

Daniel Phillips wrote:

>On Tue 11 Mar 03 14:00, Helge Hafting wrote:
>  
>
>>Hans Reiser wrote:
>>    
>>
>>>Let's make noatime the default for VFS.
>>>
>>>Daniel Phillips wrote:
>>>      
>>>
>>[...]
>>
>>    
>>
>>>>If I were able to design Unix over again, I'd state that if you don't
>>>>lock a directory before traversing it then it's your own fault if
>>>>somebody changes it under you, and I would have provided an interface
>>>>to inform you about your bad luck.  Strictly wishful thinking.
>>>>(There, it feels better now.)
>>>>        
>>>>
>>I'm happy nobody _can_ lock a directory like that.  Think of it - unable
>>to create or delete files while some slow-moving program is traversing
>>the directory?  Ouch.  Plenty of options for DOS attacks too.
>>And how to do "rm *.bak" if rm locks the dir for traversal?
>>    
>>
>
><wishful thinking>
>Now that you mention it, just locking out create and rename during directory 
>traversal would eliminate the pain.  Delete is easy enough to handle during 
>traversal.  For a B-Tree, coalescing could simply be deferred until the 
>traversal is finished, so reading the directory in physical storage order 
>would be fine.  Way, way cleaner than what we have to do now.
></wishful thinking>
>
>Regards,
>
>Daniel
>-
>To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>the body of a message to majordomo@vger.kernel.org
>More majordomo info at  http://vger.kernel.org/majordomo-info.html
>Please read the FAQ at  http://www.tux.org/lkml/
>
>
>  
>
You would want a  directory listing command that is a single system 
call, and then that could be made isolated, without risk of userspace 
failing to unlock.   Then you have to worry about very large directories 
straining things in user space, but you can probably have the user 
specify the maximimum size directory his process has space for, etc.

In general, DOS issues are what makes it difficult to introduce 
transactions into the kernel.  We are grappling with that now in 
reiser4.  It seems that the formula is to create atomic plugins, and 
then it is the system administrator's responsibility to verify that he 
can live with whatever DOS vulnerabilities it has before he installs it 
in his kernel (or our responsibility if it is sent to us for inclusion 
in the main kernel).  Allowing arbitrary filesystem operations to be 
combined into one atomic transaction seems problematic for either user 
space or the kernel, depending on what you do.

In general, allowing user space to lock things means that you trust user 
space  to unlock.  This creates all sorts of trust troubles, and if you 
force the unlock after some timeout, then the user space application 
becomes vulnerable to DOS from other processes causing it to exceed the 
timeout.

Ideas on this are welcome.

-- 
Hans



  parent reply	other threads:[~2003-03-11 21:15 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-02-27 17:31 [Bug 417] New: htree much slower than regular ext3 Martin J. Bligh
2003-02-28  2:55 ` Daniel Phillips
2003-02-27 21:00   ` Andreas Dilger
2003-02-28  4:12     ` Daniel Phillips
2003-02-27 21:33       ` Martin J. Bligh
2003-03-13 21:04     ` [Ext2-devel] " Stephen C. Tweedie
2003-03-07 15:46 ` Alex Tomas
2003-03-08 17:38   ` Daniel Phillips
2003-03-07 23:27     ` Theodore Ts'o
2003-03-09 19:26       ` Alex Tomas
2003-03-09  7:08     ` Alex Tomas
2003-03-10 17:58       ` Daniel Phillips
2003-03-10 21:25       ` Theodore Ts'o
2003-03-11 21:57   ` Bill Davidsen
     [not found] ` <20030307214833.00a37e35.akpm@digeo.com>
     [not found]   ` <20030308010424.Z1373@schatzie.adilger.int>
2003-03-09 22:54     ` [Ext2-devel] " Daniel Phillips
2003-03-08 23:19       ` Andrew Morton
2003-03-09 23:10   ` Daniel Phillips
     [not found] ` <20030309184755.ACC80FCA8C@mx12.arcor-online.net>
     [not found]   ` <m3u1ecl5h8.fsf@lexa.home.net>
2003-03-10 20:45     ` [RFC] Improved inode number allocation for HTree Daniel Phillips
     [not found]       ` <3E6D1D25.5000004@namesys.com>
     [not found]         ` <20030311031216.8A31CEFD5F@mx12.arcor-online.net>
2003-03-11 10:45           ` Hans Reiser
2003-03-11 13:00             ` Helge Hafting
2003-03-11 13:41               ` Daniel Phillips
2003-03-11 17:16                 ` Andreas Dilger
2003-03-11 19:39                 ` Helge Hafting
2003-03-11 20:19                   ` Daniel Phillips
2003-03-11 21:25                 ` Hans Reiser [this message]
2003-03-11 23:49                   ` atomic kernel operations are very tricky to export to user space (was [RFC] Improved inode number allocation for HTree ) Jamie Lokier
2003-03-10 20:48     ` [RFC] Improved inode number allocation for HTree Daniel Phillips
2003-03-10 21:04       ` John Bradford
2003-03-10 21:28         ` Andreas Schwab
2003-03-10 21:50           ` Filesystem write priorities, (Was: Re: [RFC] Improved inode number allocation for HTree) John Bradford
2003-03-14 21:55             ` [Ext2-devel] " Stephen C. Tweedie
2003-03-10 21:33         ` [RFC] Improved inode number allocation for HTree Daniel Phillips
2003-03-10 21:47           ` [Ext2-devel] " Bryan O'Sullivan
2003-03-10 22:02             ` Matthew Wilcox
2003-03-11  8:47               ` Jakob Oestergaard
2003-03-11 11:27                 ` John Bradford
2003-03-14 21:57               ` Stephen C. Tweedie
2003-03-15  8:39                 ` jw schultz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3E6E545F.5060608@namesys.com \
    --to=reiser@namesys.com \
    --cc=helgehaf@aitel.hist.no \
    --cc=linux-kernel@vger.kernel.org \
    --cc=phillips@arcor.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox