Commit 3735375e authored by Linus Torvalds's avatar Linus Torvalds

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
parent 381ab1f5
VERSION = 2 VERSION = 2
PATCHLEVEL = 5 PATCHLEVEL = 5
SUBLEVEL = 0 SUBLEVEL = 1
EXTRAVERSION = EXTRAVERSION =-pre1
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
......
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 as they tell you what this is all about, explain how to install the
kernel, and what to do if something goes wrong. 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? WHAT IS LINUX?
Linux is a Unix clone written from scratch by Linus Torvalds with Linux is a Unix clone written from scratch by Linus Torvalds with
...@@ -52,7 +55,7 @@ INSTALLING the kernel: ...@@ -52,7 +55,7 @@ INSTALLING the kernel:
directory where you have permissions (eg. your home directory) and directory where you have permissions (eg. your home directory) and
unpack it: 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. Replace "XX" with the version number of the latest kernel.
...@@ -61,7 +64,7 @@ INSTALLING the kernel: ...@@ -61,7 +64,7 @@ INSTALLING the kernel:
files. They should match the library, and not get messed up by files. They should match the library, and not get messed up by
whatever the kernel-du-jour happens to be. 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 distributed in the traditional gzip and the new bzip2 format. To
install by patching, get all the newer patch files, enter the install by patching, get all the newer patch files, enter the
directory in which you unpacked the kernel source and execute: directory in which you unpacked the kernel source and execute:
...@@ -96,7 +99,7 @@ INSTALLING the kernel: ...@@ -96,7 +99,7 @@ INSTALLING the kernel:
SOFTWARE REQUIREMENTS 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 versions of various software packages. Consult
./Documentation/Changes for the minimum version numbers required ./Documentation/Changes for the minimum version numbers required
and how to get updates for these packages. Beware that using and how to get updates for these packages. Beware that using
......
...@@ -1270,6 +1270,7 @@ static int rtl8139_open (struct net_device *dev) ...@@ -1270,6 +1270,7 @@ static int rtl8139_open (struct net_device *dev)
tp->full_duplex = tp->duplex_lock; tp->full_duplex = tp->duplex_lock;
tp->tx_flag = (TX_FIFO_THRESH << 11) & 0x003f0000; tp->tx_flag = (TX_FIFO_THRESH << 11) & 0x003f0000;
tp->twistie = 1; tp->twistie = 1;
tp->time_to_die = 0;
rtl8139_init_ring (dev); rtl8139_init_ring (dev);
rtl8139_hw_start (dev); rtl8139_hw_start (dev);
......
...@@ -1065,17 +1065,21 @@ void iput(struct inode *inode) ...@@ -1065,17 +1065,21 @@ void iput(struct inode *inode)
if (inode->i_state != I_CLEAR) if (inode->i_state != I_CLEAR)
BUG(); BUG();
} else { } 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))) { if (!(inode->i_state & (I_DIRTY|I_LOCK))) {
list_del(&inode->i_list); list_del(&inode->i_list);
list_add(&inode->i_list, &inode_unused); list_add(&inode->i_list, &inode_unused);
} }
inodes_stat.nr_unused++; inodes_stat.nr_unused++;
spin_unlock(&inode_lock); spin_unlock(&inode_lock);
if (!sb || sb->s_flags & MS_ACTIVE)
return; return;
} else { write_inode_now(inode, 1);
list_del_init(&inode->i_list); spin_lock(&inode_lock);
inodes_stat.nr_unused--;
list_del_init(&inode->i_hash); list_del_init(&inode->i_hash);
}
list_del_init(&inode->i_list);
inode->i_state|=I_FREEING; inode->i_state|=I_FREEING;
inodes_stat.nr_inodes--; inodes_stat.nr_inodes--;
spin_unlock(&inode_lock); spin_unlock(&inode_lock);
...@@ -1083,7 +1087,6 @@ void iput(struct inode *inode) ...@@ -1083,7 +1087,6 @@ void iput(struct inode *inode)
truncate_inode_pages(&inode->i_data, 0); truncate_inode_pages(&inode->i_data, 0);
clear_inode(inode); clear_inode(inode);
} }
}
destroy_inode(inode); destroy_inode(inode);
} }
} }
......
...@@ -462,6 +462,7 @@ static struct super_block * read_super(kdev_t dev, struct block_device *bdev, ...@@ -462,6 +462,7 @@ static struct super_block * read_super(kdev_t dev, struct block_device *bdev,
lock_super(s); lock_super(s);
if (!type->read_super(s, data, flags & MS_VERBOSE ? 1 : 0)) if (!type->read_super(s, data, flags & MS_VERBOSE ? 1 : 0))
goto out_fail; goto out_fail;
s->s_flags |= MS_ACTIVE;
unlock_super(s); unlock_super(s);
/* tell bdcache that we are going to keep this one */ /* tell bdcache that we are going to keep this one */
if (bdev) if (bdev)
...@@ -614,6 +615,7 @@ static struct super_block *get_sb_bdev(struct file_system_type *fs_type, ...@@ -614,6 +615,7 @@ static struct super_block *get_sb_bdev(struct file_system_type *fs_type,
lock_super(s); lock_super(s);
if (!fs_type->read_super(s, data, flags & MS_VERBOSE ? 1 : 0)) if (!fs_type->read_super(s, data, flags & MS_VERBOSE ? 1 : 0))
goto out_fail; goto out_fail;
s->s_flags |= MS_ACTIVE;
unlock_super(s); unlock_super(s);
get_filesystem(fs_type); get_filesystem(fs_type);
path_release(&nd); path_release(&nd);
...@@ -695,6 +697,7 @@ static struct super_block *get_sb_single(struct file_system_type *fs_type, ...@@ -695,6 +697,7 @@ static struct super_block *get_sb_single(struct file_system_type *fs_type,
lock_super(s); lock_super(s);
if (!fs_type->read_super(s, data, flags & MS_VERBOSE ? 1 : 0)) if (!fs_type->read_super(s, data, flags & MS_VERBOSE ? 1 : 0))
goto out_fail; goto out_fail;
s->s_flags |= MS_ACTIVE;
unlock_super(s); unlock_super(s);
get_filesystem(fs_type); get_filesystem(fs_type);
return s; return s;
...@@ -739,6 +742,7 @@ void kill_super(struct super_block *sb) ...@@ -739,6 +742,7 @@ void kill_super(struct super_block *sb)
dput(root); dput(root);
fsync_super(sb); fsync_super(sb);
lock_super(sb); lock_super(sb);
sb->s_flags &= ~MS_ACTIVE;
invalidate_inodes(sb); /* bad name - it should be evict_inodes() */ invalidate_inodes(sb); /* bad name - it should be evict_inodes() */
if (sop) { if (sop) {
if (sop->write_super && sb->s_dirt) if (sop->write_super && sb->s_dirt)
......
...@@ -110,6 +110,7 @@ extern int leases_enable, dir_notify_enable, lease_break_time; ...@@ -110,6 +110,7 @@ extern int leases_enable, dir_notify_enable, lease_break_time;
#define MS_BIND 4096 #define MS_BIND 4096
#define MS_REC 16384 #define MS_REC 16384
#define MS_VERBOSE 32768 #define MS_VERBOSE 32768
#define MS_ACTIVE (1<<30)
#define MS_NOUSER (1<<31) #define MS_NOUSER (1<<31)
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment