[Ocfs2-devel] [Patch] fix bug 132 "link for directory does not change after mv subdir to another"

Ling, Xiaofeng xiaofeng.ling at intel.com
Thu Aug 19 16:23:56 CDT 2004


I guess new_dir_nlink & old_dir_nlink are orignally designed to record
the link number after changing.
But in fact, new_dir->i_nlink & old_dir->i_nlink is used directly. 
So either of the two patches below can work.

patch1
------------------------------------------------------------------------
---
Index: namei.c
===================================================================
--- namei.c (revision 1361)
+++ namei.c (working copy)
@@ -1252,8 +1257,7 @@
                ocfs2_dinode *fe;
                status = ocfs_journal_access(handle, new_dir_bh,
OCFS_JOURNAL_ACCESS_WRITE);
                fe = (ocfs2_dinode *) new_dir_bh->b_data;
-               fe->i_links_count = new_dir_nlink;
-               new_dir->i_nlink = new_dir_nlink;
+               fe->i_links_count = new_dir->i_nlink;
                status = ocfs_journal_dirty(handle, new_dir_bh);
            }
        }
@@ -1267,8 +1271,7 @@
            ocfs2_dinode *fe;
            status = ocfs_journal_access(handle, old_dir_bh,
OCFS_JOURNAL_ACCESS_WRITE);
            fe = (ocfs2_dinode *) old_dir_bh->b_data;
-           fe->i_links_count = old_dir_nlink;
-           old_dir->i_nlink = old_dir_nlink;
+           fe->i_links_count = old_dir->i_nlink;
            status = ocfs_journal_dirty(handle, old_dir_bh);
        }
    }

patch2
------------------------------------------------------------------------
---------------------------
Index: namei.c
===================================================================
--- namei.c (revision 1361)
+++ namei.c (working copy)
@@ -1230,11 +1235,11 @@
            // BAD
            goto bail;
        }
-       old_dir->i_nlink--;
+       old_dir_nlink--;
        if (new_inode) {
            new_inode->i_nlink--;
        } else {
-           new_dir->i_nlink++;
+           new_dir_nlink++;
            mark_inode_dirty(new_dir);
        }
    }
-------------------
Intel China Software Lab.
iNet: 8-752-1243
8621-52574545-1243(O)


xfling at users.sourceforge.net
Opinions are my own and don't represent those of my employer 


More information about the Ocfs2-devel mailing list