summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@athlon.transmeta.com>2002-02-04 23:58:00 -0800
committerLinus Torvalds <torvalds@athlon.transmeta.com>2002-02-04 23:58:00 -0800
commit3735375e3fd2f2286c1dc2f0131f39d438ae9a5c (patch)
tree69b755e17ba7fb4a9e799d38307235e1eedc993f
parent381ab1f538162eb985c9244aa7d56e54315881ab (diff)
v2.5.0 -> v2.5.0.1
- me: README references to 2.4.x -> 2.5.x - Alexander Viro: fix unmount inode breakage, show_vfsmnt cleanup - Jeff Garzik: fix 8139too initialization
-rw-r--r--Makefile4
-rw-r--r--README13
-rw-r--r--drivers/net/8139too.c1
-rw-r--r--fs/inode.c23
-rw-r--r--fs/super.c4
-rw-r--r--include/linux/fs.h1
6 files changed, 29 insertions, 17 deletions
diff --git a/Makefile b/Makefile
index 1e5d1cbe6b95..485209cf5ec9 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
VERSION = 2
PATCHLEVEL = 5
-SUBLEVEL = 0
-EXTRAVERSION =
+SUBLEVEL = 1
+EXTRAVERSION =-pre1
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
diff --git a/README b/README
index 6b626329e30a..aabb04987f76 100644
--- a/README
+++ b/README
@@ -1,9 +1,12 @@
- Linux kernel release 2.4.xx
+ Linux kernel release 2.5.xx
-These are the release notes for Linux version 2.4. Read them carefully,
+These are the release notes for Linux version 2.5. Read them carefully,
as they tell you what this is all about, explain how to install the
kernel, and what to do if something goes wrong.
+NOTE! As with all odd-numbered releases, 2.5.x is a development kernel.
+For stable kernels, see the 2.4.x maintained by Marcelo Tosatti.
+
WHAT IS LINUX?
Linux is a Unix clone written from scratch by Linus Torvalds with
@@ -52,7 +55,7 @@ INSTALLING the kernel:
directory where you have permissions (eg. your home directory) and
unpack it:
- gzip -cd linux-2.4.XX.tar.gz | tar xvf -
+ gzip -cd linux-2.5.XX.tar.gz | tar xvf -
Replace "XX" with the version number of the latest kernel.
@@ -61,7 +64,7 @@ INSTALLING the kernel:
files. They should match the library, and not get messed up by
whatever the kernel-du-jour happens to be.
- - You can also upgrade between 2.4.xx releases by patching. Patches are
+ - You can also upgrade between 2.5.xx releases by patching. Patches are
distributed in the traditional gzip and the new bzip2 format. To
install by patching, get all the newer patch files, enter the
directory in which you unpacked the kernel source and execute:
@@ -96,7 +99,7 @@ INSTALLING the kernel:
SOFTWARE REQUIREMENTS
- Compiling and running the 2.4.xx kernels requires up-to-date
+ Compiling and running the 2.5.xx kernels requires up-to-date
versions of various software packages. Consult
./Documentation/Changes for the minimum version numbers required
and how to get updates for these packages. Beware that using
diff --git a/drivers/net/8139too.c b/drivers/net/8139too.c
index 5fbd49d260be..2d219b46649a 100644
--- a/drivers/net/8139too.c
+++ b/drivers/net/8139too.c
@@ -1270,6 +1270,7 @@ static int rtl8139_open (struct net_device *dev)
tp->full_duplex = tp->duplex_lock;
tp->tx_flag = (TX_FIFO_THRESH << 11) & 0x003f0000;
tp->twistie = 1;
+ tp->time_to_die = 0;
rtl8139_init_ring (dev);
rtl8139_hw_start (dev);
diff --git a/fs/inode.c b/fs/inode.c
index 7d073ab51e1a..6eef0b34e048 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -1065,24 +1065,27 @@ void iput(struct inode *inode)
if (inode->i_state != I_CLEAR)
BUG();
} else {
- if (!list_empty(&inode->i_hash) && sb && sb->s_root) {
+ if (!list_empty(&inode->i_hash)) {
if (!(inode->i_state & (I_DIRTY|I_LOCK))) {
list_del(&inode->i_list);
list_add(&inode->i_list, &inode_unused);
}
inodes_stat.nr_unused++;
spin_unlock(&inode_lock);
- return;
- } else {
- list_del_init(&inode->i_list);
+ if (!sb || sb->s_flags & MS_ACTIVE)
+ return;
+ write_inode_now(inode, 1);
+ spin_lock(&inode_lock);
+ inodes_stat.nr_unused--;
list_del_init(&inode->i_hash);
- inode->i_state|=I_FREEING;
- inodes_stat.nr_inodes--;
- spin_unlock(&inode_lock);
- if (inode->i_data.nrpages)
- truncate_inode_pages(&inode->i_data, 0);
- clear_inode(inode);
}
+ list_del_init(&inode->i_list);
+ inode->i_state|=I_FREEING;
+ inodes_stat.nr_inodes--;
+ spin_unlock(&inode_lock);
+ if (inode->i_data.nrpages)
+ truncate_inode_pages(&inode->i_data, 0);
+ clear_inode(inode);
}
destroy_inode(inode);
}
diff --git a/fs/super.c b/fs/super.c
index c74d32726726..a777a4fdef53 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -462,6 +462,7 @@ static struct super_block * read_super(kdev_t dev, struct block_device *bdev,
lock_super(s);
if (!type->read_super(s, data, flags & MS_VERBOSE ? 1 : 0))
goto out_fail;
+ s->s_flags |= MS_ACTIVE;
unlock_super(s);
/* tell bdcache that we are going to keep this one */
if (bdev)
@@ -614,6 +615,7 @@ restart:
lock_super(s);
if (!fs_type->read_super(s, data, flags & MS_VERBOSE ? 1 : 0))
goto out_fail;
+ s->s_flags |= MS_ACTIVE;
unlock_super(s);
get_filesystem(fs_type);
path_release(&nd);
@@ -695,6 +697,7 @@ retry:
lock_super(s);
if (!fs_type->read_super(s, data, flags & MS_VERBOSE ? 1 : 0))
goto out_fail;
+ s->s_flags |= MS_ACTIVE;
unlock_super(s);
get_filesystem(fs_type);
return s;
@@ -739,6 +742,7 @@ void kill_super(struct super_block *sb)
dput(root);
fsync_super(sb);
lock_super(sb);
+ sb->s_flags &= ~MS_ACTIVE;
invalidate_inodes(sb); /* bad name - it should be evict_inodes() */
if (sop) {
if (sop->write_super && sb->s_dirt)
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 867aa6ce8f5b..ae92cfec5208 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -110,6 +110,7 @@ extern int leases_enable, dir_notify_enable, lease_break_time;
#define MS_BIND 4096
#define MS_REC 16384
#define MS_VERBOSE 32768
+#define MS_ACTIVE (1<<30)
#define MS_NOUSER (1<<31)
/*