perf tools: Pass build_id object to dso__build_id_equal()
[linux-2.6-microblaze.git] / fs / exfat / dir.c
index 119abf0..573659b 100644 (file)
@@ -470,7 +470,7 @@ int exfat_init_dir_entry(struct inode *inode, struct exfat_chain *p_dir,
                        &ep->dentry.file.access_date,
                        NULL);
 
-       exfat_update_bh(sb, bh, IS_DIRSYNC(inode));
+       exfat_update_bh(bh, IS_DIRSYNC(inode));
        brelse(bh);
 
        ep = exfat_get_dentry(sb, p_dir, entry + 1, &bh, &sector);
@@ -480,7 +480,7 @@ int exfat_init_dir_entry(struct inode *inode, struct exfat_chain *p_dir,
        exfat_init_stream_entry(ep,
                (type == TYPE_FILE) ? ALLOC_FAT_CHAIN : ALLOC_NO_FAT_CHAIN,
                start_clu, size);
-       exfat_update_bh(sb, bh, IS_DIRSYNC(inode));
+       exfat_update_bh(bh, IS_DIRSYNC(inode));
        brelse(bh);
 
        return 0;
@@ -516,7 +516,7 @@ int exfat_update_dir_chksum(struct inode *inode, struct exfat_chain *p_dir,
        }
 
        fep->dentry.file.checksum = cpu_to_le16(chksum);
-       exfat_update_bh(sb, fbh, IS_DIRSYNC(inode));
+       exfat_update_bh(fbh, IS_DIRSYNC(inode));
 release_fbh:
        brelse(fbh);
        return ret;
@@ -538,7 +538,7 @@ int exfat_init_ext_entry(struct inode *inode, struct exfat_chain *p_dir,
                return -EIO;
 
        ep->dentry.file.num_ext = (unsigned char)(num_entries - 1);
-       exfat_update_bh(sb, bh, sync);
+       exfat_update_bh(bh, sync);
        brelse(bh);
 
        ep = exfat_get_dentry(sb, p_dir, entry + 1, &bh, &sector);
@@ -547,7 +547,7 @@ int exfat_init_ext_entry(struct inode *inode, struct exfat_chain *p_dir,
 
        ep->dentry.stream.name_len = p_uniname->name_len;
        ep->dentry.stream.name_hash = cpu_to_le16(p_uniname->name_hash);
-       exfat_update_bh(sb, bh, sync);
+       exfat_update_bh(bh, sync);
        brelse(bh);
 
        for (i = EXFAT_FIRST_CLUSTER; i < num_entries; i++) {
@@ -556,7 +556,7 @@ int exfat_init_ext_entry(struct inode *inode, struct exfat_chain *p_dir,
                        return -EIO;
 
                exfat_init_name_entry(ep, uniname);
-               exfat_update_bh(sb, bh, sync);
+               exfat_update_bh(bh, sync);
                brelse(bh);
                uniname += EXFAT_FILE_NAME_LEN;
        }
@@ -580,7 +580,7 @@ int exfat_remove_entries(struct inode *inode, struct exfat_chain *p_dir,
                        return -EIO;
 
                exfat_set_entry_type(ep, TYPE_DELETED);
-               exfat_update_bh(sb, bh, IS_DIRSYNC(inode));
+               exfat_update_bh(bh, IS_DIRSYNC(inode));
                brelse(bh);
        }
 
@@ -604,16 +604,20 @@ void exfat_update_dir_chksum_with_entry_set(struct exfat_entry_set_cache *es)
        es->modified = true;
 }
 
-void exfat_free_dentry_set(struct exfat_entry_set_cache *es, int sync)
+int exfat_free_dentry_set(struct exfat_entry_set_cache *es, int sync)
 {
-       int i;
+       int i, err = 0;
 
-       for (i = 0; i < es->num_bh; i++) {
-               if (es->modified)
-                       exfat_update_bh(es->sb, es->bh[i], sync);
-               brelse(es->bh[i]);
-       }
+       if (es->modified)
+               err = exfat_update_bhs(es->bh, es->num_bh, sync);
+
+       for (i = 0; i < es->num_bh; i++)
+               if (err)
+                       bforget(es->bh[i]);
+               else
+                       brelse(es->bh[i]);
        kfree(es);
+       return err;
 }
 
 static int exfat_walk_fat_chain(struct super_block *sb,