2004-04-06 18:01:59

by Chris Mason

[permalink] [raw]
Subject: [PATCH] reiserfs v3 fixes and features

Hello everyone,

You can download the set of experimental reiserfs v3 patches from:

ftp://ftp.suse.com/pub/people/mason/patches/reiserfs/2.6.5

Since some of these are in -mm and some are not, there are two series
files. series.linus gives you the patches needed for mainline 2.6.5,
and series.mm gives you the patches needed for 2.6.5-mm1

Most of these are from Jeff Mahoney and I, they include:

bug fixes
logging optimizations
data=ordered support
xattrs
acls
quotas
error messages with device names (based on Oleg's 2.4 patch)
block allocator improvements

Jeff Mahoney's acls and xattrs for reiserfs v3 have been in use in the
suse 2.4 kernels and now 2.6 kernels for a while. I've posted for
review to namesys many times, but Hans refuses to consider or read the
code. I renewed my efforts over the last month to talk with him about
the code, but he has ignored it entirely.

His past objections seem to be that he doesn't want new features in v3.
The implementation does not change the disk format in any way (xattrs
are stored as regular files in a hidden directory) and is stable. I
believe reiserfs needs these features in order to stay current in the
kernel, so I'm posting for inclusion in -mm. I'm sending Andrew the
following patches from series.mm:

reiserfs-end-trans-bkl
reiserfs-acl-mknod.diff
reiserfs-xattrs-04
reiserfs-acl-02
reiserfs-trusted-02
reiserfs-selinux-02
reiserfs-xattr-locking-02
reiserfs-quota
permission-reiserfs
reiserfs-warning

(which is everything except the new block allocator code)

The block allocator improvements is our attempt to reduce
fragmentation. The patch defaults to the regular 2.6.5 block allocator,
but has options documented at the top of the patch that allow grouping
of blocks by packing locality or object id. It also has an option to
inherit lightly used packing localities across multiple subdirs, which
keeps things closer together in the tree if you have a bunch of subdirs
without much in them.

If anyone is interested in experimenting with the block allocator stuff,
please let me know.

-chris



2004-04-06 20:23:39

by Marc-Christian Petersen

[permalink] [raw]
Subject: Re: [PATCH] reiserfs v3 fixes and features

On Tuesday 06 April 2004 20:03, Chris Mason wrote:

Hi Chris,

> If anyone is interested in experimenting with the block allocator stuff,
> please let me know.

I am :)

ciao, Marc

2004-04-06 21:10:29

by Chris Mason

[permalink] [raw]
Subject: Re: [PATCH] reiserfs v3 fixes and features

On Tue, 2004-04-06 at 16:14, Marc-Christian Petersen wrote:
> On Tuesday 06 April 2004 20:03, Chris Mason wrote:
>
> Hi Chris,
>
> > If anyone is interested in experimenting with the block allocator stuff,
> > please let me know.
>
> I am :)

There are a few different sides to the block allocator work.

1) don't ruin what the current allocator is good at (desktop esp). A
sequential tree read of freshly copied data is really fast right now.
It could be a little better with some metadata readahead, I'm still
trying to safely revive that code.

The patch tries to keep performance for a full tree read by with the -o
packing_groups option. The basic idea is to reuse bitmap groups for new
subdirectories until the bitmap group is full. This is done by checking
to see how full a given part of the btree is.

2) Improve the fragmentation under multiple writers. With 20 writers,
the default allocator breaks down, fragmenting badly (20% or so). The
patch with -o alloc=skip_busy:dirid_groups on makes things sane (3%).

So, to help test, you need some way of measuring fragmentation and a
whole bunch of benchmarks. I like fibmap:
(http://www.informatik.uni-frankfurt.de/~loizides/reiserfs/fibmap.html)

But Andrew has a fragmentation tool in the ext2 cvs I think.

-chris


2004-04-07 02:00:41

by Chris Wright

[permalink] [raw]
Subject: Re: [PATCH] reiserfs v3 fixes and features

Hi Chris,

* Chris Mason ([email protected]) wrote:
> Most of these are from Jeff Mahoney and I, they include:
>
> bug fixes
> logging optimizations
> data=ordered support
> xattrs
> acls
> quotas
> error messages with device names (based on Oleg's 2.4 patch)
> block allocator improvements

Would you consider adding the bd_claim on external journal bdev I posted
a while back? Hans didn't seem to flat out reject, and you agreed one
journal per bdev was sufficient.

Patch below, updated to 2.6.5-linus, and applies with fuzz atop your
series.linus. I also have the reiserfsprogs update if you're interested.

thanks,
-chris
--
Linux Security Modules http://lsm.immunix.org http://lsm.bkbits.net


===== fs/reiserfs/journal.c 1.78 vs edited =====
--- 1.78/fs/reiserfs/journal.c Wed Feb 18 19:42:22 2004
+++ edited/fs/reiserfs/journal.c Tue Apr 6 16:57:04 2004
@@ -1891,10 +1891,13 @@
result = 0;

if( journal -> j_dev_file != NULL ) {
+ if (journal -> j_dev_bd && (super -> s_bdev != journal -> j_dev_bd))
+ bd_release( journal -> j_dev_bd );
result = filp_close( journal -> j_dev_file, NULL );
journal -> j_dev_file = NULL;
journal -> j_dev_bd = NULL;
} else if( journal -> j_dev_bd != NULL ) {
+ bd_release( journal -> j_dev_bd );
result = blkdev_put( journal -> j_dev_bd );
journal -> j_dev_bd = NULL;
}
@@ -1933,8 +1936,17 @@
printk( "sh-458: journal_init_dev: cannot init journal device\n '%s': %i",
__bdevname(jdev, b), result );
return result;
- } else if (jdev != super->s_dev)
+ } else if (jdev != super->s_dev) {
+ result = bd_claim(journal->j_dev_bd, journal);
+ if (result) {
+ printk("%s: unable to claim %s\n", __func__,
+ bdevname(journal->j_dev_bd, b));
+ blkdev_put(journal->j_dev_bd);
+ journal->j_dev_bd = NULL;
+ return result;
+ }
set_blocksize(journal->j_dev_bd, super->s_blocksize);
+ }
return 0;
}

@@ -1947,6 +1959,17 @@
} else {
/* ok */
journal->j_dev_bd = I_BDEV(jdev_inode);
+ if (super->s_bdev != journal->j_dev_bd) {
+ result = bd_claim(journal->j_dev_bd, journal);
+ if (result) {
+ printk("%s: unable to claim %s\n", __func__,
+ bdevname(journal->j_dev_bd, b));
+ filp_close(journal->j_dev_file, NULL);
+ journal->j_dev_file = NULL;
+ journal->j_dev_bd = NULL;
+ return result;
+ }
+ }
set_blocksize(journal->j_dev_bd, super->s_blocksize);
}
} else {

2004-04-07 13:04:15

by Yury Umanets

[permalink] [raw]
Subject: Re: [PATCH] reiserfs v3 fixes and features

On Tue, 2004-04-06 at 21:03, Chris Mason wrote:
> Hello everyone,
>
> You can download the set of experimental reiserfs v3 patches from:
>
> ftp://ftp.suse.com/pub/people/mason/patches/reiserfs/2.6.5
>
> Since some of these are in -mm and some are not, there are two series
> files. series.linus gives you the patches needed for mainline 2.6.5,
> and series.mm gives you the patches needed for 2.6.5-mm1
>
> Most of these are from Jeff Mahoney and I, they include:
>
> bug fixes
> logging optimizations
> data=ordered support
> xattrs
> acls
> quotas
> error messages with device names (based on Oleg's 2.4 patch)
> block allocator improvements
>
> Jeff Mahoney's acls and xattrs for reiserfs v3 have been in use in the
> suse 2.4 kernels and now 2.6 kernels for a while. I've posted for
> review to namesys many times, but Hans refuses to consider or read the
> code. I renewed my efforts over the last month to talk with him about
> the code, but he has ignored it entirely.
>
> His past objections seem to be that he doesn't want new features in v3.
> The implementation does not change the disk format in any way (xattrs
> are stored as regular files in a hidden directory) and is stable. I
> believe reiserfs needs these features in order to stay current in the
> kernel, so I'm posting for inclusion in -mm. I'm sending Andrew the
> following patches from series.mm:
>
> reiserfs-end-trans-bkl
> reiserfs-acl-mknod.diff
> reiserfs-xattrs-04
> reiserfs-acl-02
> reiserfs-trusted-02
> reiserfs-selinux-02
> reiserfs-xattr-locking-02
> reiserfs-quota
> permission-reiserfs
> reiserfs-warning
>
> (which is everything except the new block allocator code)
>
> The block allocator improvements is our attempt to reduce
> fragmentation. The patch defaults to the regular 2.6.5 block allocator,
> but has options documented at the top of the patch that allow grouping
> of blocks by packing locality or object id. It also has an option to
> inherit lightly used packing localities across multiple subdirs, which
> keeps things closer together in the tree if you have a bunch of subdirs
> without much in them.
>
> If anyone is interested in experimenting with the block allocator stuff,
> please let me know.
>
> -chris
>
Hello Chris,

That would be nice to have also improved locking in this
features-improvements-fixes patch set. Ask Oleg, he had intention to
work on and probably has something done already.

Thanks.

--
umka

2004-04-07 13:17:39

by Chris Mason

[permalink] [raw]
Subject: Re: [PATCH] reiserfs v3 fixes and features

On Tue, 2004-04-06 at 22:00, Chris Wright wrote:

> Would you consider adding the bd_claim on external journal bdev I posted
> a while back? Hans didn't seem to flat out reject, and you agreed one
> journal per bdev was sufficient.
>
> Patch below, updated to 2.6.5-linus, and applies with fuzz atop your
> series.linus. I also have the reiserfsprogs update if you're interested.

I don't remember anyone having a problem with it, you'll need some
language at the top of the patch giving Hans the copyright on it.

-chris


2004-04-07 13:23:17

by Chris Mason

[permalink] [raw]
Subject: Re: [PATCH] reiserfs v3 fixes and features

On Wed, 2004-04-07 at 09:06, Yury Umanets wrote:

> That would be nice to have also improved locking in this
> features-improvements-fixes patch set. Ask Oleg, he had intention to
> work on and probably has something done already.
>

I'm assuming you mean getting rid of the BKL, which would be really
nice. I'd like to get the current patchset stabilized and in the
kernel, but even moving to a per fs spin lock instead of the bkl would
be a welcome change.

-chris

2004-04-07 16:23:39

by Hans Reiser

[permalink] [raw]
Subject: Re: [PATCH] reiserfs v3 fixes and features

Chris Mason wrote:

>
> you'll need some
>language at the top of the patch giving Hans the copyright on it.
>
>
>
>
This was very imprecise. http://www.namesys.com/legalese.html describes it
better. If you give me the courtesy of allowing me to license reiserfs
contributions to third parties (in addition to the usual GPL license),
it is appreciated, and it allows me to sometimes earn badly needed funds
for reiser4.

--
Hans

2004-04-08 07:19:43

by Yury Umanets

[permalink] [raw]
Subject: Re: [PATCH] reiserfs v3 fixes and features

On Wed, 2004-04-07 at 16:25, Chris Mason wrote:
> On Wed, 2004-04-07 at 09:06, Yury Umanets wrote:
>
> > That would be nice to have also improved locking in this
> > features-improvements-fixes patch set. Ask Oleg, he had intention to
> > work on and probably has something done already.
> >
>
> I'm assuming you mean getting rid of the BKL, which would be really
> nice.
yes
> I'd like to get the current patchset stabilized and in the
> kernel, but even moving to a per fs spin lock instead of the bkl would
> be a welcome change.
>
> -chris

Last time we have discussed this with Oleg, he said, that there are lots
of stuff relying on the fact, that bkl can be acquired many times by the
same process. And simple replacing bkl by per-superblock lock makes life
just horrible ;)

There something like bkl but per-superblock based is needed. Or lots of
code should be changed, which is not good idea.

But anyway, this should be done one day, and if I have free time
(probably vacation) and it will not be done until that time, I'd like to
work on it along with Oleg and you ;)

--
umka
--
umka

2004-04-09 22:03:20

by Oleg Drokin

[permalink] [raw]
Subject: Re: [PATCH] reiserfs v3 fixes and features

Yury Umanets <[email protected]> wrote:
>> > That would be nice to have also improved locking in this
>> > features-improvements-fixes patch set. Ask Oleg, he had intention to
>> > work on and probably has something done already.
>> I'm assuming you mean getting rid of the BKL, which would be really
>> nice.
YU> yes
>> I'd like to get the current patchset stabilized and in the
>> kernel, but even moving to a per fs spin lock instead of the bkl would
>> be a welcome change.
YU> Last time we have discussed this with Oleg, he said, that there are lots
YU> of stuff relying on the fact, that bkl can be acquired many times by the
YU> same process. And simple replacing bkl by per-superblock lock makes life
YU> just horrible ;)
YU> There something like bkl but per-superblock based is needed. Or lots of
YU> code should be changed, which is not good idea.
YU> But anyway, this should be done one day, and if I have free time
YU> (probably vacation) and it will not be done until that time, I'd like to
YU> work on it along with Oleg and you ;)

Well, I have put some work into having real per-fs spinlock in
September/October last year, but it turned to be enormous amount of work
shuffling locks around indeed.
But recently I came across bkl-alike lock implementation in lustre filesystem
and I think similar thing would make perfect sence for reiserfs v3 on
SMP today as some start.
You may find patch below that imports that sort of lock from lustre
(of course I know Hans would not accept it because it is GPL at least),
which is good thing to get at least some testing and justify how much
benefit this would get us before putting more work in that direction.
Patch is against 2.6.4 (though 2.4 would be trivial to do as well).
I only tested it on UP (with spinlock debug enabled so that spinlocks
work a bit) since SMP in 2.6 uml is not working yet it seems.
But I think it should just basically work (and I do not have real
SMP test system anyway so perhaps you Chris can do me a favour and run some
tests with this patch on some real SMP box?).
I hope this time some real progress will be made before I forget about it again.

Bye,
Oleg

===== fs/reiserfs/dir.c 1.20 vs edited =====
--- 1.20/fs/reiserfs/dir.c Mon May 26 00:07:50 2003
+++ edited/fs/reiserfs/dir.c Sat Apr 10 00:19:36 2004
@@ -54,7 +54,7 @@

reiserfs_write_lock(inode->i_sb);

- reiserfs_check_lock_depth("readdir") ;
+ reiserfs_check_lock_depth(inode->i_sb, "readdir") ;

/* form key for search the next directory entry using f_pos field of
file structure */
===== fs/reiserfs/journal.c 1.78 vs edited =====
--- 1.78/fs/reiserfs/journal.c Thu Feb 19 05:42:22 2004
+++ edited/fs/reiserfs/journal.c Sat Apr 10 00:21:12 2004
@@ -328,7 +328,7 @@
static struct reiserfs_journal_cnode *get_cnode(struct super_block *p_s_sb) {
struct reiserfs_journal_cnode *cn ;

- reiserfs_check_lock_depth("get_cnode") ;
+ reiserfs_check_lock_depth(p_s_sb, "get_cnode") ;

if (SB_JOURNAL(p_s_sb)->j_cnode_free <= 0) {
return NULL ;
@@ -352,7 +352,7 @@
*/
static void free_cnode(struct super_block *p_s_sb, struct reiserfs_journal_cnode *cn) {

- reiserfs_check_lock_depth("free_cnode") ;
+ reiserfs_check_lock_depth(p_s_sb, "free_cnode") ;

SB_JOURNAL(p_s_sb)->j_cnode_used-- ;
SB_JOURNAL(p_s_sb)->j_cnode_free++ ;
@@ -404,9 +404,9 @@
/* utility function to force a BUG if it is called without the big
** kernel lock held. caller is the string printed just before calling BUG()
*/
-void reiserfs_check_lock_depth(char *caller) {
+void reiserfs_check_lock_depth(struct super_block *sb, char *caller) {
#ifdef CONFIG_SMP
- if (current->lock_depth < 0) {
+ if (!rsb_has_lock(sb)) {
printk("%s called without kernel lock held\n", caller) ;
show_reiserfs_locks() ;
BUG() ;
@@ -619,7 +619,7 @@
struct buffer_head *tbh = NULL ;
struct reiserfs_journal_list *other_jl ;

- reiserfs_check_lock_depth("flush_commit_list") ;
+ reiserfs_check_lock_depth(s, "flush_commit_list") ;

if (atomic_read(&jl->j_older_commits_done)) {
return 0 ;
@@ -2203,7 +2203,7 @@
time_t now = get_seconds() ;
int old_trans_id ;

- reiserfs_check_lock_depth("journal_begin") ;
+ reiserfs_check_lock_depth(p_s_sb, "journal_begin") ;
RFALSE( p_s_sb->s_flags & MS_RDONLY,
"clm-2078: calling journal_begin on readonly FS") ;

@@ -2367,6 +2367,8 @@

set_bit(BH_JDirty, &bh->b_state) ;

+if (!buffer_mapped(bh))
+printk("Sobebody put !mapped buffer in journal\n");
/* now put this guy on the end */
if (!cn) {
cn = get_cnode(p_s_sb) ;
===== fs/reiserfs/super.c 1.72 vs edited =====
--- 1.72/fs/reiserfs/super.c Tue Dec 30 10:44:59 2003
+++ edited/fs/reiserfs/super.c Sat Apr 10 00:35:11 2004
@@ -1252,6 +1252,8 @@
}
s->s_fs_info = sbi;
memset (sbi, 0, sizeof (struct reiserfs_sb_info));
+ /* init fs lock */
+ rsb_lock_init(&sbi->fs_lock);
/* Set default values for options: non-aggressive tails */
REISERFS_SB(s)->s_mount_opt = ( 1 << REISERFS_SMALLTAIL );
/* default block allocator option: skip_busy */
@@ -1488,6 +1490,73 @@
reiserfs_proc_info_global_done ();
unregister_filesystem (& reiserfs_fs_type);
destroy_inodecache ();
+}
+
+/* The rsb_lock code below was copied from the lustre filesystem,
+ (C) 2001, 2002 Cluster File Systems, Inc. */
+/* invariants:
+ - only the owner of the lock changes l_owner/l_depth
+ - if a non-owner changes or checks the variables a spin lock is taken
+*/
+void rsb_lock_init(struct reiserfs_sb_lock *lock)
+{
+ sema_init(&lock->l_sem, 1);
+ spin_lock_init(&lock->l_spin);
+}
+
+void rsb_lock(struct reiserfs_sb_lock *lock)
+{
+ int owner = 0;
+
+ spin_lock(&lock->l_spin);
+ if (lock->l_owner == current)
+ owner = 1;
+ spin_unlock(&lock->l_spin);
+
+ /* This is safe to increment outside the spinlock because we
+ * can only have 1 CPU running on the current task
+ * (i.e. l_owner == current), regardless of the number of CPUs.
+ */
+ if (owner) {
+ ++lock->l_depth;
+ } else {
+ down(&lock->l_sem);
+ spin_lock(&lock->l_spin);
+ lock->l_owner = current;
+ lock->l_depth = 0;
+ spin_unlock(&lock->l_spin);
+ }
+}
+
+void rsb_unlock(struct reiserfs_sb_lock *lock)
+{
+ if(lock->l_owner != current)
+ BUG();
+ if(lock->l_depth < 0)
+ BUG();
+
+ spin_lock(&lock->l_spin);
+ if (--lock->l_depth < 0) {
+ lock->l_owner = NULL;
+ spin_unlock(&lock->l_spin);
+ up(&lock->l_sem);
+ return;
+ }
+ spin_unlock(&lock->l_spin);
+}
+
+int rsb_has_lock(struct reiserfs_sb_lock *lock)
+{
+ int depth = -1, owner = 0;
+
+ spin_lock(&lock->l_spin);
+ if (lock->l_owner == current) {
+ depth = lock->l_depth;
+ owner = 1;
+ }
+ spin_unlock(&lock->l_spin);
+
+ return owner;
}

struct file_system_type reiserfs_fs_type = {
===== include/linux/reiserfs_fs.h 1.56 vs edited =====
--- 1.56/include/linux/reiserfs_fs.h Wed Feb 4 07:31:19 2004
+++ edited/include/linux/reiserfs_fs.h Sat Apr 10 00:22:49 2004
@@ -1716,7 +1716,7 @@
void reiserfs_wait_on_write_block(struct super_block *s) ;
void reiserfs_block_writes(struct reiserfs_transaction_handle *th) ;
void reiserfs_allow_writes(struct super_block *s) ;
-void reiserfs_check_lock_depth(char *caller) ;
+void reiserfs_check_lock_depth(struct super_block *sb, char *caller) ;
void reiserfs_prepare_for_journal(struct super_block *, struct buffer_head *bh, int wait) ;
void reiserfs_restore_prepared_buffer(struct super_block *, struct buffer_head *bh) ;
int journal_init(struct super_block *, const char * j_dev_name, int old_format, unsigned int) ;
@@ -2178,11 +2178,11 @@
#define REISERFS_IOC_SETVERSION EXT2_IOC_SETVERSION

/* Locking primitives */
-/* Right now we are still falling back to (un)lock_kernel, but eventually that
- would evolve into real per-fs locks */
-#define reiserfs_write_lock( sb ) lock_kernel()
-#define reiserfs_write_unlock( sb ) unlock_kernel()
-
+/* Right now we are using one bkl-alike lock per filesystem */
+
+#define reiserfs_write_lock( sb ) rsb_lock(&REISERFS_SB(sb)->fs_lock)
+#define reiserfs_write_unlock( sb ) rsb_unlock(&REISERFS_SB(sb)->fs_lock)
+
#endif /* _LINUX_REISER_FS_H */


===== include/linux/reiserfs_fs_sb.h 1.25 vs edited =====
--- 1.25/include/linux/reiserfs_fs_sb.h Tue Sep 23 07:16:25 2003
+++ edited/include/linux/reiserfs_fs_sb.h Sat Apr 10 00:22:09 2004
@@ -345,12 +345,32 @@
{} reiserfs_proc_info_data_t;
#endif

+/* Per-sb bkl-alike lock */
+struct reiserfs_sb_lock {
+ int l_depth;
+ struct task_struct *l_owner;
+ struct semaphore l_sem;
+ spinlock_t l_spin;
+};
+
+void rsb_lock_init(struct reiserfs_sb_lock *lock);
+void rsb_lock(struct reiserfs_sb_lock *lock);
+void rsb_unlock(struct reiserfs_sb_lock *lock);
+int rsb_has_lock(struct reiserfs_sb_lock *lock);
+
+/* Locking primitives */
+/* Right now we are using one bkl-alike lock per filesystem */
+
+
+
/* reiserfs union of in-core super block data */
struct reiserfs_sb_info
{
struct buffer_head * s_sbh; /* Buffer containing the super block */
/* both the comment and the choice of
name are unclear for s_rs -Hans */
+ struct reiserfs_sb_lock fs_lock; /* This is bkl-alike lock for superblock.*/
+
struct reiserfs_super_block * s_rs; /* Pointer to the super block in the buffer */
struct reiserfs_bitmap_info * s_ap_bitmap;
struct reiserfs_journal *s_journal ; /* pointer to journal information */

2004-04-15 00:29:17

by Chris Mason

[permalink] [raw]
Subject: Re: [PATCH] reiserfs v3 fixes and features

Hello all,

I've uploaded some new code to:

ftp.suse.com/pub/people/mason/patches/reiserfs/2.6.5-mm5

series.linus tells you which patches are needed for 2.6.5. If you're
working off a recent pull of bitkeeper, or the mm trees, use series.mm,
since data=ordered patches were recently applied.

(note, I haven't tested 2.6.5 with this patch set yet, -mm is my target
right now)

reiserfs-group-alloc-8 and reiserfs-search_reada-5 are still
experimental, and are only for the brave.

Most of the changes were to reiserfs-group-alloc-8, which tries to
improve the reiserfs allocator to reduce fragmentation. The mount
options to enable the new code haven't changed, but I switched to using
the existing in-core bitmap book keeping to decide if a given packing
locality is full. This is much more accurate, I'm not sure why I didn't
think of it before.

Also mount -o alloc=dirid_groups:skip_busy now tries to get metadata
into the same bitmap as the data blocks. This really cuts down on
fragmentation among the leaf nodes. More details are in the docs at the
top of the patch.

My goal is to make -o alloc=dirid_groups:skip_busy,packing_groups the
new default, it is working nicely here. Testers and benchmarkers would
be appreciated.

Other new patches:
reiserfs-search_reada-5 - it should make deletes and directory reads
faster by doing some metadata readahead.

reiserfs-delayed-work - a huge performance boost to synchronous
workloads that trigger transaction commits.

reiserfs-no-sleep-on - removes the last sleep_on user in reiserfs.

I'll submit these last two to Andrew after the whole thing passes some
more tests.

-chris


2004-04-15 03:10:44

by Hubert Chan

[permalink] [raw]
Subject: Re: [PATCH] reiserfs v3 fixes and features

On 2.6.5, it still fails:

...
CC fs/reiserfs/bitmap.o
In file included from fs/reiserfs/bitmap.c:8:
include/linux/reiserfs_fs.h: In function `reiserfs_transaction_running':
include/linux/reiserfs_fs.h:1752: error: structure has no member named `journal_info'
make[3]: *** [fs/reiserfs/bitmap.o] Error 1
make[2]: *** [fs/reiserfs] Error 2
make[1]: *** [fs] Error 2

(all patches applied, except for reiserfs-group-alloc-8 and
reiserfs-search_reada-5)

--
Hubert Chan <[email protected]> - http://www.uhoreg.ca/
PGP/GnuPG key: 1024D/124B61FA
Fingerprint: 96C5 012F 5F74 A5F7 1FF7 5291 AF29 C719 124B 61FA
Key available at wwwkeys.pgp.net. Encrypted e-mail preferred.

2004-04-15 11:36:45

by Chris Mason

[permalink] [raw]
Subject: Re: [PATCH] reiserfs v3 fixes and features

On Wed, 2004-04-14 at 22:53, Hubert Chan wrote:
> On 2.6.5, it still fails:
>
> ...
> CC fs/reiserfs/bitmap.o
> In file included from fs/reiserfs/bitmap.c:8:
> include/linux/reiserfs_fs.h: In function `reiserfs_transaction_running':
> include/linux/reiserfs_fs.h:1752: error: structure has no member named `journal_info'

This is from the reiser4 patch, it will get fixed when namesys updates
to the latest kernel trees.

-chris


2004-04-15 12:14:21

by Nikita Danilov

[permalink] [raw]
Subject: Re: [PATCH] reiserfs v3 fixes and features

Hubert Chan writes:
> On 2.6.5, it still fails:
>
> ...
> CC fs/reiserfs/bitmap.o
> In file included from fs/reiserfs/bitmap.c:8:
> include/linux/reiserfs_fs.h: In function `reiserfs_transaction_running':
> include/linux/reiserfs_fs.h:1752: error: structure has no member named `journal_info'
> make[3]: *** [fs/reiserfs/bitmap.o] Error 1

Err.. clash with the reiser4 patch, surely.

> make[2]: *** [fs/reiserfs] Error 2
> make[1]: *** [fs] Error 2
>
> (all patches applied, except for reiserfs-group-alloc-8 and
> reiserfs-search_reada-5)

Nikita.

>
> --
> Hubert Chan <[email protected]> - http://www.uhoreg.ca/
> PGP/GnuPG key: 1024D/124B61FA
> Fingerprint: 96C5 012F 5F74 A5F7 1FF7 5291 AF29 C719 124B 61FA
> Key available at wwwkeys.pgp.net. Encrypted e-mail preferred.
>

2004-04-16 18:54:59

by Chris Mason

[permalink] [raw]
Subject: Re: [PATCH] reiserfs v3 fixes and features


Hello all,

I've uploaded some new code to:

ftp.suse.com/pub/people/mason/patches/reiserfs/2.6.5-mm6

Only reiserfs-group-alloc-9 has changed.

preallocation now enforces minimum allocations too, which cuts down on
fragmentation when applications send small writes.

The mount options are slightly different. mount -o packing_groups
changed to mount -o alloc=packing_groups. This makes the new options
more consistent and easier to control via remount and such.

More importantly, the default has changed too. Once you apply
reiserfs-group-alloc-9, the default is:

mount -o alloc=skip_busy:dirid_groups:packing_groups

If you want the old default:

mount -o alloc=skip_busy

Both reiserfs-group-alloc-9 and reiserfs-search-reada-5 should be stable
now, at least I haven't been able to trigger problems with them in -suse
or -mm.

-chris


2004-04-16 19:48:27

by Marc-Christian Petersen

[permalink] [raw]
Subject: Re: [PATCH] reiserfs v3 fixes and features

On Friday 16 April 2004 20:54, Chris Mason wrote:

Hi Chris,

> ftp.suse.com/pub/people/mason/patches/reiserfs/2.6.5-mm6
> Only reiserfs-group-alloc-9 has changed.

hmm, does not apply to 2.6.5-mm6 (applied all from series.mm) before for sure.

ciao, Marc

2004-04-16 20:01:34

by Chris Mason

[permalink] [raw]
Subject: Re: [PATCH] reiserfs v3 fixes and features

On Fri, 2004-04-16 at 15:47, Marc-Christian Petersen wrote:
> On Friday 16 April 2004 20:54, Chris Mason wrote:
>
> Hi Chris,
>
> > ftp.suse.com/pub/people/mason/patches/reiserfs/2.6.5-mm6
> > Only reiserfs-group-alloc-9 has changed.
>
> hmm, does not apply to 2.6.5-mm6 (applied all from series.mm) before for sure.

Strange, works here. Could you please send me the patch output?

-chris


2004-04-16 20:11:46

by Marc-Christian Petersen

[permalink] [raw]
Subject: Re: [PATCH] reiserfs v3 fixes and features

On Friday 16 April 2004 21:47, Marc-Christian Petersen wrote:

Hi again,

> > ftp.suse.com/pub/people/mason/patches/reiserfs/2.6.5-mm6
> > Only reiserfs-group-alloc-9 has changed.

> hmm, does not apply to 2.6.5-mm6 (applied all from series.mm) before for
> sure.

Somewhen in the near future I'll forget my name ;(

This time with patch output:

root@codeman:[/usr/src/linux-2.6.5-mm6] # patch -p1 --dry-run <
reiserfs-group-alloc-9.patch
patching file fs/reiserfs/bitmap.c
Hunk #6 succeeded at 358 with fuzz 1.
Hunk #17 FAILED at 943.
1 out of 17 hunks FAILED -- saving rejects to file fs/reiserfs/bitmap.c.rej
patching file fs/reiserfs/file.c
Hunk #1 FAILED at 176.
Hunk #2 succeeded at 467 (offset -1 lines).
Hunk #3 succeeded at 1253 (offset -1 lines).
1 out of 3 hunks FAILED -- saving rejects to file fs/reiserfs/file.c.rej
patching file fs/reiserfs/inode.c
Hunk #1 succeeded at 1660 (offset 1 line).
Hunk #2 succeeded at 1729 (offset 1 line).
patching file fs/reiserfs/super.c
Hunk #2 succeeded at 650 (offset -4 lines).
Hunk #3 succeeded at 1345 (offset -21 lines).
patching file include/linux/reiserfs_fs.h
Hunk #2 succeeded at 2149 (offset 9 lines).

Freshly patched 2.6.5 vanilla with 2.6.5-mm6.

ciao, Marc

2004-04-16 20:25:37

by Chris Mason

[permalink] [raw]
Subject: Re: [PATCH] reiserfs v3 fixes and features

On Fri, 2004-04-16 at 16:06, Marc-Christian Petersen wrote:
> On Friday 16 April 2004 21:47, Marc-Christian Petersen wrote:
>
> Hi again,
>
> > > ftp.suse.com/pub/people/mason/patches/reiserfs/2.6.5-mm6
> > > Only reiserfs-group-alloc-9 has changed.
>
> > hmm, does not apply to 2.6.5-mm6 (applied all from series.mm) before for
> > sure.
>
> Somewhen in the near future I'll forget my name ;(

I just downloaded things to double check and it still works for me.
But, that ftp directory had an added bonus file in it 2.6.5-mm6.bz2,
which was incomplete. I've deleted it, make sure you aren't patching
based on that.

-chris


2004-04-16 20:39:20

by Chris Mason

[permalink] [raw]
Subject: Re: [PATCH] reiserfs v3 fixes and features

On Fri, 2004-04-16 at 16:26, Chris Mason wrote:
> On Fri, 2004-04-16 at 16:06, Marc-Christian Petersen wrote:
> > On Friday 16 April 2004 21:47, Marc-Christian Petersen wrote:
> >
> > Hi again,
> >
> > > > ftp.suse.com/pub/people/mason/patches/reiserfs/2.6.5-mm6
> > > > Only reiserfs-group-alloc-9 has changed.
> >
> > > hmm, does not apply to 2.6.5-mm6 (applied all from series.mm) before for
> > > sure.
> >
> > Somewhen in the near future I'll forget my name ;(
>
> I just downloaded things to double check and it still works for me.
> But, that ftp directory had an added bonus file in it 2.6.5-mm6.bz2,
> which was incomplete. I've deleted it, make sure you aren't patching
> based on that.

Hmpf, I was supposed to remember to take that patch -l out of my
.quiltrc. The patch had whitespace rejects and I didn't notice.

I've replaced it with reiserfs-group-alloc-10, if you don't want to wait
for the suse ftp site mirror, QUILT_PATCH_OPT="-l" quilt push

Sorry for the confusion.

-chris


2004-04-16 20:44:21

by Marc-Christian Petersen

[permalink] [raw]
Subject: Re: [PATCH] reiserfs v3 fixes and features

On Friday 16 April 2004 22:26, Chris Mason wrote:

Hey Chris,

> I just downloaded things to double check and it still works for me.
> But, that ftp directory had an added bonus file in it 2.6.5-mm6.bz2,
> which was incomplete. I've deleted it, make sure you aren't patching
> based on that.

yep, I saw that and deleted it. Maybe I have an incomplete^Wbroken or whatever
2.6.5-mm6 from kernel.org? I'll download it again.

Okay, please see attached log. Either something on your end is overheated or
my p4 is overheated ;)

ciao, Marc


Attachments:
(No filename) (539.00 B)
patching.log (8.41 kB)
Download all attachments

2004-04-16 20:48:49

by Marc-Christian Petersen

[permalink] [raw]
Subject: Re: [PATCH] reiserfs v3 fixes and features

On Friday 16 April 2004 22:39, Chris Mason wrote:

Hey Chris,

> Hmpf, I was supposed to remember to take that patch -l out of my
> .quiltrc. The patch had whitespace rejects and I didn't notice.
> I've replaced it with reiserfs-group-alloc-10, if you don't want to wait
> for the suse ftp site mirror, QUILT_PATCH_OPT="-l" quilt push

ah, ok :) thanks.

> Sorry for the confusion.

np. So your and my PCs are not overheated ;)

ciao, Marc