Btrfs: Add backrefs for symbolic link inodes
authorChris Mason <chris.mason@oracle.com>
Thu, 13 Dec 2007 14:06:01 +0000 (09:06 -0500)
committerChris Mason <chris.mason@oracle.com>
Thu, 25 Sep 2008 15:03:58 +0000 (11:03 -0400)
Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/inode.c

index cefe740b6c7933e36196893632fcb07a0c434315..06d92be16805bc8ae04f7c5184850d592b765aa2 100644 (file)
@@ -404,16 +404,14 @@ static int btrfs_unlink_trans(struct btrfs_trans_handle *trans,
        ret = btrfs_delete_one_dir_name(trans, root, path, di);
 
        dentry->d_inode->i_ctime = dir->i_ctime;
-       if (!S_ISLNK(dentry->d_inode->i_mode)) {
-               ret = btrfs_del_inode_ref(trans, root, name, name_len,
-                                         dentry->d_inode->i_ino,
-                                         dentry->d_parent->d_inode->i_ino);
-               if (ret) {
-                       printk("failed to delete reference to %.*s, "
-                              "inode %lu parent %lu\n", name_len, name,
-                              dentry->d_inode->i_ino,
-                              dentry->d_parent->d_inode->i_ino);
-               }
+       ret = btrfs_del_inode_ref(trans, root, name, name_len,
+                                 dentry->d_inode->i_ino,
+                                 dentry->d_parent->d_inode->i_ino);
+       if (ret) {
+               printk("failed to delete reference to %.*s, "
+                      "inode %lu parent %lu\n", name_len, name,
+                      dentry->d_inode->i_ino,
+                      dentry->d_parent->d_inode->i_ino);
        }
 err:
        btrfs_free_path(path);
@@ -1293,13 +1291,11 @@ static int btrfs_add_link(struct btrfs_trans_handle *trans,
                                    dentry->d_parent->d_inode->i_ino,
                                    &key, btrfs_inode_type(inode));
        if (ret == 0) {
-               if (!S_ISLNK(inode->i_mode)) {
-                       ret = btrfs_insert_inode_ref(trans, root,
-                                            dentry->d_name.name,
-                                            dentry->d_name.len,
-                                            inode->i_ino,
-                                            dentry->d_parent->d_inode->i_ino);
-               }
+               ret = btrfs_insert_inode_ref(trans, root,
+                                    dentry->d_name.name,
+                                    dentry->d_name.len,
+                                    inode->i_ino,
+                                    dentry->d_parent->d_inode->i_ino);
                parent_inode = dentry->d_parent->d_inode;
                parent_inode->i_size += dentry->d_name.len * 2;
                parent_inode->i_mtime = parent_inode->i_ctime = CURRENT_TIME;