patch-2.4.21 linux-2.4.21/fs/namespace.c
Next file: linux-2.4.21/fs/ncpfs/ioctl.c
Previous file: linux-2.4.21/fs/namei.c
Back to the patch index
Back to the overall index
- Lines: 58
- Date:
2003-06-13 07:51:37.000000000 -0700
- Orig file:
linux-2.4.20/fs/namespace.c
- Orig date:
2002-11-28 15:53:15.000000000 -0800
diff -urN linux-2.4.20/fs/namespace.c linux-2.4.21/fs/namespace.c
@@ -24,13 +24,12 @@
struct vfsmount *do_kern_mount(const char *type, int flags, char *name, void *data);
int do_remount_sb(struct super_block *sb, int flags, void * data);
void kill_super(struct super_block *sb);
+extern int __init init_rootfs(void);
static struct list_head *mount_hashtable;
static int hash_mask, hash_bits;
static kmem_cache_t *mnt_cache;
-extern void init_rootfs(void);
-
static inline unsigned long hash(struct vfsmount *mnt, struct dentry *dentry)
{
unsigned long tmp = ((unsigned long) mnt / L1_CACHE_BYTES);
@@ -216,6 +215,10 @@
if (!path_buf)
return -ENOMEM;
path = d_path(mnt->mnt_root, mnt, path_buf, PAGE_SIZE);
+ if (IS_ERR(path)) {
+ free_page((unsigned long) path_buf);
+ return PTR_ERR(path);
+ }
mangle(m, mnt->mnt_devname ? mnt->mnt_devname : "none");
seq_putc(m, ' ');
@@ -1023,15 +1026,10 @@
if (!mnt_cache)
panic("Cannot create vfsmount cache");
- mempages >>= (16 - PAGE_SHIFT);
- mempages *= sizeof(struct list_head);
- for (order = 0; ((1UL << order) << PAGE_SHIFT) < mempages; order++)
- ;
-
- do {
- mount_hashtable = (struct list_head *)
- __get_free_pages(GFP_ATOMIC, order);
- } while (mount_hashtable == NULL && --order >= 0);
+ /* using single pointer list heads would save half of the hash table. */
+ order = 0;
+ mount_hashtable = (struct list_head *)
+ __get_free_pages(GFP_ATOMIC, order);
if (!mount_hashtable)
panic("Failed to allocate mount hash table\n");
@@ -1055,8 +1053,9 @@
nr_hash = 1UL << hash_bits;
hash_mask = nr_hash-1;
- printk("Mount-cache hash table entries: %d (order: %ld, %ld bytes)\n",
- nr_hash, order, (PAGE_SIZE << order));
+ printk(KERN_INFO "Mount cache hash table entries: %d"
+ " (order: %ld, %ld bytes)\n",
+ nr_hash, order, (PAGE_SIZE << order));
/* And initialize the newly allocated array */
d = mount_hashtable;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)