]> git.hungrycats.org Git - linux/commitdiff
NTFS: Modify fs/ntfs/aops.c::mark_ntfs_record_dirty() to no longer take the
authorAnton Altaparmakov <aia21@cantab.net>
Fri, 15 Oct 2004 11:43:34 +0000 (12:43 +0100)
committerAnton Altaparmakov <aia21@cantab.net>
Fri, 15 Oct 2004 11:43:34 +0000 (12:43 +0100)
      ntfs inode as a parameter as this is confusing and misleading and the
      ntfs inode is available via NTFS_I(page->mapping->host).
      Adapt all callers to this change.

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

index a1c774578090c574511fd751268d155eadb512c7..52670b89d938dd54313729aac31affd2520f5f5e 100644 (file)
@@ -118,6 +118,10 @@ ToDo/Notes:
          inode semaphore around the code thst sets ni->itype.index.bmp_ino to
          NULL and reorganize the code to optimize it a bit.  (Thanks to
          Christoph Hellwig for spotting this.)
+       - Modify fs/ntfs/aops.c::mark_ntfs_record_dirty() to no longer take the
+         ntfs inode as a parameter as this is confusing and misleading and the
+         needed ntfs inode is available via NTFS_I(page->mapping->host).
+         Adapt all callers to this change.
 
 2.1.20 - Fix two stupid bugs introduced in 2.1.18 release.
 
index ede1c42b8cbff48baf56764e033802045d4d18ca..bc1d88dd6e510e9e3c61015debfdeca27600c659 100644 (file)
@@ -2132,9 +2132,8 @@ struct address_space_operations ntfs_mst_aops = {
 
 /**
  * mark_ntfs_record_dirty - mark an ntfs record dirty
- * @ni:                ntfs inode containing the ntfs record to be marked dirty
  * @page:      page containing the ntfs record to mark dirty
- * @rec_start: byte offset within @page at which the ntfs record begins
+ * @ofs:       byte offset within @page at which the ntfs record begins
  *
  * If the ntfs record is the same size as the page cache page @page, set all
  * buffers in the page dirty.  Otherwise, set only the buffers in which the
@@ -2143,26 +2142,29 @@ struct address_space_operations ntfs_mst_aops = {
  * Also, set the page containing the ntfs record dirty, which also marks the
  * vfs inode the ntfs record belongs to dirty (I_DIRTY_PAGES).
  */
-void mark_ntfs_record_dirty(ntfs_inode *ni, struct page *page,
-               unsigned int rec_start) {
+void mark_ntfs_record_dirty(struct page *page, const unsigned int ofs) {
+       ntfs_inode *ni;
        struct buffer_head *bh, *head;
-       unsigned int rec_end, bh_size, bh_start, bh_end;
+       unsigned int end, bh_size, bh_ofs;
 
        BUG_ON(!page);
        BUG_ON(!page_has_buffers(page));
+       ni = NTFS_I(page->mapping->host);
+       BUG_ON(!ni);
        if (ni->itype.index.block_size == PAGE_CACHE_SIZE) {
                __set_page_dirty_buffers(page);
                return;
        }
-       rec_end = rec_start + ni->itype.index.block_size;
+       end = ofs + ni->itype.index.block_size;
        bh_size = ni->vol->sb->s_blocksize;
-       bh_start = 0;
        bh = head = page_buffers(page);
        do {
-               bh_end = bh_start + bh_size;
-               if ((bh_start >= rec_start) && (bh_end <= rec_end))
-                       set_buffer_dirty(bh);
-               bh_start = bh_end;
+               bh_ofs = bh_offset(bh);
+               if (bh_ofs + bh_size <= ofs)
+                       continue;
+               if (unlikely(bh_ofs >= end))
+                       break;
+               set_buffer_dirty(bh);
        } while ((bh = bh->b_this_page) != head);
        __set_page_dirty_nobuffers(page);
 }
index 2bdadc1d533b4c75b7d5bf0e27a8f7503ad4221f..10b23174cb5f409f72e394268a63e0a10cce9662 100644 (file)
@@ -95,8 +95,7 @@ static inline struct page *ntfs_map_page(struct address_space *mapping,
 
 #ifdef NTFS_RW
 
-extern void mark_ntfs_record_dirty(ntfs_inode *ni, struct page *page,
-               unsigned int rec_start);
+extern void mark_ntfs_record_dirty(struct page *page, const unsigned int ofs);
 
 #endif /* NTFS_RW */
 
index b8f503fa2d6e6451847323ef2efa00e947b018ee..846a489e8692b23a93fcfcb47402f735a32b1857 100644 (file)
@@ -139,8 +139,8 @@ static inline void ntfs_index_entry_mark_dirty(ntfs_index_context *ictx)
        if (ictx->is_in_root)
                mark_mft_record_dirty(ictx->actx->ntfs_ino);
        else
-               mark_ntfs_record_dirty(ictx->idx_ni, ictx->page,
-                       (u8*)ictx->ia - (u8*)page_address(ictx->page));
+               mark_ntfs_record_dirty(ictx->page,
+                               (u8*)ictx->ia - (u8*)page_address(ictx->page));
 }
 
 #endif /* NTFS_RW */
index 3f1a4443844747cebceb53cfc0e51f1ed17e65bb..f15141fbbfe6c76c48e4b717a23ed2b640583d14 100644 (file)
@@ -2513,8 +2513,8 @@ int ntfs_write_inode(struct inode *vi, int sync)
         * this function returns.
         */
        if (modified && !NInoTestSetDirty(ctx->ntfs_ino))
-               mark_ntfs_record_dirty(NTFS_I(ni->vol->mft_ino),
-                               ctx->ntfs_ino->page, ctx->ntfs_ino->page_ofs);
+               mark_ntfs_record_dirty(ctx->ntfs_ino->page,
+                               ctx->ntfs_ino->page_ofs);
        ntfs_attr_put_search_ctx(ctx);
        /* Now the access times are updated, write the base mft record. */
        if (NInoDirty(ni))
index 757effcd7066321926e38ee33b7fd7efbeb7ec0a..68cb2678cd5040fd1c2b85c3ebd15a999a16c291 100644 (file)
@@ -380,8 +380,7 @@ void __mark_mft_record_dirty(ntfs_inode *ni)
 
        ntfs_debug("Entering for inode 0x%lx.", ni->mft_no);
        BUG_ON(NInoAttr(ni));
-       mark_ntfs_record_dirty(NTFS_I(ni->vol->mft_ino), ni->page,
-                       ni->page_ofs);
+       mark_ntfs_record_dirty(ni->page, ni->page_ofs);
        /* Determine the base vfs inode and mark it dirty, too. */
        down(&ni->extent_lock);
        if (likely(ni->nr_extents >= 0))