The patch titled

     update filesystems for new delete_inode behavior

has been added to the -mm tree.  Its filename is

     update-filesystems-for-new-delete_inode-behavior.patch

Patches currently in -mm which might be from [EMAIL PROTECTED] are

move-truncate_inode_pages-into-delete_inode.patch
update-filesystems-for-new-delete_inode-behavior.patch
kjournald-missing-jfs_unmount-check.patch
reiser4-update-filesystems-for-new-delete_inode-behavior.patch



From: Mark Fasheh <[EMAIL PROTECTED]>

Update the file systems in fs/ implementing a delete_inode() callback to
call truncate_inode_pages().  One implementation note: In developing this
patch I put the calls to truncate_inode_pages() at the very top of those
filesystems delete_inode() callbacks in order to retain the previous
behavior.  I'm guessing that some of those could probably be optimized.

Signed-off-by: Mark Fasheh <[EMAIL PROTECTED]>
Acked-by: Christoph Hellwig <[EMAIL PROTECTED]>
Signed-off-by: Hugh Dickins <[EMAIL PROTECTED]>
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
---

 fs/affs/inode.c         |    1 +
 fs/bfs/inode.c          |    2 ++
 fs/ext2/inode.c         |    2 ++
 fs/ext3/inode.c         |    2 ++
 fs/fat/inode.c          |    2 ++
 fs/hostfs/hostfs_kern.c |    1 +
 fs/hpfs/inode.c         |    1 +
 fs/jffs/inode-v23.c     |    1 +
 fs/jfs/inode.c          |    2 ++
 fs/minix/inode.c        |    1 +
 fs/ncpfs/inode.c        |    2 ++
 fs/nfs/inode.c          |    2 ++
 fs/proc/inode.c         |    2 ++
 fs/qnx4/inode.c         |    1 +
 fs/reiserfs/inode.c     |    2 ++
 fs/smbfs/inode.c        |    1 +
 fs/sysv/inode.c         |    1 +
 fs/udf/inode.c          |    2 ++
 fs/ufs/inode.c          |    1 +
 mm/shmem.c              |    1 +
 20 files changed, 30 insertions(+)

diff -puN fs/affs/inode.c~update-filesystems-for-new-delete_inode-behavior 
fs/affs/inode.c
--- 25/fs/affs/inode.c~update-filesystems-for-new-delete_inode-behavior Wed Aug 
17 14:29:05 2005
+++ 25-akpm/fs/affs/inode.c     Wed Aug 17 14:29:05 2005
@@ -255,6 +255,7 @@ void
 affs_delete_inode(struct inode *inode)
 {
        pr_debug("AFFS: delete_inode(ino=%lu, nlink=%u)\n", inode->i_ino, 
inode->i_nlink);
+       truncate_inode_pages(&inode->i_data, 0);
        inode->i_size = 0;
        if (S_ISREG(inode->i_mode))
                affs_truncate(inode);
diff -puN fs/bfs/inode.c~update-filesystems-for-new-delete_inode-behavior 
fs/bfs/inode.c
--- 25/fs/bfs/inode.c~update-filesystems-for-new-delete_inode-behavior  Wed Aug 
17 14:29:05 2005
+++ 25-akpm/fs/bfs/inode.c      Wed Aug 17 14:29:05 2005
@@ -143,6 +143,8 @@ static void bfs_delete_inode(struct inod
 
        dprintf("ino=%08lx\n", inode->i_ino);
 
+       truncate_inode_pages(&inode->i_data, 0);
+
        if (inode->i_ino < BFS_ROOT_INO || inode->i_ino > info->si_lasti) {
                printf("invalid ino=%08lx\n", inode->i_ino);
                return;
diff -puN fs/ext2/inode.c~update-filesystems-for-new-delete_inode-behavior 
fs/ext2/inode.c
--- 25/fs/ext2/inode.c~update-filesystems-for-new-delete_inode-behavior Wed Aug 
17 14:29:05 2005
+++ 25-akpm/fs/ext2/inode.c     Wed Aug 17 14:29:05 2005
@@ -71,6 +71,8 @@ void ext2_put_inode(struct inode *inode)
  */
 void ext2_delete_inode (struct inode * inode)
 {
+       truncate_inode_pages(&inode->i_data, 0);
+
        if (is_bad_inode(inode))
                goto no_delete;
        EXT2_I(inode)->i_dtime  = get_seconds();
diff -puN fs/ext3/inode.c~update-filesystems-for-new-delete_inode-behavior 
fs/ext3/inode.c
--- 25/fs/ext3/inode.c~update-filesystems-for-new-delete_inode-behavior Wed Aug 
17 14:29:05 2005
+++ 25-akpm/fs/ext3/inode.c     Wed Aug 17 14:29:05 2005
@@ -187,6 +187,8 @@ void ext3_delete_inode (struct inode * i
 {
        handle_t *handle;
 
+       truncate_inode_pages(&inode->i_data, 0);
+
        if (is_bad_inode(inode))
                goto no_delete;
 
diff -puN fs/fat/inode.c~update-filesystems-for-new-delete_inode-behavior 
fs/fat/inode.c
--- 25/fs/fat/inode.c~update-filesystems-for-new-delete_inode-behavior  Wed Aug 
17 14:29:05 2005
+++ 25-akpm/fs/fat/inode.c      Wed Aug 17 14:29:05 2005
@@ -335,6 +335,8 @@ EXPORT_SYMBOL(fat_build_inode);
 
 static void fat_delete_inode(struct inode *inode)
 {
+       truncate_inode_pages(&inode->i_data, 0);
+
        if (!is_bad_inode(inode)) {
                inode->i_size = 0;
                fat_truncate(inode);
diff -puN 
fs/hostfs/hostfs_kern.c~update-filesystems-for-new-delete_inode-behavior 
fs/hostfs/hostfs_kern.c
--- 25/fs/hostfs/hostfs_kern.c~update-filesystems-for-new-delete_inode-behavior 
Wed Aug 17 14:29:05 2005
+++ 25-akpm/fs/hostfs/hostfs_kern.c     Wed Aug 17 14:29:05 2005
@@ -284,6 +284,7 @@ static struct inode *hostfs_alloc_inode(
 
 static void hostfs_delete_inode(struct inode *inode)
 {
+       truncate_inode_pages(&inode->i_data, 0);
        if(HOSTFS_I(inode)->fd != -1) {
                close_file(&HOSTFS_I(inode)->fd);
                HOSTFS_I(inode)->fd = -1;
diff -puN fs/hpfs/inode.c~update-filesystems-for-new-delete_inode-behavior 
fs/hpfs/inode.c
--- 25/fs/hpfs/inode.c~update-filesystems-for-new-delete_inode-behavior Wed Aug 
17 14:29:05 2005
+++ 25-akpm/fs/hpfs/inode.c     Wed Aug 17 14:29:05 2005
@@ -284,6 +284,7 @@ void hpfs_write_if_changed(struct inode 
 
 void hpfs_delete_inode(struct inode *inode)
 {
+       truncate_inode_pages(&inode->i_data, 0);
        lock_kernel();
        hpfs_remove_fnode(inode->i_sb, inode->i_ino);
        unlock_kernel();
diff -puN fs/jffs/inode-v23.c~update-filesystems-for-new-delete_inode-behavior 
fs/jffs/inode-v23.c
--- 25/fs/jffs/inode-v23.c~update-filesystems-for-new-delete_inode-behavior     
Wed Aug 17 14:29:05 2005
+++ 25-akpm/fs/jffs/inode-v23.c Wed Aug 17 14:29:05 2005
@@ -1747,6 +1747,7 @@ jffs_delete_inode(struct inode *inode)
        D3(printk("jffs_delete_inode(): inode->i_ino == %lu\n",
                  inode->i_ino));
 
+       truncate_inode_pages(&inode->i_data, 0);
        lock_kernel();
        inode->i_size = 0;
        inode->i_blocks = 0;
diff -puN fs/jfs/inode.c~update-filesystems-for-new-delete_inode-behavior 
fs/jfs/inode.c
--- 25/fs/jfs/inode.c~update-filesystems-for-new-delete_inode-behavior  Wed Aug 
17 14:29:05 2005
+++ 25-akpm/fs/jfs/inode.c      Wed Aug 17 14:29:05 2005
@@ -128,6 +128,8 @@ void jfs_delete_inode(struct inode *inod
 {
        jfs_info("In jfs_delete_inode, inode = 0x%p", inode);
 
+       truncate_inode_pages(&inode->i_data, 0);
+
        if (test_cflag(COMMIT_Freewmap, inode))
                jfs_free_zero_link(inode);
 
diff -puN fs/minix/inode.c~update-filesystems-for-new-delete_inode-behavior 
fs/minix/inode.c
--- 25/fs/minix/inode.c~update-filesystems-for-new-delete_inode-behavior        
Wed Aug 17 14:29:05 2005
+++ 25-akpm/fs/minix/inode.c    Wed Aug 17 14:29:05 2005
@@ -24,6 +24,7 @@ static int minix_remount (struct super_b
 
 static void minix_delete_inode(struct inode *inode)
 {
+       truncate_inode_pages(&inode->i_data, 0);
        inode->i_size = 0;
        minix_truncate(inode);
        minix_free_inode(inode);
diff -puN fs/ncpfs/inode.c~update-filesystems-for-new-delete_inode-behavior 
fs/ncpfs/inode.c
--- 25/fs/ncpfs/inode.c~update-filesystems-for-new-delete_inode-behavior        
Wed Aug 17 14:29:05 2005
+++ 25-akpm/fs/ncpfs/inode.c    Wed Aug 17 14:29:05 2005
@@ -286,6 +286,8 @@ ncp_iget(struct super_block *sb, struct 
 static void
 ncp_delete_inode(struct inode *inode)
 {
+       truncate_inode_pages(&inode->i_data, 0);
+
        if (S_ISDIR(inode->i_mode)) {
                DDPRINTK("ncp_delete_inode: put directory %ld\n", inode->i_ino);
        }
diff -puN fs/nfs/inode.c~update-filesystems-for-new-delete_inode-behavior 
fs/nfs/inode.c
--- 25/fs/nfs/inode.c~update-filesystems-for-new-delete_inode-behavior  Wed Aug 
17 14:29:05 2005
+++ 25-akpm/fs/nfs/inode.c      Wed Aug 17 14:29:05 2005
@@ -146,6 +146,8 @@ nfs_delete_inode(struct inode * inode)
 {
        dprintk("NFS: delete_inode(%s/%ld)\n", inode->i_sb->s_id, inode->i_ino);
 
+       truncate_inode_pages(&inode->i_data, 0);
+
        nfs_wb_all(inode);
        /*
         * The following should never happen...
diff -puN fs/proc/inode.c~update-filesystems-for-new-delete_inode-behavior 
fs/proc/inode.c
--- 25/fs/proc/inode.c~update-filesystems-for-new-delete_inode-behavior Wed Aug 
17 14:29:05 2005
+++ 25-akpm/fs/proc/inode.c     Wed Aug 17 14:29:05 2005
@@ -60,6 +60,8 @@ static void proc_delete_inode(struct ino
        struct proc_dir_entry *de;
        struct task_struct *tsk;
 
+       truncate_inode_pages(&inode->i_data, 0);
+
        /* Let go of any associated process */
        tsk = PROC_I(inode)->task;
        if (tsk)
diff -puN fs/qnx4/inode.c~update-filesystems-for-new-delete_inode-behavior 
fs/qnx4/inode.c
--- 25/fs/qnx4/inode.c~update-filesystems-for-new-delete_inode-behavior Wed Aug 
17 14:29:05 2005
+++ 25-akpm/fs/qnx4/inode.c     Wed Aug 17 14:29:05 2005
@@ -63,6 +63,7 @@ int qnx4_sync_inode(struct inode *inode)
 static void qnx4_delete_inode(struct inode *inode)
 {
        QNX4DEBUG(("qnx4: deleting inode [%lu]\n", (unsigned long) 
inode->i_ino));
+       truncate_inode_pages(&inode->i_data, 0);
        inode->i_size = 0;
        qnx4_truncate(inode);
        lock_kernel();
diff -puN fs/reiserfs/inode.c~update-filesystems-for-new-delete_inode-behavior 
fs/reiserfs/inode.c
--- 25/fs/reiserfs/inode.c~update-filesystems-for-new-delete_inode-behavior     
Wed Aug 17 14:29:05 2005
+++ 25-akpm/fs/reiserfs/inode.c Wed Aug 17 14:29:05 2005
@@ -33,6 +33,8 @@ void reiserfs_delete_inode(struct inode 
            2 * REISERFS_QUOTA_INIT_BLOCKS(inode->i_sb);
        struct reiserfs_transaction_handle th;
 
+       truncate_inode_pages(&inode->i_data, 0);
+
        reiserfs_write_lock(inode->i_sb);
 
        /* The = 0 happens when we abort creating a new inode for some reason 
like lack of space.. */
diff -puN fs/smbfs/inode.c~update-filesystems-for-new-delete_inode-behavior 
fs/smbfs/inode.c
--- 25/fs/smbfs/inode.c~update-filesystems-for-new-delete_inode-behavior        
Wed Aug 17 14:29:05 2005
+++ 25-akpm/fs/smbfs/inode.c    Wed Aug 17 14:29:05 2005
@@ -331,6 +331,7 @@ static void
 smb_delete_inode(struct inode *ino)
 {
        DEBUG1("ino=%ld\n", ino->i_ino);
+       truncate_inode_pages(&ino->i_data, 0);
        lock_kernel();
        if (smb_close(ino))
                PARANOIA("could not close inode %ld\n", ino->i_ino);
diff -puN fs/sysv/inode.c~update-filesystems-for-new-delete_inode-behavior 
fs/sysv/inode.c
--- 25/fs/sysv/inode.c~update-filesystems-for-new-delete_inode-behavior Wed Aug 
17 14:29:05 2005
+++ 25-akpm/fs/sysv/inode.c     Wed Aug 17 14:29:05 2005
@@ -292,6 +292,7 @@ int sysv_sync_inode(struct inode * inode
 
 static void sysv_delete_inode(struct inode *inode)
 {
+       truncate_inode_pages(&inode->i_data, 0);
        inode->i_size = 0;
        sysv_truncate(inode);
        lock_kernel();
diff -puN fs/udf/inode.c~update-filesystems-for-new-delete_inode-behavior 
fs/udf/inode.c
--- 25/fs/udf/inode.c~update-filesystems-for-new-delete_inode-behavior  Wed Aug 
17 14:29:05 2005
+++ 25-akpm/fs/udf/inode.c      Wed Aug 17 14:29:05 2005
@@ -87,6 +87,8 @@ static int udf_get_block(struct inode *,
  */
 void udf_delete_inode(struct inode * inode)
 {
+       truncate_inode_pages(&inode->i_data, 0);
+
        if (is_bad_inode(inode))
                goto no_delete;
 
diff -puN fs/ufs/inode.c~update-filesystems-for-new-delete_inode-behavior 
fs/ufs/inode.c
--- 25/fs/ufs/inode.c~update-filesystems-for-new-delete_inode-behavior  Wed Aug 
17 14:29:05 2005
+++ 25-akpm/fs/ufs/inode.c      Wed Aug 17 14:29:05 2005
@@ -804,6 +804,7 @@ int ufs_sync_inode (struct inode *inode)
 
 void ufs_delete_inode (struct inode * inode)
 {
+       truncate_inode_pages(&inode->i_data, 0);
        /*UFS_I(inode)->i_dtime = CURRENT_TIME;*/
        lock_kernel();
        mark_inode_dirty(inode);
diff -puN mm/shmem.c~update-filesystems-for-new-delete_inode-behavior mm/shmem.c
--- 25/mm/shmem.c~update-filesystems-for-new-delete_inode-behavior      Wed Aug 
17 14:29:05 2005
+++ 25-akpm/mm/shmem.c  Wed Aug 17 14:29:05 2005
@@ -668,6 +668,7 @@ static void shmem_delete_inode(struct in
        struct shmem_inode_info *info = SHMEM_I(inode);
 
        if (inode->i_op->truncate == shmem_truncate) {
+               truncate_inode_pages(inode->i_mapping, 0);
                shmem_unacct_size(info->flags, inode->i_size);
                inode->i_size = 0;
                shmem_truncate(inode);
_
-
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to