]> git.hungrycats.org Git - linux/commitdiff
NTFS: - Add fs/ntfs/lcnalloc.h::ntfs_cluster_free_from_rl() which is a static
authorAnton Altaparmakov <aia21@cantab.net>
Thu, 30 Sep 2004 16:20:20 +0000 (17:20 +0100)
committerAnton Altaparmakov <aia21@cantab.net>
Thu, 30 Sep 2004 16:20:20 +0000 (17:20 +0100)
        inline wrapper for ntfs_cluster_free_from_rl_nolock() which takes the
        cluster bitmap lock for the duration of the call.
      - Make fs/ntfs/lcnalloc.c::ntfs_cluster_free_from_rl_nolock() not
        static and add a declaration for it to lcnalloc.h.

Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
fs/ntfs/ChangeLog
fs/ntfs/lcnalloc.c
fs/ntfs/lcnalloc.h

index 52b1dd59f06c8e3035ecfdcfe2ed63848faeb8ce..f6c31a11c20d0a345d36204ecd457e234c9849fe 100644 (file)
@@ -34,6 +34,11 @@ ToDo/Notes:
        - Add fs/ntfs/runlist.[hc]::ntfs_get_nr_significant_bytes(),
          ntfs_get_size_for_mapping_pairs(), ntfs_write_significant_bytes(),
          and ntfs_mapping_pairs_build(), adapted from libntfs.
+       - Make fs/ntfs/lcnalloc.c::ntfs_cluster_free_from_rl_nolock() not
+         static, add a declaration for it to lcnalloc.h.
+       - Add fs/ntfs/lcnalloc.h::ntfs_cluster_free_from_rl() which is a static
+         inline wrapper for ntfs_cluster_free_from_rl_nolock() which takes the
+         cluster bitmap lock for the duration of the call.
 
 2.1.19 - Many cleanups, improvements, and a minor bug fix.
 
index 748ed0d78d3bb8aa95da7f2257d5be8b645456dc..12369fdf566ada90e7c8e9c95bb3985551fcff74 100644 (file)
@@ -46,7 +46,7 @@
  * Locking: - The volume lcn bitmap must be locked for writing on entry and is
  *           left locked on return.
  */
-static int ntfs_cluster_free_from_rl_nolock(ntfs_volume *vol,
+int ntfs_cluster_free_from_rl_nolock(ntfs_volume *vol,
                const runlist_element *rl)
 {
        struct inode *lcnbmp_vi = vol->lcnbmp_ino;
index f9292e882adc5097951a364c58749bed1cab423b..b9ebb31100a1e2e33317a1b827a6f04c416fd3ae 100644 (file)
@@ -78,6 +78,34 @@ static inline s64 ntfs_cluster_free(struct inode *vi, const VCN start_vcn,
        return __ntfs_cluster_free(vi, start_vcn, count, FALSE);
 }
 
+extern int ntfs_cluster_free_from_rl_nolock(ntfs_volume *vol,
+               const runlist_element *rl);
+
+/**
+ * ntfs_cluster_free_from_rl - free clusters from runlist
+ * @vol:       mounted ntfs volume on which to free the clusters
+ * @rl:                runlist describing the clusters to free
+ *
+ * Free all the clusters described by the runlist @rl on the volume @vol.  In
+ * the case of an error being returned, at least some of the clusters were not
+ * freed.
+ *
+ * Return 0 on success and -errno on error.
+ *
+ * Locking: This function takes the volume lcn bitmap lock for writing and
+ *         modifies the bitmap contents.
+ */
+static inline int ntfs_cluster_free_from_rl(ntfs_volume *vol,
+               const runlist_element *rl)
+{
+       int ret;
+
+       down_write(&vol->lcnbmp_lock);
+       ret = ntfs_cluster_free_from_rl_nolock(vol, rl);
+       up_write(&vol->lcnbmp_lock);
+       return ret;
+}
+
 #endif /* NTFS_RW */
 
 #endif /* defined _LINUX_NTFS_LCNALLOC_H */