Re: Installing Fedora Core with root on Reiserfs

2005-07-18 Thread Russell Coker
On Monday 18 July 2005 06:01, Edward Shishkin [EMAIL PROTECTED] wrote:
 FC4-test3 (and perhaps FC4) installs its own version of grub which seems
 to interact incorrectly with reiserfs. The problem is that reiserfs.ko
 module located on reiserfs partition can not be loaded.

Firstly there is no situation in which reiserfs.ko will be loaded from a 
reiserfs partition.

If the root file system is reiserfs then reiserfs.ko will (or at least should) 
be included in the initrd.  The GRUB support for ReiserFS is based on the 
file /boot/grub/reiserfs_stage1_5 which is only needed for /boot on ReiserFS.

Some people believe that /boot should be a separate file system to the root 
file system regardless of all other issues.  All systems which use LVM for 
the root file system on Fedora (the default partitioning involves LVM) will 
have a separate /boot file system because GRUB apparently doesn't support LVM 
(yet).

So having a /boot with Ext2/3 is an easy solution to any ReiserFS booting 
issues, and a solution that will be forced on the users if they use LVM.  
When using a small /boot file system ReiserFS is not a good choice.  A quick 
test showed that Ext3 gave 18M more usable disk space from a 100M file system 
than ReiserFS, this will essentially force all LVM users to use Ext3 
for /boot.

 1. (Requires some partition formatted by ext2).
At the end of installation process (after invitation to reboot) boot
 from some rescue CD, mount reiserfs root partition (say to /mnt) and move
 all the compressed images (vmlinuz-xxx and initrd-xxx located at /mnt/boot)
 to your ext2 partition. Then edit the file /mnt/boot/grub/grub.conf
 pointing a new location for the images. Reboot and finish the
 installation
process.

This can be done automatically through the Anaconda GUI or through kickstart.  
Just specify that /boot is to be a separate partition of type Ext3.

-- 
http://www.coker.com.au/selinux/   My NSA Security Enhanced Linux packages
http://www.coker.com.au/bonnie++/  Bonnie++ hard drive benchmark
http://www.coker.com.au/postal/Postal SMTP/POP benchmark
http://www.coker.com.au/~russell/  My home page


Re: Installing Fedora Core with root on Reiserfs

2005-07-18 Thread Edward Shishkin

Russell Coker wrote:


On Monday 18 July 2005 06:01, Edward Shishkin [EMAIL PROTECTED] wrote:
 


FC4-test3 (and perhaps FC4) installs its own version of grub which seems
to interact incorrectly with reiserfs. The problem is that reiserfs.ko
module located on reiserfs partition can not be loaded.
   



Firstly there is no situation in which reiserfs.ko will be loaded from a 
reiserfs partition.
 



Hmmm... actually this is a default situation when installing with root 
on reiserfs..


If the root file system is reiserfs then reiserfs.ko will (or at least should) 
be included in the initrd. 



Right, but initrd is in /boot which is not something separate: it is on the
same reiserfs root partition..

The GRUB support for ReiserFS is based on the 
file /boot/grub/reiserfs_stage1_5 which is only needed for /boot on ReiserFS.


Some people believe that /boot should be a separate file system to the root 
file system regardless of all other issues.  All systems which use LVM for 
the root file system on Fedora (the default partitioning involves LVM) will 
have a separate /boot file system because GRUB apparently doesn't support LVM 
(yet).


So having a /boot with Ext2/3 is an easy solution to any ReiserFS booting 
issues, and a solution that will be forced on the users if they use LVM.  
When using a small /boot file system ReiserFS is not a good choice.  A quick 
test showed that Ext3 gave 18M more usable disk space from a 100M file system 
than ReiserFS, this will essentially force all LVM users to use Ext3 
for /boot.


 


1. (Requires some partition formatted by ext2).
  At the end of installation process (after invitation to reboot) boot
from some rescue CD, mount reiserfs root partition (say to /mnt) and move
all the compressed images (vmlinuz-xxx and initrd-xxx located at /mnt/boot)
to your ext2 partition. Then edit the file /mnt/boot/grub/grub.conf
pointing a new location for the images. Reboot and finish the
installation
  process.
   



This can be done automatically through the Anaconda GUI or through kickstart.  
Just specify that /boot is to be a separate partition of type Ext3.


 





Re: Testimonials page

2005-07-18 Thread Christian Iversen
On Monday 18 July 2005 00:18, Hubert Chan wrote:
 On Sun, 17 Jul 2005 22:22:32 +0200, Christian Iversen 
[EMAIL PROTECTED] said:
  In particular, in French, period is for the thousands separator, and
  comma is the decimal point.
 
  AFAIK it's the same in Sweden, Norway, Denmark, Germany, The
  Netherlands, and in fact most of Europe.

 I'm wondering if it's based mostly on region or language.  For example,
 I know that for the English-speaking portion of North America, we use
 comma for the thousands separator.  But for the French-speaking
 population (e.g. Quebec), or when writing in French, comma is the
 decimal separator.

 Do Swedes, Norwegians, etc. use period as the thousands separator even
 when writing in English?

No, that wouldn't make sense :-)

I think it's true that it's language-based. 

To make matters worse though, I've seen some exams with a mixed danish/english 
contents use both within a few lines of text. And on top of that, it's 
sometimes reversed because , is used as a logical seperator in many 
programming langauges.

But it's probably safe to say that outside of physics (and even there it would 
be odd), 123.456 is 1 dot 23456 * 10^5

-- 
Regards,
Christian Iversen


Re: Testimonials page

2005-07-18 Thread PFC


If I did say I backed up 0x6ddd0 files in 8 minutes would he be happy ?
Most off topic thread of the year award.

But it's probably safe to say that outside of physics (and even there it  
would

be odd), 123.456 is 1 dot 23456 * 10^5






Re: Installing Fedora Core with root on Reiserfs

2005-07-18 Thread Jeff Mahoney
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Edward Shishkin wrote:
 Russell Coker wrote:
 
 On Monday 18 July 2005 06:01, Edward Shishkin [EMAIL PROTECTED] wrote:
  

 FC4-test3 (and perhaps FC4) installs its own version of grub which seems
 to interact incorrectly with reiserfs. The problem is that reiserfs.ko
 module located on reiserfs partition can not be loaded.
   

 Firstly there is no situation in which reiserfs.ko will be loaded from
 a reiserfs partition.
  

 
 Hmmm... actually this is a default situation when installing with root
 on reiserfs..
 
 If the root file system is reiserfs then reiserfs.ko will (or at least
 should) be included in the initrd.
 
 Right, but initrd is in /boot which is not something separate: it is on the
 same reiserfs root partition..

The situation you're describing is one that is well tested by now.

If the root filesystem is reiserfs, and /boot is a part of it,
reiserfs.ko MUST be in the initrd. Otherwise, there is a chicken/egg
problem and the system will not boot.

The initrd being on a reiserfs filesystem is fine since grub doesn't use
any kernel services when it's executing. Grub loads the kernel and the
initrd itself before transferring control to the kernel and uses no
kernel services to do so. Grub has its own filesystem reading code which
gets pointed to during installation.

So, if there is truly a problem with this, I'd look at Fedora's mkinitrd.

- -Jeff


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

iD8DBQFC29H1LPWxlyuTD7IRAv6sAJ4wwM6ArTI+P8NeC2Xr2fMdiSW/6QCbB9wh
/Co71RNi4Uq3a6tatRQDjiw=
=EHOF
-END PGP SIGNATURE-


Re: reiserfs+acl makes processes hang?

2005-07-18 Thread Jeff Mahoney
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Tarmo Tänav wrote:
 Hi,
 
 (I've already sent this to lkml and the bug has been confirmed
 a couple of times, but I though I should also send it to
 reiserfs-list so here goes:)
 
 
 I think I've found a bug in reiserfs acls. If triggered
 it means that any program trying to access the partition,
 where the bug occured, will just hang in D state, with
 no way to kill the program.
 
 Here's how to reproduce:
 1. mount a reiserfs volume (loopmount will do) with -o acl.
 2. create a directory dir
 3. set some default acl: setfacl -d -m u:username:rwX dir
 4. cd dir
 5. dd if=/dev/zero of=somefile1 bs=4k count=10
 (the idea is to run out of space)
 6. now df should show 0 free space, if not then repeat 5.
 7. echo 1  somefile2 # this should hang infinitely
 
 Now no program will be able to access the partition.
 
 I haven't tried to reproduce it, but the same problem also happened
 when a user hit his hard quota limit on my server. Then no program
 could access his homedir.
 
 

Ok, this is due to the iput in the reiserfs_new_inode failure path
calling reiserfs_delete_xattrs with the lock already held.

I'll post a patch soon.

- -Jeff

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

iD8DBQFC297mLPWxlyuTD7IRAjO6AJ4wgkdvMnHVablWE7vBL1f+nwJhSACgmG7F
icjFXLkoAIPOVUa02yR7Ys4=
=1Nkh
-END PGP SIGNATURE-


[PATCH 4/5] reiserfs: introduce reiserfs_error() TESTING ONLY

2005-07-18 Thread Jeff Mahoney

 Although reiserfs can currently handle severe errors such as journal failure,
 it cannot handle less severe errors like metadata i/o failure. The following
 patch adds a reiserfs_error() function akin to the one in ext3.

 Subsequent patches will use this new error handler to handle errors more
 gracefully in general.

 FOR TESTING ONLY

Signed-off-by: Jeff Mahoney [EMAIL PROTECTED]

diff -ruNpX dontdiff linux-2.6.13-rc3/fs/reiserfs/prints.c 
linux-2.6.13-rc3.errors/fs/reiserfs/prints.c
--- linux-2.6.13-rc3/fs/reiserfs/prints.c   2005-07-13 13:57:32.0 
-0400
+++ linux-2.6.13-rc3.errors/fs/reiserfs/prints.c2005-07-14 
16:36:47.0 -0400
@@ -366,6 +366,39 @@ void reiserfs_panic(struct super_block *
  reiserfs_bdevname(sb), error_buf);
 }
 
+void reiserfs_handle_error(struct super_block *sb, int errno)
+{
+
+   if (sb-s_flags  MS_RDONLY)
+   return;
+
+   if (reiserfs_error_ro(sb)) {
+   reiserfs_info(sb, Remounting filesystem read-only\n);
+   sb-s_flags |= MS_RDONLY;
+   } else {
+   reiserfs_journal_abort(sb, errno);
+   }
+
+   if (reiserfs_error_panic(sb)) {
+   reiserfs_panic (sb, panic forced after error);
+   }
+}
+
+void reiserfs_error_internal(struct super_block *sb, const char *id,
+  const char *function, const char *fmt, ...)
+{
+   do_reiserfs_warning(fmt);
+
+   if (id  id[0])
+   printk(KERN_CRIT REISERFS error (device %s): %s %s: %s\n,
+  sb-s_id, id, function, error_buf);
+   else
+   printk(KERN_CRIT REISERFS error (device %s): %s: %s\n,
+  sb-s_id, function, error_buf);
+   
+   reiserfs_handle_error(sb, -EIO);
+}
+
 void reiserfs_abort(struct super_block *sb, int errno, const char *fmt, ...)
 {
do_reiserfs_warning(fmt);
diff -ruNpX dontdiff linux-2.6.13-rc3/include/linux/reiserfs_fs.h 
linux-2.6.13-rc3.errors/include/linux/reiserfs_fs.h
--- linux-2.6.13-rc3/include/linux/reiserfs_fs.h2005-07-13 
13:57:33.0 -0400
+++ linux-2.6.13-rc3.errors/include/linux/reiserfs_fs.h 2005-07-14 
15:53:13.0 -0400
@@ -1995,6 +1995,9 @@ void unfix_nodes(struct tree_balance *);
 /* prints.c */
 void reiserfs_panic(struct super_block *s, const char *fmt, ...)
 __attribute__ ((noreturn));
+void reiserfs_error_internal(struct super_block *s, const char *id, const char 
*function, const char *fmt, ...);
+#define reiserfs_error(s, id, fmt, args...) \
+reiserfs_error_internal(s, id, __FUNCTION__, fmt, ##args)
 void reiserfs_info(struct super_block *s, const char *fmt, ...);
 void reiserfs_debug(struct super_block *s, int level, const char *fmt, ...);
 void print_indirect_item(struct buffer_head *bh, int item_num);
-- 
Jeff Mahoney
SuSE Labs


[PATCH 5/5] reiserfs: convert warnings into errors TESTING ONLY

2005-07-18 Thread Jeff Mahoney

 A number of warnings in reiserfs are technically errors, but no facility
 existed to handle them. With the introduction of reiserfs_error(), the
 facility exists.

 NOTE: This is an incomplete patch for testing and comment only.
 Locking conditions have not been fully tested and there are cases where
 an error should be handled but is still left as a warning.

 This patch is a work in progress, and I would appreciate comments on what
 should be considered an error and what is safe being a warning. In many cases
 additional logic may be required so that things like ENOSPC are handled
 gracefully, and EIO is handled as a filesystem-wide error.

 FOR TESTING ONLY

Signed-off-by: Jeff Mahoney [EMAIL PROTECTED]

diff -ruNpX dontdiff linux-2.6.13-rc3/fs/reiserfs/bitmap.c 
linux-2.6.13-rc3.errors/fs/reiserfs/bitmap.c
--- linux-2.6.13-rc3/fs/reiserfs/bitmap.c   2005-07-14 19:32:13.0 
-0400
+++ linux-2.6.13-rc3.errors/fs/reiserfs/bitmap.c2005-07-14 
19:36:12.0 -0400
@@ -63,27 +63,27 @@ int is_reusable(struct super_block *s, b
int i, j;
 
if (block == 0 || block = SB_BLOCK_COUNT(s)) {
-   reiserfs_warning(s, vs-4010,
-block number is out of range %lu (%u),
-block, SB_BLOCK_COUNT(s));
+   reiserfs_error(s, vs-4010,
+  block number is out of range %lu (%u),
+  block, SB_BLOCK_COUNT(s));
return 0;
}
 
/* it can't be one of the bitmap blocks */
for (i = 0; i  SB_BMAP_NR(s); i++)
if (block == SB_AP_BITMAP(s)[i].bh-b_blocknr) {
-   reiserfs_warning(s, vs-4020, bitmap block 
-%lu(%u) can't be freed or reused,
-block, SB_BMAP_NR(s));
+   reiserfs_error(s, vs-4020, bitmap block 
+  %lu(%u) can't be freed or reused,
+  block, SB_BMAP_NR(s));
return 0;
}
 
get_bit_address(s, block, i, j);
 
if (i = SB_BMAP_NR(s)) {
-   reiserfs_warning(s, vs-4030, there is no so many 
-bitmap blocks: block=%lu, bitmap_nr=%d,
-block, i);
+   reiserfs_error(s, vs-4030, there is no so many 
+  bitmap blocks: block=%lu, bitmap_nr=%d,
+  block, i);
return 0;
}
 
@@ -91,10 +91,10 @@ int is_reusable(struct super_block *s, b
 reiserfs_test_le_bit(j, SB_AP_BITMAP(s)[i].bh-b_data)) ||
(bit_value == 1 
 reiserfs_test_le_bit(j, SB_AP_BITMAP(s)[i].bh-b_data) == 0)) {
-   reiserfs_warning(s, vs-4040, corresponding bit of 
-block %lu does not match required value 
-(i==%d, j==%d) test_bit==%d,
-block, i, j, reiserfs_test_le_bit(j,
+   reiserfs_error(s, vs-4040, corresponding bit of 
+  block %lu does not match required value 
+  (i==%d, j==%d) test_bit==%d,
+  block, i, j, reiserfs_test_le_bit(j,
   SB_AP_BITMAP
   (s)[i].bh-
   b_data));
@@ -103,8 +103,8 @@ int is_reusable(struct super_block *s, b
}
 
if (bit_value == 0  block == SB_ROOT_BLOCK(s)) {
-   reiserfs_warning(s, vs-4050, this is root block (%u), 
-it must be busy, SB_ROOT_BLOCK(s));
+   reiserfs_error(s, vs-4050, this is root block (%u), 
+  it must be busy, SB_ROOT_BLOCK(s));
return 0;
}
 
@@ -155,8 +155,8 @@ static int scan_bitmap_block(struct reis
 /* - I mean `a window of zero bits' as in description of this function - Zam. 
*/
 
if (!bi) {
-   reiserfs_warning(s, jdm-4055, NULL bitmap info pointer 
-for bitmap %d, bmap_n);
+   reiserfs_error(s, jdm-4055, NULL bitmap info pointer 
+  for bitmap %d, bmap_n);
return 0;
}
if (buffer_locked(bi-bh)) {
@@ -388,8 +388,8 @@ static void _reiserfs_free_block(struct 
get_bit_address(s, block, nr, offset);
 
if (nr = sb_bmap_nr(rs)) {
-   reiserfs_warning(s, vs-4075,
-block %lu is out of range, block);
+   reiserfs_error(s, vs-4075,
+  block %lu is out of range, block);
return;
}
 
@@ -397,8 +397,8 @@ static void 

Re: [PATCH 1/5] reiserfs: use more consistent printk formatting

2005-07-18 Thread Hans Reiser
Jeff Mahoney wrote:

 The output format between a warning/error/panic/info/etc changes with
 which one is used.

 The following patch makes the messages more internally consistent, but also
 more consistent with other Linux filesystems.

Signed-off-by: Jeff Mahoney [EMAIL PROTECTED]
diff -ruNpX dontdiff linux-2.6.13-rc3/fs/reiserfs/prints.c 
linux-2.6.13-rc3.errors/fs/reiserfs/prints.c
--- linux-2.6.13-rc3/fs/reiserfs/prints.c  2005-07-13 13:57:32.0 
-0400
+++ linux-2.6.13-rc3.errors/fs/reiserfs/prints.c   2005-07-14 
16:36:47.0 -0400
@@ -269,10 +269,10 @@ void reiserfs_warning(struct super_block
 {
   do_reiserfs_warning(fmt);
   if (sb)
-  printk(KERN_WARNING ReiserFS: %s: warning: %s\n,
- reiserfs_bdevname(sb), error_buf);
+  printk(KERN_WARNING REISERFS warning (device %s): %s\n,
+ sb-s_id, error_buf);
   else
-  printk(KERN_WARNING ReiserFS: warning: %s\n, error_buf);
+  printk(KERN_WARNING REISERFS warning: %s\n, error_buf);
  

why are you changing it to the harder to read all upper case?  It is
known from various studies that all uppercase is harder for users to read.




[PATCH 0/5] reiserfs: moving towards better error handling

2005-07-18 Thread Jeff Mahoney

Hey all -

There was a thread recently addressing the lack of better error handling
in reiserfs. The following series of patches attempts to address it.

I'll post the following 5 patches. The first three are kind of cleanups, just
making things more consistent. The final two start to implement the actual
error handling and haven't received much testing yet.

* 01-reiserfs-consistent-msgs.diff
  - Makes the reiserfs output messages more consistent with respect to
each other and other Linux filesystems. This really just consists
of changing the prefix that gets printed before a warning, info, panic,
etc.
* 02-reiserfs-info.diff
  - A few messages that are currently printed as warnings aren't. This patch
changes them to be informational notices.
* 03-reiserfs-warning.diff
  - This patch makes the warning messages more consistent. Hans as specified
every warning should have a unique ID associated with it, so the
patch adds a parameter for it. The function name will also be included
in every warning. In instances where the device name was printed, it
has been removed since the reiserfs warning message prefix includes it.
* 04-reiserfs-error-1.diff
  - This patch adds a reiserfs_error() function to handle non-journal errors.
  - FOR TESTING ONLY
* 05-reiserfs-error-2.diff
  - This patch changes a number of warnings to errors, such as where metadata
i/o errors occur.
  - FOR TESTING ONLY

  Comments welcome.

  -Jeff

-- 
Jeff Mahoney
SuSE Labs


pgpfgzqZaWIkI.pgp
Description: PGP signature


[PATCH 2/5] reiserfs: make some warnings informational

2005-07-18 Thread Jeff Mahoney

 In several places, reiserfs_warning is used when there is no warning, just
 a notice. This patch changes some of them to indicate that the message
 is merely informational.

Signed-off-by: Jeff Mahoney [EMAIL PROTECTED]
diff -ruNpX dontdiff linux-2.6.13-rc3.1/fs/reiserfs/bitmap.c 
linux-2.6.13-rc3.2/fs/reiserfs/bitmap.c
--- linux-2.6.13-rc3.1/fs/reiserfs/bitmap.c 2005-07-14 19:43:14.0 
-0400
+++ linux-2.6.13-rc3.2/fs/reiserfs/bitmap.c 2005-07-14 19:44:11.0 
-0400
@@ -40,7 +40,7 @@
 
 #define SET_OPTION(optname) \
do { \
-reiserfs_warning(s, reiserfs: option \%s\ is set, #optname); \
+reiserfs_info(s, block allocator option \%s\ is set, #optname); \
 set_bit(_ALLOC_ ## optname , SB_ALLOC_OPTS(s)); \
 } while(0)
 #define TEST_OPTION(optname, s) \
@@ -611,7 +611,7 @@ int reiserfs_parse_alloc_options(struct 
return 1;
}
 
-   reiserfs_warning(s, allocator options = [%08x]\n, SB_ALLOC_OPTS(s));
+   reiserfs_info(s, allocator options = [%08x]\n, SB_ALLOC_OPTS(s));
return 0;
 }
 
diff -ruNpX dontdiff linux-2.6.13-rc3.1/fs/reiserfs/super.c 
linux-2.6.13-rc3.2/fs/reiserfs/super.c
--- linux-2.6.13-rc3.1/fs/reiserfs/super.c  2005-07-14 19:43:14.0 
-0400
+++ linux-2.6.13-rc3.2/fs/reiserfs/super.c  2005-07-14 19:45:06.0 
-0400
@@ -1444,13 +1444,11 @@ static int read_super_block(struct super
/* magic is of non-standard journal filesystem, look at 
s_version to
   find which format is in use */
if (sb_version(rs) == REISERFS_VERSION_2)
-   reiserfs_warning(s,
-read_super_block: found reiserfs 
format \3.6\
- with non-standard journal);
+   reiserfs_info(s, found reiserfs format \3.6\
+  with non-standard journal\n);
else if (sb_version(rs) == REISERFS_VERSION_1)
-   reiserfs_warning(s,
-read_super_block: found reiserfs 
format \3.5\
- with non-standard journal);
+   reiserfs_info(s, found reiserfs format \3.5\
+  with non-standard journal\n);
else {
reiserfs_warning(s,
 sh-2012: read_super_block: found 
unknown 
@@ -1543,8 +1541,8 @@ static __u32 find_hash_out(struct super_
if (reiserfs_rupasov_hash(s)) {
hash = YURA_HASH;
}
-   reiserfs_warning(s, FS seems to be empty, autodetect 
-is using the default hash);
+   reiserfs_info(s, FS seems to be empty, autodetect 
+is using the default hash\n);
break;
}
r5hash = GET_HASH_VALUE(r5_hash(de.de_name, de.de_namelen));
diff -ruNpX dontdiff linux-2.6.13-rc3.1/fs/reiserfs/xattr.c 
linux-2.6.13-rc3.2/fs/reiserfs/xattr.c
--- linux-2.6.13-rc3.1/fs/reiserfs/xattr.c  2005-07-14 19:43:14.0 
-0400
+++ linux-2.6.13-rc3.2/fs/reiserfs/xattr.c  2005-07-14 19:44:11.0 
-0400
@@ -1299,12 +1299,10 @@ int reiserfs_xattr_init(struct super_blo
}
 
if (dentry  dentry-d_inode)
-   reiserfs_warning(s,
-Created %s on %s - 
reserved for 
-xattr storage.,
-PRIVROOT_NAME,
-reiserfs_bdevname
-(inode-i_sb));
+   reiserfs_info(s, Created %s - 
+ reserved for xattr 
+ storage.\n,
+ PRIVROOT_NAME);
} else if (!dentry-d_inode) {
dput(dentry);
dentry = NULL;
-- 
Jeff Mahoney
SuSE Labs


Re: [PATCH 3/5] reiserfs: rework reiserfs_warning

2005-07-18 Thread Hans Reiser
Jeff, thanks so kindly for cleaning all this up, it must have been very
tedious, so extra thanks for it.

I will now quibble about some trivia

Hans

Jeff Mahoney wrote:

 ReiserFS warnings can be somewhat inconsistent.
 In some cases:
 * a unique identifier may be associated with it
 * the function name may be included
 * the device may be printed separately

 This patch aims to make warnings more consistent. reiserfs_warning() prints
 the device name, so printing it a second time is not required. The function
 name for a warning is always helpful in debugging, so it is now automatically
 inserted into the output. Hans has stated that every warning should have
 a unique identifier. Some cases lack them, others really shouldn't have them.
  

What cases should not have them?

 reiserfs_warning() now expects an id associated with each message. In the
 event that it is missing, MISSING_ID is used. In the case where one is simply
 not desired, NO_ID is used. Both of these are currently #define'd to NULL,
 but may be changed in the future.
  




Re: Installing Fedora Core with root on Reiserfs

2005-07-18 Thread Hans Reiser
Edward, please drive this to a solution.  Thanks Jeff.

Hans

Jeff Mahoney wrote:

 Edward Shishkin wrote:

 Russell Coker wrote:

 On Monday 18 July 2005 06:01, Edward Shishkin [EMAIL PROTECTED]
 wrote:
 
 
 FC4-test3 (and perhaps FC4) installs its own version of grub which
 seems
 to interact incorrectly with reiserfs. The problem is that reiserfs.ko
 module located on reiserfs partition can not be loaded.
   
 
 Firstly there is no situation in which reiserfs.ko will be loaded from
 a reiserfs partition.
 
 
 Hmmm... actually this is a default situation when installing with root
 on reiserfs..

 If the root file system is reiserfs then reiserfs.ko will (or at least
 should) be included in the initrd.

 Right, but initrd is in /boot which is not something separate: it is
 on the
 same reiserfs root partition..


 The situation you're describing is one that is well tested by now.

 If the root filesystem is reiserfs, and /boot is a part of it,
 reiserfs.ko MUST be in the initrd. Otherwise, there is a chicken/egg
 problem and the system will not boot.

 The initrd being on a reiserfs filesystem is fine since grub doesn't use
 any kernel services when it's executing. Grub loads the kernel and the
 initrd itself before transferring control to the kernel and uses no
 kernel services to do so. Grub has its own filesystem reading code which
 gets pointed to during installation.

 So, if there is truly a problem with this, I'd look at Fedora's mkinitrd.

 -Jeff


 --
 Jeff Mahoney
 SuSE Labs



[PATCH] reiserfs: fix deadlock in inode creation failure path w/ default ACL

2005-07-18 Thread Jeff Mahoney
 reiserfs_new_inode() can call iput() with the xattr lock held. This will
 cause a deadlock to occur when reiserfs_delete_xattrs() is called to
 clean up.

 The following patch releases the lock and reacquires it after the iput. This
 is safe because interaction with xattrs is complete, and the relock is just
 to balance out the release in the caller.

 The locking needs some reworking to be more sane, but that's more intrusive
 and I was just looking to fix this bug.

Signed-off-by: Jeff Mahoney [EMAIL PROTECTED]

diff -ruNpX dontdiff linux-2.6.13-rc3/fs/reiserfs/inode.c 
linux-2.6.13-rc3.errors/fs/reiserfs/inode.c
--- linux-2.6.13-rc3.1/fs/reiserfs/inode.c  2005-07-14 19:43:14.0 
-0400
+++ linux-2.6.13-rc3.2/fs/reiserfs/inode.c  2005-07-18 15:21:32.0 
-0400
@@ -1980,7 +1978,17 @@ int reiserfs_new_inode(struct reiserfs_t
   out_inserted_sd:
inode-i_nlink = 0;
th-t_trans_id = 0; /* so the caller can't use this handle later */
-   iput(inode);
+   
+   /* If we were inheriting an ACL, we need to release the lock so that
+* iput doesn't deadlock in reiserfs_delete_xattrs. The locking
+* code really needs to be reworked, but this will take care of it 
+* for now. -jeffm */
+   if (REISERFS_I(dir)-i_acl_default) {
+   reiserfs_write_unlock_xattrs(dir-i_sb);
+   iput(inode);
+   reiserfs_write_lock_xattrs(dir-i_sb);
+   } else
+   iput(inode);
return err;
 }
 
-- 
Jeff Mahoney
SuSE Labs


[PATCH 1/5] reiserfs: use more consistent printk formatting

2005-07-18 Thread Jeff Mahoney

 The output format between a warning/error/panic/info/etc changes with
 which one is used.

 The following patch makes the messages more internally consistent, but also
 more consistent with other Linux filesystems.

Signed-off-by: Jeff Mahoney [EMAIL PROTECTED]
diff -ruNpX dontdiff linux-2.6.13-rc3/fs/reiserfs/prints.c 
linux-2.6.13-rc3.errors/fs/reiserfs/prints.c
--- linux-2.6.13-rc3/fs/reiserfs/prints.c   2005-07-13 13:57:32.0 
-0400
+++ linux-2.6.13-rc3.errors/fs/reiserfs/prints.c2005-07-14 
16:36:47.0 -0400
@@ -269,10 +269,10 @@ void reiserfs_warning(struct super_block
 {
do_reiserfs_warning(fmt);
if (sb)
-   printk(KERN_WARNING ReiserFS: %s: warning: %s\n,
-  reiserfs_bdevname(sb), error_buf);
+   printk(KERN_WARNING REISERFS warning (device %s): %s\n,
+  sb-s_id, error_buf);
else
-   printk(KERN_WARNING ReiserFS: warning: %s\n, error_buf);
+   printk(KERN_WARNING REISERFS warning: %s\n, error_buf);
 }
 
 /* No newline.. reiserfs_info calls can be followed by printk's */
@@ -280,10 +280,10 @@ void reiserfs_info(struct super_block *s
 {
do_reiserfs_warning(fmt);
if (sb)
-   printk(KERN_NOTICE ReiserFS: %s: %s,
-  reiserfs_bdevname(sb), error_buf);
+   printk(KERN_NOTICE REISERFS (device %s): %s,
+  sb-s_id, error_buf);
else
-   printk(KERN_NOTICE ReiserFS: %s, error_buf);
+   printk(KERN_NOTICE REISERFS %s:, error_buf);
 }
 
 /* No newline.. reiserfs_printk calls can be followed by printk's */
@@ -298,10 +298,10 @@ void reiserfs_debug(struct super_block *
 #ifdef CONFIG_REISERFS_CHECK
do_reiserfs_warning(fmt);
if (s)
-   printk(KERN_DEBUG ReiserFS: %s: %s\n,
-  reiserfs_bdevname(s), error_buf);
+   printk(KERN_DEBUG REISERFS debug (device %s): %s\n,
+  s-s_id, error_buf);
else
-   printk(KERN_DEBUG ReiserFS: %s\n, error_buf);
+   printk(KERN_DEBUG REISERFS debug: %s\n, error_buf);
 #endif
 }
 
@@ -366,17 +366,17 @@ void reiserfs_panic(struct super_block *
 void reiserfs_abort(struct super_block *sb, int errno, const char *fmt, ...)
 {
do_reiserfs_warning(fmt);
 
if (reiserfs_error_panic(sb)) {
-   panic(KERN_CRIT REISERFS: panic (device %s): %s\n,
- reiserfs_bdevname(sb), error_buf);
+   panic(KERN_CRIT REISERFS panic (device %s): %s\n, sb-s_id,
+ error_buf);
}
 
-   if (sb-s_flags  MS_RDONLY)
+   if (reiserfs_is_journal_aborted(SB_JOURNAL(sb))) 
return;
 
-   printk(KERN_CRIT REISERFS: abort (device %s): %s\n,
-  reiserfs_bdevname(sb), error_buf);
+   printk(KERN_CRIT REISERFS abort (device %s): %s\n, sb-s_id,
+  error_buf);
 
sb-s_flags |= MS_RDONLY;
reiserfs_journal_abort(sb, errno);
-- 
Jeff Mahoney
SuSE Labs


Re: Installing Fedora Core with root on Reiserfs

2005-07-18 Thread Leo Comerford
On 7/18/05, Russell Coker [EMAIL PROTECTED] wrote:
 On Monday 18 July 2005 06:01, Edward Shishkin [EMAIL PROTECTED] wrote:
  FC4-test3 (and perhaps FC4) installs its own version of grub which seems
  to interact incorrectly with reiserfs. The problem is that reiserfs.ko
  module located on reiserfs partition can not be loaded.

I can confirm that there is a reiserfs/GRUB problem in the final FC4
release too. (I assume it's the same problem, but I haven't
investigated it.) FWIW - evidently not much - the relevant Fedora
Bugzilla bug would appear to be 161306.


Re: [PATCH 1/5] reiserfs: use more consistent printk formatting

2005-07-18 Thread Jeff Mahoney
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hans Reiser wrote:
 Jeff Mahoney wrote:
 
The output format between a warning/error/panic/info/etc changes with
which one is used.

The following patch makes the messages more internally consistent, but also
more consistent with other Linux filesystems.

Signed-off-by: Jeff Mahoney [EMAIL PROTECTED]
diff -ruNpX dontdiff linux-2.6.13-rc3/fs/reiserfs/prints.c 
linux-2.6.13-rc3.errors/fs/reiserfs/prints.c
--- linux-2.6.13-rc3/fs/reiserfs/prints.c 2005-07-13 13:57:32.0 
-0400
+++ linux-2.6.13-rc3.errors/fs/reiserfs/prints.c  2005-07-14 
16:36:47.0 -0400
@@ -269,10 +269,10 @@ void reiserfs_warning(struct super_block
{
  do_reiserfs_warning(fmt);
  if (sb)
- printk(KERN_WARNING ReiserFS: %s: warning: %s\n,
-reiserfs_bdevname(sb), error_buf);
+ printk(KERN_WARNING REISERFS warning (device %s): %s\n,
+sb-s_id, error_buf);
  else
- printk(KERN_WARNING ReiserFS: warning: %s\n, error_buf);
+ printk(KERN_WARNING REISERFS warning: %s\n, error_buf);
 

 why are you changing it to the harder to read all upper case?  It is
 known from various studies that all uppercase is harder for users to read.

My argument is that it makes the subsystem more prominent in a quick
visual search, and is easier on the eyes than the mixed case variant.

- -Jeff

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

iD8DBQFC3ExoLPWxlyuTD7IRAnYUAKCUN2YK5VSK50jcQgD8y+UfKmvjEQCfYBGE
fk+gGoOC9WlFHJ3+AlDwEdI=
=qYIP
-END PGP SIGNATURE-


Re: [PATCH 3/5] reiserfs: rework reiserfs_warning

2005-07-18 Thread Jeff Mahoney
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hans Reiser wrote:
 Jeff, thanks so kindly for cleaning all this up, it must have been very
 tedious, so extra thanks for it.
 
 I will now quibble about some trivia
 
 Hans
 
 Jeff Mahoney wrote:
 
ReiserFS warnings can be somewhat inconsistent.
In some cases:
* a unique identifier may be associated with it
* the function name may be included
* the device may be printed separately

This patch aims to make warnings more consistent. reiserfs_warning() prints
the device name, so printing it a second time is not required. The function
name for a warning is always helpful in debugging, so it is now automatically
inserted into the output. Hans has stated that every warning should have
a unique identifier. Some cases lack them, others really shouldn't have them.
 

 What cases should not have them?

I don't think that routine messages should have identifiers associated
with them. I guess in a more exact sense, messages that are directly
associated with user input, like mount option parsing, finding the
superblock, an unfinished reiserfsck, or enabling CONFIG_REISERFS_CHECK.

I guess a quick visual search for NO_ID in the patch would be the best
way of expressing this. I could be convinced otherwise, and that's why I
made two separate #defines for a missing id or deliberately no id.

- -Jeff

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

iD8DBQFC3E2uLPWxlyuTD7IRAufMAJ9RB1jrQalthIExa/4h+IouWrjr7gCcC34j
wGWoF4EI5kcfAWaL4UScBWo=
=mX/a
-END PGP SIGNATURE-


Re: [PATCH 1/5] reiserfs: use more consistent printk formatting

2005-07-18 Thread Hans Reiser
Jeff Mahoney wrote:

 Hans Reiser wrote:

 Jeff Mahoney wrote:

 The output format between a warning/error/panic/info/etc changes with
 which one is used.
 
 The following patch makes the messages more internally consistent,
 but also
 more consistent with other Linux filesystems.
 
 Signed-off-by: Jeff Mahoney [EMAIL PROTECTED]
 diff -ruNpX dontdiff linux-2.6.13-rc3/fs/reiserfs/prints.c
 linux-2.6.13-rc3.errors/fs/reiserfs/prints.c
 --- linux-2.6.13-rc3/fs/reiserfs/prints.c2005-07-13
 13:57:32.0 -0400
 +++ linux-2.6.13-rc3.errors/fs/reiserfs/prints.c2005-07-14
 16:36:47.0 -0400
 @@ -269,10 +269,10 @@ void reiserfs_warning(struct super_block
 {
 do_reiserfs_warning(fmt);
 if (sb)
 -printk(KERN_WARNING ReiserFS: %s: warning: %s\n,
 -   reiserfs_bdevname(sb), error_buf);
 +printk(KERN_WARNING REISERFS warning (device %s): %s\n,
 +   sb-s_id, error_buf);
 else
 -printk(KERN_WARNING ReiserFS: warning: %s\n, error_buf);
 +printk(KERN_WARNING REISERFS warning: %s\n, error_buf);
 
 
 why are you changing it to the harder to read all upper case?  It is
 known from various studies that all uppercase is harder for users to
 read.


 My argument is that it makes the subsystem more prominent in a quick
 visual search, and is easier on the eyes than the mixed case variant.

Please used mixed case, see literature on all uppercase for why.


Thanks for your other changes.


 -Jeff

 --
 Jeff Mahoney
 SuSE Labs



Re: [PATCH 3/5] reiserfs: rework reiserfs_warning

2005-07-18 Thread Hans Reiser
Jeff Mahoney wrote:

 Hans Reiser wrote:

 Jeff, thanks so kindly for cleaning all this up, it must have been very
 tedious, so extra thanks for it.

 I will now quibble about some trivia

 Hans

 Jeff Mahoney wrote:

 ReiserFS warnings can be somewhat inconsistent.
 In some cases:
 * a unique identifier may be associated with it
 * the function name may be included
 * the device may be printed separately
 
 This patch aims to make warnings more consistent. reiserfs_warning()
 prints
 the device name, so printing it a second time is not required. The
 function
 name for a warning is always helpful in debugging, so it is now
 automatically
 inserted into the output. Hans has stated that every warning should have
 a unique identifier. Some cases lack them, others really shouldn't
 have them.
 
 
 What cases should not have them?


 I don't think that routine messages should have identifiers associated
 with them. I guess in a more exact sense, messages that are directly
 associated with user input, like mount option parsing, finding the
 superblock, an unfinished reiserfsck, or enabling CONFIG_REISERFS_CHECK.

I disagree, please don't remove identifiers.


 I guess a quick visual search for NO_ID in the patch would be the best
 way of expressing this. I could be convinced otherwise, and that's why I
 made two separate #defines for a missing id or deliberately no id.

 -Jeff

 --
 Jeff Mahoney
 SuSE Labs