Re: reiser4 plugins

2005-06-22 Thread Pekka Enberg
Hi Hans,

Jeff Garzik wrote:
> > We have to maintain said ugly code for decades.

On 6/23/05, Hans Reiser <[EMAIL PROTECTED]> wrote:
> No you don't, I do.

Lots of people work on the kernel. If you wish to keep reiser4
maintenance to yourself, you probably need to keep it as a separate
patch. Please consider submitting the non-controversial bits for
merging first and then continue with the rest. It does not make a lot
of sense reviewing the current patchkit as many parts of it won't be
merged as is (e.g. the plugin stuff).

  Pekka


Re: -mm -> 2.6.13 merge status

2005-06-22 Thread Pekka Enberg
Hi Hans,

On 6/22/05, Hans Reiser <[EMAIL PROTECTED]> wrote:
> I would in particular love to have you Andi Kleen do a full review of V4
> if you could be that generous with your time, as I liked much of the
> advice you gave us on V3.

Well, I am not Andi Kleen and this is not even in the ballpark of a full
review but here goes...

P.S. Would it be possible to have a version without the plugin stuff
submitted (and perhaps file as directory)? It would make much more
sense for the rest of us to review reiser4 without the most controversial
bits and get the bits that people agree on merged.

 Pekka

> --- /dev/null 2003-09-23 21:59:22.0 +0400
> +++ linux-2.6.11-vs/fs/reiser4/pool.c 2005-06-03 17:49:38.668204642 +0400
> +/* initialise new pool */
> +reiser4_internal void
> +reiser4_init_pool(reiser4_pool * pool /* pool to initialise */ ,
> +   size_t obj_size /* size of objects in @pool */ ,
> +   int num_of_objs /* number of preallocated objects */ ,
> +   char *data /* area for preallocated objects */ )
> +{
> + reiser4_pool_header *h;
> + int i;
> +
> + assert("nikita-955", pool != NULL);

These assertion codes are meaningless to the rest of us so please drop
them.

> --- /dev/null 2003-09-23 21:59:22.0 +0400
> +++ linux-2.6.11-vs/fs/reiser4/type_safe_hash.h   2005-06-03 
> 17:49:38.751209197 +0400
> @@ -0,0 +1,320 @@
> +/* Copyright 2001, 2002, 2003 by Hans Reiser, licensing governed by
> + * reiser4/README */
> +
> +/* A hash table class that uses hash chains (singly-linked) and is
> +   parametrized to provide type safety.  */

This belongs to include/linux, not reiser4.

> --- /dev/null 2003-09-23 21:59:22.0 +0400
> +++ linux-2.6.11-vs/fs/reiser4/type_safe_list.h   2005-06-03 
> 17:49:38.755209417 +0400
> @@ -0,0 +1,436 @@
> +/* Copyright 2001, 2002, 2003 by Hans Reiser, licensing governed by 
> reiser4/README */
> +
> +#ifndef __REISER4_TYPE_SAFE_LIST_H__
> +#define __REISER4_TYPE_SAFE_LIST_H__
> +
> +#include "debug.h"
> +/* A circular doubly linked list that differs from the previous
> +implementation because it is parametrized to provide
> +   type safety.  This data structure is also useful as a queue or stack.

This belongs to include/linux, not reiser4.

> --- /dev/null 2003-09-23 21:59:22.0 +0400
> +++ linux-2.6.11-vs/fs/reiser4/vfs_ops.c  2005-06-03 17:51:28.110210237 
> +0400
> +/* ->get_sb() method of file_system operations. */
> +static struct super_block *
> +reiser4_get_sb(struct file_system_type *fs_type  /* file
> +  * system
> +  * type */ ,
> +int flags /* flags */ ,
> +const char *dev_name /* device name */ ,
> +void *data /* mount options */ )

Please drop the useless parameter comments.

> +/*
> + * Initialization stages for reiser4.
> + *
> + * These enumerate various things that have to be done during reiser4
> + * startup. Initialization code (init_reiser4()) keeps track of what stage 
> was
> + * reached, so that proper undo can be done if error occurs during
> + * initialization.
> + */
> +typedef enum {
> + INIT_NONE,   /* nothing is initialized yet */
> + INIT_INODECACHE, /* inode cache created */
> + INIT_CONTEXT_MGR,/* list of active contexts created */
> + INIT_ZNODES, /* znode slab created */
> + INIT_PLUGINS,/* plugins initialized */
> + INIT_PLUGIN_SET, /* psets initialized */
> + INIT_TXN,/* transaction manager initialized */
> + INIT_FAKES,  /* fake inode initialized */
> + INIT_JNODES, /* jnode slab initialized */
> + INIT_EFLUSH, /* emergency flush initialized */
> + INIT_FQS,/* flush queues initialized */
> + INIT_DENTRY_FSDATA,  /* dentry_fsdata slab initialized */
> + INIT_FILE_FSDATA,/* file_fsdata slab initialized */
> + INIT_D_CURSOR,   /* d_cursor suport initialized */
> + INIT_FS_REGISTERED,  /* reiser4 file system type registered */
> +} reiser4_init_stage;

Please use regular gotos instead. This is a silly hack especially since you
don't have release function for all of the stages.

> +reiser4_internal void reiser4_handle_error(void)
> +{
> + struct super_block *sb = reiser4_get_current_sb();
> +
> + if ( !sb )
> + return;
> + reiser4_status_write(REISER4_STATUS_DAMAGED, 0, "Filesystem error 
> occured");
> + switch ( get_super_private(sb)->onerror ) {
> + case 0:
> + reiser4_panic("foobar-42", "Filesystem error occured\n");
> + case 1:
> + if ( sb->s_flags & MS_RDONLY )
> + return;
> + sb->s_flags |= MS_RDONLY;
> + break;
> + case 2:
> + machine_restart(NULL);

Probably not 

Re: [PATCH] [RESEND] ReiserFS _get_block_create_0 wrong behavior when I/O fails

2005-06-22 Thread Hans Reiser
Thanks fs, Edward, can you or vs look at this?

Hans

fs wrote:

>Seems my domain is filtered , so I resend the modified version.
>
>Related FS:
>ReiserFS
>
>Related Files:
>fs/reiserfs/inode.c
>
>Bug description:
>Make a ReiserFS partition in USB storage HDD, create a test file
>with
>enough size.
>Write a program, do: open(O_RDONLY) - read - close. After each
>operation, pause for a while, such as 3s. Between open and read, unlug
>the
>USB wire. open returns zero-filled buffer, no error returns.
>
>Bug analysis:
>do_mpage_readpage will call FS-specific get_block to get buffer
>mapped
>from disk. reiserfs_get_block doesn't return non-zero when I/O failure
>occurs.
>reiserfs_get_block -> _get_block_create_0 ->
>search_by_position_by_key
>search_by_position_by_key returns IO_ERROR, but the original code just
>simply
>returns 0
>
>research:
>if (search_for_position_by_key (inode->i_sb, &key, &path) !=
>POSITION_FOUND) {
>pathrelse (&path);
>if (p)
>kunmap(bh_result->b_page) ;
>// We do not return -ENOENT if there is a hole but page is
>uptodate, because it means
>// That there is some MMAPED data associated with it that is yet
>to be written to disk.
>if ((args & GET_BLOCK_NO_HOLE) &&
>!PageUptodate(bh_result->b_page) ) {
>return -ENOENT ;
>}
>return 0 ; <- 0 retuns for IO_ERROR
>}
>
>Way around:
>test result of search_for_position_by_key
>
>Signed-off-by: Qu Fuping<[EMAIL PROTECTED]>
>
>Patch:
>diff -uNp /tmp/linux-2.6.12-rc6/fs/reiserfs/inode.c
>/tmp/linux-2.6.12-rc6.new/fs/reiserfs/inode.c
>
>
>  
>
>
>
>--- linux-2.6.12-rc6.old/fs/reiserfs/inode.c   2005-06-06 11:22:29.0 
>-0400
>+++ linux-2.6.12-rc6.new/fs/reiserfs/inode.c   2005-06-17 16:12:18.0 
>-0400
>@@ -254,6 +254,7 @@ static int _get_block_create_0 (struct i
> char * p = NULL;
> int chars;
> int ret ;
>+int   result ;
> int done = 0 ;
> unsigned long offset ;
> 
>@@ -262,7 +263,8 @@ static int _get_block_create_0 (struct i
> (loff_t)block * inode->i_sb->s_blocksize + 1, TYPE_ANY, 3);
> 
> research:
>-if (search_for_position_by_key (inode->i_sb, &key, &path) != 
>POSITION_FOUND) {
>+result = search_for_position_by_key (inode->i_sb, &key, &path) ;
>+if (result != POSITION_FOUND) {
>   pathrelse (&path);
> if (p)
> kunmap(bh_result->b_page) ;
>@@ -270,7 +272,8 @@ research:
>   // That there is some MMAPED data associated with it that is yet to be 
> written to disk.
>   if ((args & GET_BLOCK_NO_HOLE) && !PageUptodate(bh_result->b_page) ) {
>   return -ENOENT ;
>-  }
>+  }else if(result == IO_ERROR)
>+  return -EIO;
> return 0 ;
> }
> 
>@@ -382,7 +385,8 @@ research:
> 
>   // update key to look for the next piece
>   set_cpu_key_k_offset (&key, cpu_key_k_offset (&key) + chars);
>-  if (search_for_position_by_key (inode->i_sb, &key, &path) != 
>POSITION_FOUND)
>+  result = search_for_position_by_key (inode->i_sb, &key, &path);
>+  if (result != POSITION_FOUND)
>   // we read something from tail, even if now we got IO_ERROR
>   break;
>   bh = get_last_bh (&path);
>@@ -394,6 +398,10 @@ research:
> 
> finished:
> pathrelse (&path);
>+
>+if(result == IO_ERROR)
>+  return -EIO;
>+
> /* this buffer has valid data, but isn't valid for io.  mapping it to
>  * block #0 tells the rest of reiserfs it just has a tail in it
>  */
>  
>



Re: reiser4 plugins

2005-06-22 Thread Hans Reiser
Jeff Garzik wrote:

> We have to maintain said ugly code for decades.

No you don't, I do.

>> filesystem, but if so, it will have to do it much more slowly.  Take the
>> good ideas -- things like plugins -- and make them at least look like
>> incremental updates to the current VFS, and make them available to all
>> filesystems.
>
> So, Reiser4 may eventually take over VFS and be the only Linux
>
> This is how all Linux development is done.
>
> The code evolves over time.
>
> You have just described the path ReiserFS needs to take, in order to
> get this stuff into the kernel, in fact.

You missed his point.  He is saying ext3 code should migrate towards
becoming reiser4 plugins, and reiser4 should be merged now so that the
migration can get started.

I don't really care whether ext3 uses our plugin model.  (If it does,
fine, please credit me for it though, and consider maybe a thank you.  I
am happy to thank the XFS team for the idea of delayed allocation)

I am entitled to get some advantage from being the first on the block. 
Other fs maintainers don't want me to have that entitlement, so they add
delays to slow us down.  It is odd how Hellwig no longer describes
himself as XFS associated.  Did SGI and him

> There is no entitlement to be merged in the upstream kernel.  

True, but what is interesting is that you don't think the faster
filesystem should be merged, and the others should catch up to it later
if they can, instead you think it should be delayed until all of its
benefits can be transmitted to the other filesystems first so that
everyone can be equal. 




Re: reiser4 plugins

2005-06-22 Thread Hans Reiser
Christoph Hellwig wrote:

>
>
>  
>
>>What is wrong with having one file in the FS use a write only plugin, in
>>which the encrypion key is changed with every append in a forward but
>>not backward computable manner, and in order to read a file you must
>>either have a key that is stored on another computer or be reading what
>>was written after the moment of cracking root?
>>
>>
>
>Because root can read kernel memory this is completely useless :)
>  
>
You missed the point of it rather nicely.  If root can read kernel
memory, that only gets it the appends made after the point in time of
cracking root.


It is not my idea, and it is not yet present in our code, let me not
seem to take credit for it though I think it a good idea.


Re: reiser4 plugins

2005-06-22 Thread Hans Reiser
Correct me if I am wrong:

What exists currently in VFS are vector instances, not classes. Plugins,
selected by pluginids, are vector classes, with each pluginid selecting
a vector class. You propose to have the vector class layer (aka plugin
layer) in reiser4 export the vector instance to VFS for VFS to handle
for each object, rather than having VFS select reiser4 and reiser4
selecting a vector class (aka plugin) which selects a method.

If we agree on the above, then I will comment further.

Christoph Hellwig wrote:

>On Wed, Jun 22, 2005 at 06:24:32PM +0400, Alexander Zarochentsev wrote:
>  
>
>>Reiser plugins are for the same.  Would you agree with reiser4 plugin design 
>>if the plugins will not dispatch VFS object methods calls by themselves but 
>>set ->foo_ops fileds instead?  I guess you don't like to have the two 
>>dispatching systems at the same level.
>>
>>
>
>That is exactly the point I want to make.  I haven't looked at the design
>in detail for a long time, but schemes to allow different object to have
>different operation vectors is a good idea.  We already have that to
>varying degrees in all filesystems, and making that more formal is a good
>thing.  
>
>
>  
>



Re: reiser4 plugins

2005-06-22 Thread Roland Dreier
David> Spotlight on the Mac.  Users love it.  We can do it.  But
David> not without changing something in the filesystem.

David> Actually, I think we came up with several ways to do this,
David> all of which required Reiser4 interfaces.

It seems the existing Beagle project is a counterexample to this.  In
fact, to make things even more perfect, Beagle doesn't work on top of
Reiser4.

 - R.


Re: reiser4 plugins

2005-06-22 Thread Nikita Danilov
David Masover writes:

[...]

 > 
 > What we want is to have programs that can write small changes to one
 > file or to many files, lump all those changes into a transaction, and
 > have the transaction either succeed or fail.

No existing file system guarantees such behavior. Even atomicity of
single system call is not guaranteed.

 > 
 > > it doesn't stop the system dead in its tracks waiting for some very long
 > > transaction to finish?
 > 
 > We've also discussed this.  For one thing, if we can have transactions
 > in databases which don't stop the database dead in its tracks, why can't
 > we do it with filesystems?

Because to have such transactions databases pay huge price in both
resource consumption and available concurrency (isolation, commit-time
locks, etc.), and yet mechanism they use to deal with stuck transactions
(which is simply to abort it) is not very suitable for the file system.

 > 
 > But anyway, if you really want to know, ask someone else or read the
 > archives.  I wasn't really paying attention except to remember that this
 > issue was resolved.

That would be real breakthrough.

[...]

 > 
 > >> fibretions, etc,
 > > 
 > > 
 > > ???
 > 
 > Low-level tweaking.  I think the word is from some sort of calculus.

Fibration. http://marc.theaimsgroup.com/?l=linux-kernel&m=108032604606183&w=2

Nikita.


Re: reiser4 plugins

2005-06-22 Thread David Masover
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Horst von Brand wrote:
> Artem B. Bityuckiy <[EMAIL PROTECTED]> wrote:
> 
>>Markus TЖrnqvist wrote:
[...]
>>> and move the stuff to the VFS as needed or
>>>deemed necessary. And enable the pseudo interface, or at least
>>>set it in menuconfig and enable by default, it needs testing too.
> 
> 
> Then test it out of the standard tree...

Standard tree is actually a good place to test things.  That's why there
are so many things there that say "EXPERIMENTAL", and so many of those
don't work.  Some even refuse to compile.

>>atomic operations,
> 
> 
> What is atomic that isn't in the standard filesystems? How do you guarantee

We've been discussing this for quite awhile.  In standard filesystems,
the only things that are atomic are metadata.  If I rename a file and
crash, I'm guarenteed to either have renamed the file or not, and not be
caught halfway.

This does not apply to files.  In fact, the only way to perform an
atomic write on a file, using the filesystem's atomicity, is to write a
new file, nuke the old one, and rename the new one on top of the old one.

What we want is to have programs that can write small changes to one
file or to many files, lump all those changes into a transaction, and
have the transaction either succeed or fail.

> it doesn't stop the system dead in its tracks waiting for some very long
> transaction to finish?

We've also discussed this.  For one thing, if we can have transactions
in databases which don't stop the database dead in its tracks, why can't
we do it with filesystems?

But anyway, if you really want to know, ask someone else or read the
archives.  I wasn't really paying attention except to remember that this
issue was resolved.

>>   different kinds of stat data,
> 
> 
> Usefulness? Sounds like kernel bloat leading to userspace bloat and
> applications/users wondering what the heck goes on when they don't grok the
> particular stat format.

So you allow multiple stat formats.  Bloat is not as big an issue here
as the bloat of existing systems which run on top of the FS and don't
cooperate.  Gnome and KDE each have their own VFS, for instance.

>> fibretions, etc,
> 
> 
> ???

Low-level tweaking.  I think the word is from some sort of calculus.

>>etc. Some thing is not yet ready - doesn't matter. Some of this is of
>>general interest, some is Reiser4-dedicated.
> 
> 
> I don't see anything that would interest me at least, so you can safely
> scratch the "general interest" part.

You're the sole general public?

>>New interfaces are needed to allow users to utilize that all.
> 
> 
> That is a quite strong argument /against/ it all in my book. It means bloat
> in /every/ filesystem, and they have shown to be able to do without for
> some 30 years now. I'd need /very/ strong reasons for adding something.

Spotlight on the Mac.  Users love it.  We can do it.  But not without
changing something in the filesystem.

Actually, I think we came up with several ways to do this, all of which
required Reiser4 interfaces.

It's "bloat" until you need it.

>>  My point
>>is that the things that are of general interest must not be
>>Reiser4-only.
> 
> 
> Reiser4-only stuff is of very limited use, if it isn't just internal
> stuff. And that doesn't need any changes.

Only it does.  Reiser4 can't get into the kernel because it duplicates
the VFS in order to extend it.  It couldn't get in before because it
extended the VFS directly.

Maybe you just don't want this system to EVER get in, no matter what
they do to it?

>>  For example, I should have a possibility to implement
>>files-like-dir in _another_ FS using the same interfaces that Reiser4
>>uses. That's all I wanted to say.
> 
> 
> It has been argued over and over that that particular feature /can't/ be
> implemented sanely anyway, so it has to stay out. Besides not making any

It's been dropped for the moment, but it's been argued just as many
times that it can be done sanely.

> sense. "You've got files and directories" is a bit asymetrical and so not
> quite nice; "all you have is directories" is symmetrical, estetic, and
> completely useless; "some files are directories, some aren't; files in
> file-directories are different than regular files in directory-directories"
> is just a mindless jumble.

Or you can just say "There are no files.  There are no directories.
There are only objects, which contain a chunk of linear data and other
objects."

If you actually go read the whitepaper, you will discover that this is
actually a cleaner, more esthetic, and more useful model than the
current one.  It's just a little harder to do.
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iQIVAwUBQrndSHgHNmZLgCUhAQKOCxAAlhBiu234fmMaUv7kYp0Xt1V2yjP67c8U
ggUbB6

[PATCH] reiserfs: enable attrs by default if safe

2005-06-22 Thread Jeff Mahoney

 The following patch enables attrs by default if the reiserfs_attrs_cleared
 bit is set in the superblock. This allows chattr-type attrs to be used
 without any further action by the user.

Signed-off-by: Jeff Mahoney <[EMAIL PROTECTED]>
 
diff -ruNpX dontdiff linux-2.6.12-rc6/fs/reiserfs/super.c 
linux-2.6.12-rc6.devel/fs/reiserfs/super.c
--- linux-2.6.12-rc6/fs/reiserfs/super.c2005-06-13 14:34:58.0 
-0400
+++ linux-2.6.12-rc6.devel/fs/reiserfs/super.c  2005-06-22 17:34:55.0 
-0400
@@ -884,6 +884,8 @@ static void handle_attrs( struct super_b
reiserfs_warning(s, "reiserfs: cannot support 
attributes until flag is set in super-block" );
REISERFS_SB(s) -> s_mount_opt &= ~ ( 1 << 
REISERFS_ATTRS );
}
+   } else if (le32_to_cpu( rs -> s_flags ) & reiserfs_attrs_cleared) {
+   REISERFS_SB(s)->s_mount_opt |= REISERFS_ATTRS;
}
 }
 
-- 
Jeff Mahoney
SuSE Labs


[PATCH] reiserfs: Check if attrs are enabled for attr ioctls

2005-06-22 Thread Jeff Mahoney

 ReiserFS currently will allow the user to set/get attrs for files regardless
 if they are enabled. The patch checks to see if they are enabled, and returns
 -NOTTY if they are not.

 ext[23] doesn't need this check because attrs are always enabled.

Signed-off-by: Jeff Mahoney <[EMAIL PROTECTED]>
 
diff -ruNpX dontdiff linux-2.6.12-rc6/fs/reiserfs/ioctl.c 
linux-2.6.12-rc6.devel/fs/reiserfs/ioctl.c
--- linux-2.6.12-rc6/fs/reiserfs/ioctl.c2005-06-13 14:34:32.0 
-0400
+++ linux-2.6.12-rc6.devel/fs/reiserfs/ioctl.c  2005-06-22 17:30:40.0 
-0400
@@ -34,10 +34,16 @@ int reiserfs_ioctl (struct inode * inode
/* following two cases are taken from fs/ext2/ioctl.c by Remy
   Card ([EMAIL PROTECTED]) */
case REISERFS_IOC_GETFLAGS:
+   if (!reiserfs_attrs (inode->i_sb))
+   return -ENOTTY;
+
flags = REISERFS_I(inode) -> i_attrs;
i_attrs_to_sd_attrs( inode, ( __u16 * ) &flags );
return put_user(flags, (int __user *) arg);
case REISERFS_IOC_SETFLAGS: {
+   if (!reiserfs_attrs (inode->i_sb))
+   return -ENOTTY;
+
if (IS_RDONLY(inode))
return -EROFS;
 
-- 
Jeff Mahoney
SuSE Labs


Re: How to make Reiser4 plugins&namespace magic work?

2005-06-22 Thread Roman I Khimov
It works! Thank you, Edward. :)

В Срд, 22.06.2005, в 19:32, Edward Shishkin пишет:
> >Andrew Morton mentioned that "patches still contain all the
> >reiser4-specific namespace enhancements, only it is disabled, so it is
> >effectively dead code" and it seems this explains why I didn't see any
> >of Reiser4 namespace magic last time I've tried to play with it.
> >
> >But actually I want to see it and I want to play with it - any recipe
> >for how to revive this code?
> >
> >Thanks.
> >
> >  
> >
> Hello.
> You might want to enable pseudo interface having
>  #define ENABLE_REISER4_PSEUDO (1)
> in reiser4.h, build the kernel and read this paper:
> http://thebsh.namesys.com/v4/pseudo.html
> Note, that this paper is not updated, so use "" instead of "metas".
> Also in order to use this interface for regular files the last ones 
> should have an executable flag.
> 
> Thanks,
> Edward.
-- 
Roman
 ,---. ,--.
/ http://www.3os.ru/  Vhttp://www.osrc.info/   \ .o.
\mailto: [EMAIL PROTECTED]   ^   mailto: [EMAIL PROTECTED]/ 
..o
 `---' `--'  ooo
gpg --recv-keys 0xE5E055C3 --keyserver hkp://subkeys.pgp.net


signature.asc
Description: Эта часть	 сообщения	 подписана	 цифровой	 подписью


[PATCH] reiserfsprogs: Warn on block sizes > 4k

2005-06-22 Thread Jeff Mahoney
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1


Hello all -

Filesystems created with block size > page size will not work until that
support is added to the kernel. Filesystems with block size > 4k (lowest
page size supported in Linux) will not work on all systems. This patch
adds a check and a warning in those conditions, informing the user of
the caveats of using a larger block size. It can be overridden with -f.

Patch attached, please apply.

- -Jeff

- --
Jeff Mahoney
SuSE Labs
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.0 (GNU/Linux)

iD8DBQFCuaqrLPWxlyuTD7IRApVpAJ41vsbPZxZrLqp96kr1AJx0DETsCQCfTUOH
uW4BvvYQiYB4knnt6gdgn6A=
=bSZ+
-END PGP SIGNATURE-
Subject: [PATCH] reiserfsprogs: Warn on block sizes > 4k
From: Jeff Mahoney <[EMAIL PROTECTED]>

 Filesystems created with block size > page size will not work until that
 support is added to the kernel. Filesystems with block size > 4k (lowest
 page size supported in Linux) will not work on all systems. This patch
 adds a check and a warning in those conditions, informing the user of the
 caveats of using a larger block size. It can be overridden with -f.

diff -ruNp reiserfsprogs-3.6.19/mkreiserfs/mkreiserfs.c reiserfsprogs-3.6.19.devel/mkreiserfs/mkreiserfs.c
--- reiserfsprogs-3.6.19/mkreiserfs/mkreiserfs.c	2004-09-30 23:04:21.0 +0200
+++ reiserfsprogs-3.6.19.devel/mkreiserfs/mkreiserfs.c	2005-06-22 19:26:58.221711866 +0200
@@ -684,6 +684,9 @@ int main (int argc, char **argv)
 
 if (!(mode & QUIET_MODE) && !can_we_format_it (device_name, force))
 return 1;
+
+if (!(mode & QUIET_MODE) && !block_size_ok (Block_size, force))
+return 1;
 	
 if (jdevice_name)
 if (!(mode & QUIET_MODE) && !can_we_format_it (jdevice_name, force))
diff -ruNp reiserfsprogs-3.6.19/reiserfscore/reiserfslib.c reiserfsprogs-3.6.19.devel/reiserfscore/reiserfslib.c
--- reiserfsprogs-3.6.19/reiserfscore/reiserfslib.c	2004-10-04 22:39:35.0 +0200
+++ reiserfsprogs-3.6.19.devel/reiserfscore/reiserfslib.c	2005-06-22 20:07:38.015345826 +0200
@@ -1175,6 +1175,24 @@ void make_sure_root_dir_exists (reiserfs
 		&parent_root_dir_key, ih_flags);
 }
 
+int block_size_ok (int blocksize, int force)
+{
+int pagesize = getpagesize();
+if (blocksize > 4096) {
+reiserfs_warning (stderr, "Block sizes larger than 4k are not "
+  "supported on all architectures.\n");
+if (blocksize > pagesize)
+reiserfs_warning (stderr, "The newly created filesystem will not "
+  "be mountable on this system.\n");
+else
+reiserfs_warning (stderr, "The newly created filesystem may not "
+  "be mountable on other systems.\n");
+check_forcing_ask_confirmation (force);
+}
+
+return 1;
+}
+
 
 /* we only can use a file for filesystem or journal if it is either not
mounted block device or regular file and we are forced to use it */


No more penis enlarge ripoffs!

2005-06-22 Thread Nellie

Expand your Penis 20% Larger in weeks
http://www.retdehola.com/ss/





Do not throw the arrow which will return against you.   
I have read your book and much like it.
Do definite good; first of all to yourself, then to definite persons. 
Intuition isn't the enemy, but the ally, of reason.
It is easier to be critical than correct. 





Re: reiser4 plugins

2005-06-22 Thread Horst von Brand
Artem B. Bityuckiy <[EMAIL PROTECTED]> wrote:
> Markus TЖrnqvist wrote:
> > So merge it as it is 

Fix it first. The "merge as it stands" just gives rise to stuff that is
/never/ fixed properly.

> >  and move the stuff to the VFS as needed or
> > deemed necessary. And enable the pseudo interface, or at least
> > set it in menuconfig and enable by default, it needs testing too.

Then test it out of the standard tree...

> Reiser4 has a number of great (IMO) things like file as directory,

Urgh.

> atomic operations,

What is atomic that isn't in the standard filesystems? How do you guarantee
it doesn't stop the system dead in its tracks waiting for some very long
transaction to finish?

>different kinds of stat data,

Usefulness? Sounds like kernel bloat leading to userspace bloat and
applications/users wondering what the heck goes on when they don't grok the
particular stat format.

>  fibretions, etc,

???

> etc. Some thing is not yet ready - doesn't matter. Some of this is of
> general interest, some is Reiser4-dedicated.

I don't see anything that would interest me at least, so you can safely
scratch the "general interest" part.

> New interfaces are needed to allow users to utilize that all.

That is a quite strong argument /against/ it all in my book. It means bloat
in /every/ filesystem, and they have shown to be able to do without for
some 30 years now. I'd need /very/ strong reasons for adding something.

>   My point
> is that the things that are of general interest must not be
> Reiser4-only.

Reiser4-only stuff is of very limited use, if it isn't just internal
stuff. And that doesn't need any changes.

>   For example, I should have a possibility to implement
> files-like-dir in _another_ FS using the same interfaces that Reiser4
> uses. That's all I wanted to say.

It has been argued over and over that that particular feature /can't/ be
implemented sanely anyway, so it has to stay out. Besides not making any
sense. "You've got files and directories" is a bit asymetrical and so not
quite nice; "all you have is directories" is symmetrical, estetic, and
completely useless; "some files are directories, some aren't; files in
file-directories are different than regular files in directory-directories"
is just a mindless jumble.

> The other question that it may be difficult to foresee everything and
> it may make sense to move some things upper in future.

Another good reason to keep it out ;-)
-- 
Dr. Horst H. von Brand   User #22616 counter.li.org
Departamento de Informatica Fono: +56 32 654431
Universidad Tecnica Federico Santa Maria  +56 32 654239
Casilla 110-V, Valparaiso, ChileFax:  +56 32 797513


Re: reiser4 plugins

2005-06-22 Thread Nikita Danilov
Vladimir Saveliev writes:
 > Hello
 > 
 > On Wed, 2005-06-22 at 18:28, Nikita Danilov wrote:
 > > David Masover writes:
 > > 
 > > [...]
 > > 
 > >  > 
 > >  > Maintainability is like optimization.  The maintainability of a
 > >  > non-working program is irrelevant.  You'd be right if we already had
 > >  > plugins-in-the-VFS.  We don't.  The most maintainable solution for
 > >  > plugins-in-the-FS that actually exists is Reiser4, exactly as it is now
 > >  > - -- because it is the _only_ one that actually exists right now.
 > > 
 > > But it is not so. There _are_ plugins-in-the-VFS. VFS operates on opaque
 > > objects (inodes, dentries, file system types) through interfaces:
 > > {inode,address_space,dentry,sb,etc.}_operations. Every file system
 > > back-end if free to implement whatever number of these interfaces. And
 > > the do this already: check the sources; even ext2 does this: e.g.,
 > > ext2_fast_symlink_inode_operations and ext2_symlink_inode_operations.
 > > 
 > 
 > imho, this is something different. Ext2 decides itself how to manage a
 > symlink depending on length of string the symlink is to store.
 > Reiser4 plugins are to allow a user to define himself which operations
 > file is to be managed with.

I fail to see this as an important distinction:

 - ext2decides what "plugin" to use based on parameters supplied to
 the file creation system call;

 - reiser4 decides what "plugin" to use based on parameters supplied to
 the file creation system call.

 > 
 > > This is exactly what upper level reiser4 plugins are for.
 > 
 > > I guess that one of Christoph Hellwig's complaints is that reiser4
 > > introduces another layer of abstraction to implement something that
 > > already exists.
 > > 
 > 
 > I do not think that it exists already.
 > You can have standart type of files and that is all.
 > 
 > Linux filesystem is not supposed to provide anything but plain
 > regular/directory/symlinks/sockets/block device/char device/fifo files.

If you are talking about S_IFMT bits they are just a relic to keep user
level happy (yes, VFS does few S_ISFOO checks here and there, but they
all can be replaced with checks for appropriate operations being
non-NULL). Nothing prevents file system from rolling forward whatever
exotic objects it wants.

 > 
 > Existing file API does not allow create anything but that.
 > Merging reiser4 with object plugins would make it necessary to modify
 > VFS layer so that files of arbitrary types could be created.
 > 

This is important, but it doesn't depend on whether file system has
additional layer if indirection below VFS operations. If file system
wants to support extended object types, additional parameters have to be
somehow communicated from the user level during object creation. But:

 - this is necessary even if file system has no "plugins" below VFS
 operations;

 - this doesn't necessary means changing VFS. For example, these
 parameters can be set on parent directory (this is how ACLs were
 integrated into POSIX).

 >

Nikita.


Re: reiser4 plugins

2005-06-22 Thread Markus T�rnqvist
On Wed, Jun 22, 2005 at 06:46:50PM +0200, M. wrote:
>
>Is it not simpler to ask the reiserfs guys for a detailed explanation
>of why and where this plugins' layer differs from using VFS for
>plugins and let others comment on that ?

I hope this is not FUD or something like that, but it seems to me
the VFS guys are not too willing to implement Reiser4-HiFi stuff anywhere
else, like the VFS, and don't want Reiser4 in, because it duplicates.

Think of the chicken and the egg.

I may be wrong, though.

>If something cant be done using VFS this layer is needed by reiser4
>and has to be merged.

But it's still possible to let Reiser4 in and take them, say, a feature
at a time to the VFS.

Unless it's going to be a political wankfest/pissing contest about
if things like this should even be implemented, anywhere, ever :P

-- 
mjt




signature.asc
Description: Digital signature


Re: reiser4 plugins

2005-06-22 Thread M.
Hi,

Is it not simpler to ask the reiserfs guys for a detailed explanation
of why and where this plugins' layer differs from using VFS for
plugins and let others comment on that ?
If something cant be done using VFS this layer is needed by reiser4
and has to be merged.

Michele


Re: reiser4 plugins

2005-06-22 Thread Artem B. Bityuckiy

Markus TЖrnqvist wrote:

So merge it as it is and move the stuff to the VFS as needed or
deemed necessary. And enable the pseudo interface, or at least
set it in menuconfig and enable by default, it needs testing too.
Reiser4 has a number of great (IMO) things like file as directory, 
atomic operations, different kinds of stat data, fibretions, etc, etc. 
Some thing is not yet ready - doesn't matter. Some of this is of general 
interest, some is Reiser4-dedicated.


New interfaces are needed to allow users to utilize that all. My point 
is that the things that are of general interest must not be 
Reiser4-only. For example, I should have a possibility to implement 
files-like-dir in _another_ FS using the same interfaces that Reiser4 
uses. That's all I wanted to say.


The other question that it may be difficult to foresee everything and it 
may make sense to move some things upper in future.


--
Best Regards,
Artem B. Bityuckiy,
St.-Petersburg, Russia.



Re: reiser4 plugins

2005-06-22 Thread Vladimir Saveliev
Hello

On Wed, 2005-06-22 at 18:28, Nikita Danilov wrote:
> David Masover writes:
> 
> [...]
> 
>  > 
>  > Maintainability is like optimization.  The maintainability of a
>  > non-working program is irrelevant.  You'd be right if we already had
>  > plugins-in-the-VFS.  We don't.  The most maintainable solution for
>  > plugins-in-the-FS that actually exists is Reiser4, exactly as it is now
>  > - -- because it is the _only_ one that actually exists right now.
> 
> But it is not so. There _are_ plugins-in-the-VFS. VFS operates on opaque
> objects (inodes, dentries, file system types) through interfaces:
> {inode,address_space,dentry,sb,etc.}_operations. Every file system
> back-end if free to implement whatever number of these interfaces. And
> the do this already: check the sources; even ext2 does this: e.g.,
> ext2_fast_symlink_inode_operations and ext2_symlink_inode_operations.
> 

imho, this is something different. Ext2 decides itself how to manage a
symlink depending on length of string the symlink is to store.
Reiser4 plugins are to allow a user to define himself which operations
file is to be managed with.

> This is exactly what upper level reiser4 plugins are for.

> I guess that one of Christoph Hellwig's complaints is that reiser4
> introduces another layer of abstraction to implement something that
> already exists.
> 

I do not think that it exists already.
You can have standart type of files and that is all.

Linux filesystem is not supposed to provide anything but plain
regular/directory/symlinks/sockets/block device/char device/fifo files.

Existing file API does not allow create anything but that.
Merging reiser4 with object plugins would make it necessary to modify
VFS layer so that files of arbitrary types could be created.





Re: reiser4 plugins

2005-06-22 Thread Markus T�rnqvist
On Wed, Jun 22, 2005 at 07:10:58PM +0400, Artem B. Bityuckiy wrote:
>
>More filesystems in future may want to use these semantics. There are 
>cases when one can't use Reiser4 to implement them, but instead, need to 
>implement another file system with the same semantics.

So merge it as it is and move the stuff to the VFS as needed or
deemed necessary. And enable the pseudo interface, or at least
set it in menuconfig and enable by default, it needs testing too.

Then someone says "we can't implement this in the fs" and someone
else says "we can't implement this in the vfs" and someone else
says "this is a good thing which we want but you won't let us"
and we stagnate again...

Isn't this bickering getting a bit old?
After all, it seems the code is merged in -mm, the big issues are fixed
and all should be ready for more real-life testing and such?

-- 
mjt



signature.asc
Description: Digital signature


Re: How to make Reiser4 plugins&namespace magic work?

2005-06-22 Thread Edward Shishkin

Roman I Khimov wrote:


Hello.

Andrew Morton mentioned that "patches still contain all the
reiser4-specific namespace enhancements, only it is disabled, so it is
effectively dead code" and it seems this explains why I didn't see any
of Reiser4 namespace magic last time I've tried to play with it.

But actually I want to see it and I want to play with it - any recipe
for how to revive this code?

Thanks.

 


Hello.
You might want to enable pseudo interface having
#define ENABLE_REISER4_PSEUDO (1)
in reiser4.h, build the kernel and read this paper:
http://thebsh.namesys.com/v4/pseudo.html
Note, that this paper is not updated, so use "" instead of "metas".
Also in order to use this interface for regular files the last ones 
should have an executable flag.


Thanks,
Edward.



Re: reiser4 plugins

2005-06-22 Thread Nikita Danilov
Hans Reiser writes:
 > Andi Kleen wrote:
 > 
 > > Christoph does a lot of reviewing 
 > >
 > and he is notorious for making needed linux contributors go away and not
 > come back, and I won't say which famous person on this mailing list told
 > me that
 > 
 > >and your child definitely
 > >is in serious need of that to be mergeable. I'm sure Christoph is able
 > >to review inpartially even when he is involved with other FS.
 > >  
 > >
 > As impartial as a puppy on PCP
 > 
 > Christoph is aggressive about things he does not take the time to
 > understand or ask about first.  I hate that.   I wish he would go away
 > please.  He is not exactly an Ousterhout, Rob Pike, Granger, Mazieres,
 > Frans Kaashoek, etc.,  in his accomplishments, so why is he reviewing
 > other people's filesystems?  Reviews are great, how about finding
 > persons who have created filesystem innovations (and thus are less
 > likely to reject innovations without understanding them) to do them? 

Well, because of his classy hair-style of course.

Seriously, Linux is not managed by a committee. There is nobody to
appoint Official File System Reviewers of Her Majesty. Everything here
(including your credentials as a file system designer) is
self-proclaimed.

 > 
 > How about review by benchmark instead?

[...]

 >   I frankly think that with my
 > benchmarks, I should be allowed to tinker on my own. 

I am afraid it will sound picky, but 10 month ago you said you are
planning to replace benchmarks on the namesys.com with fairer ones:

http://marc.theaimsgroup.com/?l=reiserfs&m=109368686019301&w=2

Last time I checked, http://namesys.com/benchmarks.html still features
only mongo runs with overwrite/modify phases off and with all operations
done in readdir order (most favorable mode for reiser4).

 >
 > Hans The Mad
 > 

Nikita.


Re: reiser4 plugins

2005-06-22 Thread Artem B. Bityuckiy

Christophe Saout wrote:

The plugins that add additional VFS semantics (that are currently
disable) should most definitely not be implemented only inside the
filesystem. I think Hans did this because it would have been a lot more
work doing this at the proper layer (which means talking to people and a
lot of politics...).

I would even do s/should most definitely not/must not/

More filesystems in future may want to use these semantics. There are 
cases when one can't use Reiser4 to implement them, but instead, need to 
implement another file system with the same semantics.


--
Best Regards,
Artem B. Bityuckiy,
St.-Petersburg, Russia.


Re: reiser4 plugins

2005-06-22 Thread Christophe Saout
Am Dienstag, den 21.06.2005, 18:18 -0700 schrieb Andrew Morton:

> > What is wrong with having an encryption plugin implemented in this
> >  manner?  What is wrong with being able to have some files implemented
> >  using a compression plugin, and others in the same filesystem not.
> > 
> >  What is wrong with having one file in the FS use a write only plugin, in
> >  which the encrypion key is changed with every append in a forward but
> >  not backward computable manner, and in order to read a file you must
> >  either have a key that is stored on another computer or be reading what
> >  was written after the moment of cracking root?
> > 
> >  What is wrong with having a set of critical data files use a CRC
> >  checking file plugin?
> 
> I think the concern here is that this is implemented at the wrong level.
> 
> In Linux, a filesystem is some dumb thing which implements
> address_space_operations, filesystem_operations, etc.
> 
> Advanced features such as those which you describe are implemented on top
> of the filesystem, not within it.  reiser4 turns it all upside down.
> 
> Now, some of the features which you envision are not amenable to
> above-the-fs implementations.  But some will be, and that's where we should
> implement those.

Yes, but that would be difficult, probably worse. The name "plugins" is
perhaps a bit misleading. These plugins are most of the time some sort
client to the reiser4 on-disk database structure. The core code is does
on-disk tree handling, journalling and these things. The plugins in turn
glue this core database system to the rest of the system in order to
make a filesystem of it. The "file plugin" tells the database how to
store files.

A compression plugins is more tricky. Files should be randomly
accessible and if you write in the middle of the file the compressed
block might change in size. For reiser4 this is not a problem since it
just tells the underlying database "give me some room for 1234 bytes and
insert it in the tree instead of the other block". The reiser4 core has
totally different semantics than the VFS layer and I don't see how these
things could be handled elsewhere in this simple way.

The reiser4 core is more some sort of library that abstracts a block
device and provides some sort of database API (which is highly optimized
for filesystem purposes). The actual filesystem is then another layer on
top of this. You could actually implement lots of different filesystems
on top of that database core.

The actual layer is a bit different though. The database core itself
registers with the Linux VFS and then passes the calls down to one of
the plugins which then calls back into the reiser4 core to do the actual
database modification. I think this was the point that Christoph was
criticizing the most.

Currently it looks like this:

 ,--.   ,--.
VFS ---> |  | > |  |
 | /fs/reiser4/ |   | .../plugins/ |
blockdev <-- |  | <---> |  |
 `--'   `--'

So the reiser4 code is introducing another abstraction of the Linux VFS
layer instead of letting the plugins define the Linux VFS ops directly.
Which would look like this:

,--.
VFS --> |  |
 ,--,   | .../plugins/ |
blockdev <-- | /fs/reiser4/ | <---> |  |
 `--'   `--'

Which probably would be okay for most of the time except for some
details (which could probably be solved otherwise).

Actually the flow is not always this simple, usually the path goes back
and forth multiple time between the core and the plugins.

One of the features Hans is using is that there can be different kinds
of files. The on-disk structure tells the core which of the plugins is
responsible for the "database object" found on the disk. It could be a
directory or a "stat data" (inode) or a file. The file itself could be
handled by different plugins like one that stores the data directly or
one that compresses it.

reiser4 is different than other filesystems in that it uses a lot more
abstraction levels. The database aspect and the semantic aspect of a
traditional filesystems are strongly separated.

To understand the code probably means a lot of work because it is a bit
different. Some of the layering concerns may be right, other probably
not.

The plugins that add additional VFS semantics (that are currently
disable) should most definitely not be implemented only inside the
filesystem. I think Hans did this because it would have been a lot more
work doing this at the proper layer (which means talking to people and a
lot of politics...).

The last time I looked at the code is a while ago, so if I'm wrong on
something, please don't shoot me. The only thing I can say is that
reiser4 has very stable for me (though I've gone back to re

How to make Reiser4 plugins&namespace magic work?

2005-06-22 Thread Roman I Khimov
Hello.

Andrew Morton mentioned that "patches still contain all the
reiser4-specific namespace enhancements, only it is disabled, so it is
effectively dead code" and it seems this explains why I didn't see any
of Reiser4 namespace magic last time I've tried to play with it.

But actually I want to see it and I want to play with it - any recipe
for how to revive this code?

Thanks.

-- 
Roman
 ,---. ,--.
/ http://www.3os.ru/  Vhttp://www.osrc.info/   \ .o.
\mailto: [EMAIL PROTECTED]   ^   mailto: [EMAIL PROTECTED]/ 
..o
 `---' `--'  ooo
gpg --recv-keys 0xE5E055C3 --keyserver hkp://subkeys.pgp.net


signature.asc
Description: Эта часть	 сообщения	 подписана	 цифровой	 подписью


Re: reiser4 plugins

2005-06-22 Thread Christoph Hellwig
On Wed, Jun 22, 2005 at 06:24:32PM +0400, Alexander Zarochentsev wrote:
> Reiser plugins are for the same.  Would you agree with reiser4 plugin design 
> if the plugins will not dispatch VFS object methods calls by themselves but 
> set ->foo_ops fileds instead?  I guess you don't like to have the two 
> dispatching systems at the same level.

That is exactly the point I want to make.  I haven't looked at the design
in detail for a long time, but schemes to allow different object to have
different operation vectors is a good idea.  We already have that to
varying degrees in all filesystems, and making that more formal is a good
thing.  


Re: reiser4 plugins

2005-06-22 Thread Nikita Danilov
David Masover writes:

[...]

 > 
 > Maintainability is like optimization.  The maintainability of a
 > non-working program is irrelevant.  You'd be right if we already had
 > plugins-in-the-VFS.  We don't.  The most maintainable solution for
 > plugins-in-the-FS that actually exists is Reiser4, exactly as it is now
 > - -- because it is the _only_ one that actually exists right now.

But it is not so. There _are_ plugins-in-the-VFS. VFS operates on opaque
objects (inodes, dentries, file system types) through interfaces:
{inode,address_space,dentry,sb,etc.}_operations. Every file system
back-end if free to implement whatever number of these interfaces. And
the do this already: check the sources; even ext2 does this: e.g.,
ext2_fast_symlink_inode_operations and ext2_symlink_inode_operations.

This is exactly what upper level reiser4 plugins are for.

I guess that one of Christoph Hellwig's complaints is that reiser4
introduces another layer of abstraction to implement something that
already exists.

Nikita.


Re: reiser4 plugins

2005-06-22 Thread Alexander Zarochentsev
On Wednesday 22 June 2005 05:14, Jeff Garzik wrote:
> Hans Reiser wrote:
> > Christoph,
> >
> > Reiser4 users love the plugin concept, and all audiences which have
> > listened to a presentation on plugins have been quite positive about
> > it.  Many users think it is the best thing about reiser4.  Can you
> > articulate why you are opposed to plugins in more detail?  Perhaps you
> > are simply not as familiar with it as the audiences I have presented
> > to.  Perhaps persons on our mailing list can comment.
> >
> > In particular, what is wrong with having a plugin id associated with
> > every file, storing the pluginid on disk in permanent storage in the
> > stat data, and having that plugin id define the set of methods that
> > implement the vfs operations associated with a particular file, rather
> > than defining VFS methods only at filesystem granularity?
>
> You're basically implementing another VFS layer inside of reiser4, which
> is a big layering violation.

Reiser4 suggests a bit more file types than VFS is aware of. I don't even 
think VFS should be.  It is enough that VFS allows each inode/file/dentry  to 
behave own way.  IIRC VFS object's ->foo_ops is for that.   

Reiser plugins are for the same.  Would you agree with reiser4 plugin design 
if the plugins will not dispatch VFS object methods calls by themselves but 
set ->foo_ops fileds instead?  I guess you don't like to have the two 
dispatching systems at the same level.

> This sort of feature should -not- be done at the low-level filesystem
> level.
>
> What happens if people decide plugins are a good idea, and they want
> them in ext3?  We need massive surgery to extract the guts from reiser4.if 
>
>   Jeff

Thanks,
Alex



Re: reiser4 plugins

2005-06-22 Thread Rik Van Riel
On Tue, 21 Jun 2005, David Masover wrote:

> The point is, this was in the kernel for quite awhile, and it was so
> ugly that someone would rather be fucked with a chainsaw.  If something
> that bad can make it in the kernel and stay for awhile because it
> worked, and no one wanted to replace it

I would like to think we could learn from the mistakes
made in the past, instead of repeating them.

Ugly code often is so ugly people don't *want* to fix
it, so merging ugly code is often a big mistake.

-- 
The Theory of Escalating Commitment: "The cost of continuing mistakes is
borne by others, while the cost of admitting mistakes is borne by yourself."
  -- Joseph Stiglitz, Nobel Laureate in Economics


Re: reiser4 plugins

2005-06-22 Thread Stefan Smietanowski
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi David

> And here is the crucial point.  Reiser4 is usable and useful NOW, not
> after it has undergone massive surgery, and Namesys is bankrupt, and
> users have given up and moved on to XFS.  But the massive surgery should
> happen eventually, partly to make all filesystems better (see below),
> and partly to make the transition easier and more palatable for those
> who don't work for Namesys.

Sometimes someone comes with "I have this code NOW and if we just merge
it I'll fix it up properly". It's rejected, stating "come back when
you've fixed it up".

We don't even have that here. We have "I have this code NOW and when
it's merged I have no intention of fixing it up properly".

In my eyes I'd rather take the first one than the second, there at least
there's the INTENTION of fixing it up.

Oh and btw, I'm not pro- or against- reiserfs in any way. I haven't
tried reiserfs4 but I hear it's good so don't take this is a statement
of my like or dislike of it, I'm just stating something worth thinking
about.

// Stefan
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.1 (MingW32)

iD8DBQFCuTXZBrn2kJu9P78RAi0JAJwIp6uyAd3AL4mgSBMAH59h7CrklQCfRW+V
8ZlZqxHwnpqpHa8OURtUEuw=
=OD/E
-END PGP SIGNATURE-


[PATCH] [RESEND] ReiserFS _get_block_create_0 wrong behavior when I/O fails

2005-06-22 Thread fs
Seems my domain is filtered , so I resend the modified version.

Related FS:
ReiserFS

Related Files:
fs/reiserfs/inode.c

Bug description:
Make a ReiserFS partition in USB storage HDD, create a test file
with
enough size.
Write a program, do: open(O_RDONLY) - read - close. After each
operation, pause for a while, such as 3s. Between open and read, unlug
the
USB wire. open returns zero-filled buffer, no error returns.

Bug analysis:
do_mpage_readpage will call FS-specific get_block to get buffer
mapped
from disk. reiserfs_get_block doesn't return non-zero when I/O failure
occurs.
reiserfs_get_block -> _get_block_create_0 ->
search_by_position_by_key
search_by_position_by_key returns IO_ERROR, but the original code just
simply
returns 0

research:
if (search_for_position_by_key (inode->i_sb, &key, &path) !=
POSITION_FOUND) {
pathrelse (&path);
if (p)
kunmap(bh_result->b_page) ;
// We do not return -ENOENT if there is a hole but page is
uptodate, because it means
// That there is some MMAPED data associated with it that is yet
to be written to disk.
if ((args & GET_BLOCK_NO_HOLE) &&
!PageUptodate(bh_result->b_page) ) {
return -ENOENT ;
}
return 0 ; <- 0 retuns for IO_ERROR
}

Way around:
test result of search_for_position_by_key

Signed-off-by: Qu Fuping<[EMAIL PROTECTED]>

Patch:
diff -uNp /tmp/linux-2.6.12-rc6/fs/reiserfs/inode.c
/tmp/linux-2.6.12-rc6.new/fs/reiserfs/inode.c


--- linux-2.6.12-rc6.old/fs/reiserfs/inode.c	2005-06-06 11:22:29.0 -0400
+++ linux-2.6.12-rc6.new/fs/reiserfs/inode.c	2005-06-17 16:12:18.0 -0400
@@ -254,6 +254,7 @@ static int _get_block_create_0 (struct i
 char * p = NULL;
 int chars;
 int ret ;
+int	result ;
 int done = 0 ;
 unsigned long offset ;
 
@@ -262,7 +263,8 @@ static int _get_block_create_0 (struct i
 		  (loff_t)block * inode->i_sb->s_blocksize + 1, TYPE_ANY, 3);
 
 research:
-if (search_for_position_by_key (inode->i_sb, &key, &path) != POSITION_FOUND) {
+result = search_for_position_by_key (inode->i_sb, &key, &path) ;
+if (result != POSITION_FOUND) {
 	pathrelse (&path);
 if (p)
 kunmap(bh_result->b_page) ;
@@ -270,7 +272,8 @@ research:
 	// That there is some MMAPED data associated with it that is yet to be written to disk.
 	if ((args & GET_BLOCK_NO_HOLE) && !PageUptodate(bh_result->b_page) ) {
 	return -ENOENT ;
-	}
+	}else if(result == IO_ERROR)
+		return -EIO;
 return 0 ;
 }
 
@@ -382,7 +385,8 @@ research:
 
 	// update key to look for the next piece
 	set_cpu_key_k_offset (&key, cpu_key_k_offset (&key) + chars);
-	if (search_for_position_by_key (inode->i_sb, &key, &path) != POSITION_FOUND)
+	result = search_for_position_by_key (inode->i_sb, &key, &path);
+	if (result != POSITION_FOUND)
 	// we read something from tail, even if now we got IO_ERROR
 	break;
 	bh = get_last_bh (&path);
@@ -394,6 +398,10 @@ research:
 
 finished:
 pathrelse (&path);
+
+if(result == IO_ERROR)
+	return -EIO;
+
 /* this buffer has valid data, but isn't valid for io.  mapping it to
  * block #0 tells the rest of reiserfs it just has a tail in it
  */


become SYMANNTEC, PC GAMES, MACR0MEDIA, M1CR0S0FT FROM $20 EACH though street

2005-06-22 Thread Jenelle Edwina



Re: reiser4 plugins

2005-06-22 Thread David Masover
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Jeff Garzik wrote:
> David Masover wrote:
> 
>> There's been sloppy code in the kernel before.  I remember one bit in
>> particular which was commented "Fuck me gently with a chainsaw."  If I
>> remember correctly, this had all of the PCI ids and the names and
>> manufacturers of the corresponding devices -- in a data structure -- in
>> C source code.  It was something like one massive array definition, or
>> maybe it was a structure.  I don't remember exactly, but...
>>
>> The point is, this was in the kernel for quite awhile, and it was so
>> ugly that someone would rather be fucked with a chainsaw.  If something
>> that bad can make it in the kernel and stay for awhile because it
>> worked, and no one wanted to replace it -- nowdays, that database is
>> kept in userland as some nice text format -- then I vote for putting
>> Reiser4 in the kernel now, and ironing the sloppiness ("violation") out
>> later.  It runs now.
> 
> 
> Existence of ugly code is not an excuse to add more.

Maybe not, but I'm making a point.  I'm sure that, at the time, people
wanted something that ran.  They wanted lspci to work.  It was generally
assumed that it would be cleaned up later, and it was.  Too much later,
but it happened, eventually.

I've been reading a bit of history, and the reason Linux got so popular
in the first place was the tendency to include stuff that worked and
provided a feature people wanted, even if it was ugly.  The philosophy
would be:  choose a good implementation over an ugly one, but choose an
ugly one over nothing at all.

> We have to maintain said ugly code for decades.  Maintainability is a
> big deal when you deal with the timeframes we deal with.

Maintainability is like optimization.  The maintainability of a
non-working program is irrelevant.  You'd be right if we already had
plugins-in-the-VFS.  We don't.  The most maintainable solution for
plugins-in-the-FS that actually exists is Reiser4, exactly as it is now
- -- because it is the _only_ one that actually exists right now.

>> So, Reiser4 may eventually take over VFS and be the only Linux
>> filesystem, but if so, it will have to do it much more slowly.  Take the
>> good ideas -- things like plugins -- and make them at least look like
>> incremental updates to the current VFS, and make them available to all
>> filesystems.
> 
> 
> This is how all Linux development is done.
> 
> The code evolves over time.
> 
> You have just described the path ReiserFS needs to take, in order to get
> this stuff into the kernel, in fact.

This is the path it needs to take, long term, for the sanity of
everyone.  But I don't think it can get there without being included,
short term.  People will stomp all over any attempts to change the VFS
as "unproven" and "unneccesary".  Do you think it will be any easier to
get this stuff into the kernel that way?

Better, I think, to drop it in, as-is, and move stuff incrementally from
the FS to the VFS.  That way, there's at least something intermediate
for people to use, test, and hammer/beat down, and for maintainers to
get more comfortable with the idea and the logistics of this beast in
their kernel.

>> And here is the crucial point.  Reiser4 is usable and useful NOW, not
>> after it has undergone massive surgery, and Namesys is bankrupt, and
>> users have given up and moved on to XFS.  But the massive surgery should
>> happen eventually, partly to make all filesystems better (see below),
>> and partly to make the transition easier and more palatable for those
>> who don't work for Namesys.
> 
> 
> We care about technical merit, not some random company's financial
> solvancy.  Reiser4 has layering violations, and doesn't work with the
> current security layer.  Those are two biggies.

Ah, so you mean to say, you care about how well something fits the
current model.  That has little to do with technical merit.

-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iQIVAwUBQrkqoHgHNmZLgCUhAQIKixAAnTJTJJpuCLatFp8syccjNnE7WdHlO/zx
G1bWuSthCnb7uaVb8buDeAlpArzttoguKKum0NE0khz/FjKw4YUXH4AEsVYGlZaO
nBYpw0MVyypNP+hZhEuo1T826frEOb6Z40Y1WZCpYwAZCs9EQQm7TeYSMjhD17Ew
PehYwUFUmnv1S7CpYNQvuboKh/1wuUQb6R2thjuCGJVkif8Mn2U20Fhk1/HIgnIr
OHoCD8ZgwoqBDPKQ6V26dUX+ZHzQVJX1j/IgLnnitJ9E4quIHNs33lq4S99DWta6
uDS4hkHgFMRemh37sA0FUMeitFsrwNb2b2f0o/X8MpDJmwbdrdg9kxvwfHqqgaz+
Enj0rBXO8E+5a4STTk4L2LaSR2+knSEFdj53MYYq4ABL07hEbJp2cNFKh5AFXvg0
wg5WoHt4HhhOeuftIG9Twv5tHIC5qoM57ae9yZzj783G9ZnXy0xBefUmH+pWVQsp
H1IpKIR4a0l8gV1AkJa6BUyAyzDDObFzmqcZ61W15Y2relD9Ow2qzVqMxroB78uJ
O+on741BecGtohB5xdfth9rwDY6JPkDug3C6zHzxSAkGGEnWIn6O8CzcGrGqS0Ta
EmB4LGw/fZqGcEYOOErqMC6GuImv2JbjtBOx8nAxM2OhGXFoDiD9FQaDaxWw9zjj
ROODOhm0aTA=
=ivqd
-END PGP SIGNATURE-


Re: [PATCH] Fix Reiser4 Dependencies

2005-06-22 Thread Edward Shishkin

Hans Reiser wrote:


Edward Shishkin wrote:

 


Hello,
ZLIB_INFLATE/DEFLATE  will be selected by special reiser4 related
configuration
option "Enable reiser4 compression plugins of gzip family"
(REISER4_ZLIB), but
since this kind of support was discussed, it is in our working
repository for a while..

Anyway thanks,
Edward.
   



I am sorry, are you telling him that it works for you because you have
code that is different?  Did I misunderstand you?  How is what is in
your working repository relevant to anybody but you?  Please supply a
full update patch.

Hans

 



1. The patchset reiser4-replacement-broken-out.1 for 2.6.12-rc5-mm2 is 
buggy and leads to compilation errors

2. To fix this one should use the fixed patchset:
  
ftp://ftp.namesys.com/pub/reiser4-for-2.6/2.6.12-rc5-mm2/reiser4-replacement-broken-out.2.tar.gz


Thanks,
Edward.



 





Re: reiser4 plugins

2005-06-22 Thread Hans Reiser
Jeff Garzik wrote:

>> after it has undergone massive surgery, and Namesys is bankrupt, and
>> users have given up and moved on to XFS.  But the massive surgery should
>> happen eventually, partly to make all filesystems better (see below),
>> and partly to make the transition easier and more palatable for those
>> who don't work for Namesys.
>
> And here is the crucial point.  Reiser4 is usable and useful NOW, not
>
> We care about technical merit, not some random company's financial
> solvancy. 
>
>
>
Hmm,   that must be why Daniel Robbins, the creator of the distro with
the technically superior Gentoo approach, is still with us, yes?

If you cared about technical merit, you would discuss benchmarks, yes?


Re: -mm -> 2.6.13 merge status

2005-06-22 Thread Jeff Garzik

Hans Reiser wrote:

Jeff Garzik wrote:

"Hans' team says its good stuff" is not a criteria for merging.



Try benchmarking it.  Maybe benchmarks mean more than our
chattering. at least to the users.


Still not a criteria for merging.

We have to care about the code behind the benchmarks.

Jeff




Re: -mm -> 2.6.13 merge status

2005-06-22 Thread Hans Reiser
Jeff Garzik wrote:

>
>
> "Hans' team says its good stuff" is not a criteria for merging.
>
>

Try benchmarking it.  Maybe benchmarks mean more than our
chattering. at least to the users.


Re: reiser4 plugins

2005-06-22 Thread David Masover
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1


Christoph Hellwig wrote:
> On Tue, Jun 21, 2005 at 11:25:24PM -0500, David Masover wrote:
>
>>>You're basically implementing another VFS layer inside of reiser4, which
>>>is a big layering violation.
>>
>>There's been sloppy code in the kernel before.  I remember one bit in
>>particular which was commented "Fuck me gently with a chainsaw."  If I
>>remember correctly, this had all of the PCI ids and the names and
>>manufacturers of the corresponding devices -- in a data structure -- in
>>C source code.  It was something like one massive array definition, or
>>maybe it was a structure.  I don't remember exactly, but...
>
>
> Every device driver has a big array of corresponing device ids as an
> array in C code - oh my god we're doomed  .. not.

I could throw the same sarcasm back at you.  We must be doomed because
Reiser does some stuff that VFS already does!  Or am I misunderstanding
the complaint?

>>I agree there, too.  In fact, some people have suggested that all
>>"legacy" (read: non-reiser) filesystems should be implemented as Reiser4
>>plugins, effectively killing VFS.*
>>
>>So, Reiser4 may eventually take over VFS and be the only Linux
>>filesystem, but if so, it will have to do it much more slowly.  Take the
>>good ideas -- things like plugins -- and make them at least look like
>>incremental updates to the current VFS, and make them available to all
>>filesystems.
>
>
> And why exactly would we replace a stable, working abstraction with an
unpoven
> mess?

How does it get proven if you won't give it a chance as a *separate*
unproven mess, with a big fat EXPERIMENTAL flag, for users to play with?

I know, it exists as a separate patch.  But it works now, and I think
the best way to "prove" it would be to package it with the kernel.

-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iQIVAwUBQrkXY3gHNmZLgCUhAQLQUw//ZFN1KS+2wS/yDMa+/oWXVemZ690sMCLx
ZlKGg82bnv2XxqMXQwuPG9V02oN/D+1bkPmZzr8rD/tm5WshxpAHroIhnp3ZVpRi
lbMwULFQ8Z8fcsY3+YUag4XAUYGK+tmIeZc47FJGL0avsRa3RFJsFm+Kb6E/fi2f
H4wda43rt2CJYD5GqCtMsqyxzHzPclKHq25betIcPWBOqvE5NzQbc2tFTo0n3KMb
vmyZc4B34kiKhrrW/7pZCxDpiGjoxr87F19Tk8IIltM9kAuSVLXgtY/T+2DA2vJE
2N/Offr1rZh9zSq8PGkGoI+K41AaY3CkeYGjUF2eiZd4qwE624/1jUSEg685Puse
091EuIMzdndJYM0H+OsaFtvH9Rc67Hv6yR7aucNF5j8sIam37y7Fl+MToRgJK1+E
7YSpm/Ld61RaPqbJ4mqv4f0fHLTa2SpbFI8vmA1ARuiA+/YtUz9jBjLrPtMo4ppj
VvNTVMmftUgRr1NlQ+MKJO4Kxt4kKQnt1OtUe2y4bjCqO7ldUvPWLKGhsY0EsS0k
9yymlBbhsjTFrY9CsyrThshyHe9ikBVSLY7i16W+KhjLF/FKaq9k93nHd4B5Shni
Km9zyd0DlCUr3Y20SpBDITCWtM0CL0YQzeEW0JJTxVpHIDjh6s65XcBfrlWwEUiw
j/GJZA5h+bw=
=fBov
-END PGP SIGNATURE-