[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: ext3 behaviour when no space on disk



On Tue, 2002-06-04 at 00:06, Andrew Morton wrote:
> Memory fails me...  But no, we shouldn't be treating ENOSPC in that
> manner.  How about this?

I'm getting some similar interesting errors to this - unfortunately I
don't now have the Oops listing (too many things died on the box).

This is on a 2.4.19-pre3 box - too early to have Stephen's last batch of
updates applied, so I am building that now.

However there are some:-
  kernel: EXT3-fs error (device ida0(72,8)) in ext3_new_inode: error 28

[device is a compaq RAID controller], error 28 is ENOSPC.

I see in ialloc.c that there is already some special treatment for
ENOSPC that would skip around the ext3_std_error call, but then ENOSPC
is also used for other purposes ("Free inodes count corrupted in group
%d").... 

In my case I think I probably am hitting the limit of inodes on the
system - after getting the box back into action it was 80% inodes used
all in one directory and the app may well have chewed some more.

Is conditionalising the ext3_std_error call like in Andrew's patch a
sensible thing to do in this case?  I've attached the equivalent patch
(against 2.4.19-pre10-ac2).

	Nigel.
-- 
[ Nigel Metheringham           Nigel Metheringham InTechnology co uk ]
[ - Comments in this message are my own and not ITO opinion/policy - ]
# Prevent ext3_std_error being called on inode ENOSPC
# 
# To apply this patch:
# STEP 1: Chdir to the source directory.
# STEP 2: Run the 'applypatch' program with this patch file as input.
#
# If you do not have 'applypatch', it is part of the 'makepatch' package
# that you can fetch from the Comprehensive Perl Archive Network:
# http://www.perl.com/CPAN/authors/Johan_Vromans/makepatch-x.y.tar.gz
# In the above URL, 'x' should be 2 or higher.
#
# To apply this patch without the use of 'applypatch':
# STEP 1: Chdir to the source directory.
# STEP 2: Run the 'patch' program with this file as input.
#
#### End of Preamble ####

#### Patch data follows ####
diff -u 'zkernel-2.4.18.orig/linux/fs/ext3/ialloc.c' 'zkernel-2.4.18/linux/fs/ext3/ialloc.c'
Index: ./fs/ext3/ialloc.c
--- ./fs/ext3/ialloc.c	Wed Jun 12 11:23:42 2002
+++ ./fs/ext3/ialloc.c	Wed Jun 12 11:57:10 2002
@@ -523,7 +523,8 @@
 	return inode;
 
 fail:
-	ext3_std_error(sb, err);
+	if (err != -ENOSPC)
+		ext3_std_error(sb, err);
 out:
 	unlock_super(sb);
 	iput(inode);
#### End of Patch data ####

#### ApplyPatch data follows ####
# Data version        : 1.0
# Date generated      : Wed Jun 12 12:05:17 2002
# Generated by        : makepatch 2.00
# Recurse directories : Yes
# Excluded files      : (\A|.*/)CVS(/.*|\Z)
#                       (\A|.*/)RCS(/.*|\Z)
#                       ,v\Z
#                       (\A|.*/)SCCS(/.*|\Z)
#                       (\A|.*/)[sp]\..+\Z
# p 'fs/ext3/ialloc.c' 19634 1023879430 0100644
#### End of ApplyPatch data ####

#### End of Patch kit [created: Wed Jun 12 12:05:17 2002] ####
#### Checksum: 48 1599 53305 ####

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]