diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1999-06-22 23:49:01 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 1999-06-22 23:49:01 +0000 |
commit | d221c44b7afefd8f77f8595af468dfacb3b21cc2 (patch) | |
tree | ef1c7aa4fe157c9f63be777cc6809f292da1f5d5 /mm/swapfile.c | |
parent | 51d3b7814cdccef9188240fe0cbd8d97ff2c7470 (diff) |
Merge with Linux 2.3.8.
Diffstat (limited to 'mm/swapfile.c')
-rw-r--r-- | mm/swapfile.c | 21 |
1 files changed, 2 insertions, 19 deletions
diff --git a/mm/swapfile.c b/mm/swapfile.c index 794e39aff..a4a523ef2 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -42,8 +42,6 @@ static inline int scan_swap_map(struct swap_info_struct *si) offset = si->cluster_next++; if (si->swap_map[offset]) continue; - if (test_bit(offset, si->swap_lockmap)) - continue; si->cluster_nr--; goto got_page; } @@ -52,8 +50,6 @@ static inline int scan_swap_map(struct swap_info_struct *si) for (offset = si->lowest_bit; offset <= si->highest_bit ; offset++) { if (si->swap_map[offset]) continue; - if (test_bit(offset, si->swap_lockmap)) - continue; si->lowest_bit = offset; got_page: si->swap_map[offset] = 1; @@ -424,8 +420,6 @@ asmlinkage int sys_swapoff(const char * specialfile) p->swap_device = 0; vfree(p->swap_map); p->swap_map = NULL; - vfree(p->swap_lockmap); - p->swap_lockmap = NULL; p->flags = 0; err = 0; @@ -505,7 +499,6 @@ asmlinkage int sys_swapon(const char * specialfile, int swap_flags) int lock_map_size = PAGE_SIZE; int nr_good_pages = 0; unsigned long maxpages; - unsigned long tmp_lock_map = 0; int swapfilesize; lock_kernel(); @@ -524,7 +517,6 @@ asmlinkage int sys_swapon(const char * specialfile, int swap_flags) p->swap_file = NULL; p->swap_device = 0; p->swap_map = NULL; - p->swap_lockmap = NULL; p->lowest_bit = 0; p->highest_bit = 0; p->cluster_nr = 0; @@ -590,9 +582,8 @@ asmlinkage int sys_swapon(const char * specialfile, int swap_flags) goto bad_swap; } - p->swap_lockmap = (char *) &tmp_lock_map; - rw_swap_page_nocache(READ, SWP_ENTRY(type,0), (char *) swap_header); - p->swap_lockmap = NULL; + lock_page(mem_map + MAP_NR(swap_header)); + rw_swap_page_nolock(READ, SWP_ENTRY(type,0), (char *) swap_header, 1); if (!memcmp("SWAP-SPACE",swap_header->magic.magic,10)) swap_header_version = 1; @@ -689,11 +680,6 @@ asmlinkage int sys_swapon(const char * specialfile, int swap_flags) goto bad_swap; } p->swap_map[0] = SWAP_MAP_BAD; - if (!(p->swap_lockmap = vmalloc (lock_map_size))) { - error = -ENOMEM; - goto bad_swap; - } - memset(p->swap_lockmap,0,lock_map_size); p->flags = SWP_WRITEOK; p->pages = nr_good_pages; nr_swap_pages += nr_good_pages; @@ -720,15 +706,12 @@ bad_swap: if(filp.f_op && filp.f_op->release) filp.f_op->release(filp.f_dentry->d_inode,&filp); bad_swap_2: - if (p->swap_lockmap) - vfree(p->swap_lockmap); if (p->swap_map) vfree(p->swap_map); dput(p->swap_file); p->swap_device = 0; p->swap_file = NULL; p->swap_map = NULL; - p->swap_lockmap = NULL; p->flags = 0; if (!(swap_flags & SWAP_FLAG_PREFER)) ++least_priority; |