patch-2.1.89 linux/mm/mmap.c
Next file: linux/mm/mprotect.c
Previous file: linux/mm/mlock.c
Back to the patch index
Back to the overall index
- Lines: 122
- Date:
Fri Feb 27 14:02:06 1998
- Orig file:
v2.1.88/linux/mm/mmap.c
- Orig date:
Wed Jan 14 14:52:44 1998
diff -u --recursive --new-file v2.1.88/linux/mm/mmap.c linux/mm/mmap.c
@@ -17,6 +17,7 @@
#include <linux/smp.h>
#include <linux/smp_lock.h>
#include <linux/init.h>
+#include <linux/file.h>
#include <asm/uaccess.h>
#include <asm/system.h>
@@ -74,11 +75,11 @@
/* Remove one vm structure from the inode's i_mmap ring. */
static inline void remove_shared_vm_struct(struct vm_area_struct *vma)
{
- struct dentry * dentry = vma->vm_dentry;
+ struct file * file = vma->vm_file;
- if (dentry) {
+ if (file) {
if (vma->vm_flags & VM_DENYWRITE)
- dentry->d_inode->i_writecount++;
+ file->f_dentry->d_inode->i_writecount++;
if(vma->vm_next_share)
vma->vm_next_share->vm_pprev_share = vma->vm_pprev_share;
*vma->vm_pprev_share = vma->vm_next_share;
@@ -261,7 +262,7 @@
vma->vm_page_prot = protection_map[vma->vm_flags & 0x0f];
vma->vm_ops = NULL;
vma->vm_offset = off;
- vma->vm_dentry = NULL;
+ vma->vm_file = NULL;
vma->vm_pte = 0;
/* Clear old maps */
@@ -394,8 +395,8 @@
if (addr == area->vm_start && end == area->vm_end) {
if (area->vm_ops && area->vm_ops->close)
area->vm_ops->close(area);
- if (area->vm_dentry)
- dput(area->vm_dentry);
+ if (area->vm_file)
+ fput(area->vm_file);
return 0;
}
@@ -418,7 +419,9 @@
mpnt->vm_flags = area->vm_flags;
mpnt->vm_ops = area->vm_ops;
mpnt->vm_offset = area->vm_offset + (end - area->vm_start);
- mpnt->vm_dentry = dget(area->vm_dentry);
+ mpnt->vm_file = area->vm_file;
+ if (mpnt->vm_file)
+ mpnt->vm_file->f_count++;
if (mpnt->vm_ops && mpnt->vm_ops->open)
mpnt->vm_ops->open(mpnt);
area->vm_end = addr; /* Truncate area */
@@ -577,8 +580,8 @@
mm->map_count--;
remove_shared_vm_struct(mpnt);
zap_page_range(mm, start, size);
- if (mpnt->vm_dentry)
- dput(mpnt->vm_dentry);
+ if (mpnt->vm_file)
+ fput(mpnt->vm_file);
kmem_cache_free(vm_area_cachep, mpnt);
mpnt = next;
}
@@ -594,7 +597,7 @@
void insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vmp)
{
struct vm_area_struct **pprev = &mm->mmap;
- struct dentry * dentry;
+ struct file * file;
mm->map_count++;
@@ -608,9 +611,9 @@
*pprev = vmp;
vmp->vm_pprev = pprev;
- dentry = vmp->vm_dentry;
- if (dentry) {
- struct inode * inode = dentry->d_inode;
+ file = vmp->vm_file;
+ if (file) {
+ struct inode * inode = file->f_dentry->d_inode;
if (vmp->vm_flags & VM_DENYWRITE)
inode->i_writecount--;
@@ -657,8 +660,8 @@
for ( ; mpnt && prev->vm_start < end_addr ; prev = mpnt, mpnt = next) {
next = mpnt->vm_next;
- /* To share, we must have the same dentry, operations.. */
- if ((mpnt->vm_dentry != prev->vm_dentry)||
+ /* To share, we must have the same file, operations.. */
+ if ((mpnt->vm_file != prev->vm_file)||
(mpnt->vm_pte != prev->vm_pte) ||
(mpnt->vm_ops != prev->vm_ops) ||
(mpnt->vm_flags != prev->vm_flags) ||
@@ -666,10 +669,10 @@
continue;
/*
- * If we have a dentry or it's a shared memory area
+ * If we have a file or it's a shared memory area
* the offsets must be contiguous..
*/
- if ((mpnt->vm_dentry != NULL) || (mpnt->vm_flags & VM_SHM)) {
+ if ((mpnt->vm_file != NULL) || (mpnt->vm_flags & VM_SHM)) {
unsigned long off = prev->vm_offset+prev->vm_end-prev->vm_start;
if (off != mpnt->vm_offset)
continue;
@@ -691,8 +694,8 @@
}
mm->map_count--;
remove_shared_vm_struct(mpnt);
- if (mpnt->vm_dentry)
- dput(mpnt->vm_dentry);
+ if (mpnt->vm_file)
+ fput(mpnt->vm_file);
kmem_cache_free(vm_area_cachep, mpnt);
mpnt = prev;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov