tree 7c10e4182f87d00511aeb1d0583e3c09eeb807de
parent 3bd1f4a173a3445f9919c21e775de2d8b9deacf8
author Anton Altaparmakov <[EMAIL PROTECTED]> Sat, 25 Jun 2005 17:04:55 +0100
committer Anton Altaparmakov <[EMAIL PROTECTED]> Sat, 25 Jun 2005 17:04:55 +0100

NTFS: Change the runlist terminator of the newly allocated cluster(s) to
      LCN_ENOENT in ntfs_attr_make_non_resident().  Otherwise the runlist
      code gets confused.

Signed-off-by: Anton Altaparmakov <[EMAIL PROTECTED]>

 fs/ntfs/ChangeLog |    3 +++
 fs/ntfs/attrib.c  |    8 ++++++++
 2 files changed, 11 insertions(+)

diff --git a/fs/ntfs/ChangeLog b/fs/ntfs/ChangeLog
--- a/fs/ntfs/ChangeLog
+++ b/fs/ntfs/ChangeLog
@@ -132,6 +132,9 @@ ToDo/Notes:
          with a 64-bit variable and a int, i.e. 32-bit, constant.  This causes
          the higher order 32-bits of the 64-bit variable to be zeroed.  To fix
          this cast the 'const' to the same 64-bit type as 'var'.
+       - Change the runlist terminator of the newly allocated cluster(s) to
+         LCN_ENOENT in ntfs_attr_make_non_resident().  Otherwise the runlist
+         code gets confused.
 
 2.1.22 - Many bug and race fixes and error handling improvements.
 
diff --git a/fs/ntfs/attrib.c b/fs/ntfs/attrib.c
--- a/fs/ntfs/attrib.c
+++ b/fs/ntfs/attrib.c
@@ -1285,6 +1285,8 @@ int ntfs_attr_make_non_resident(ntfs_ino
        new_size = (i_size_read(vi) + vol->cluster_size - 1) &
                        ~(vol->cluster_size - 1);
        if (new_size > 0) {
+               runlist_element *rl2;
+
                /*
                 * Will need the page later and since the page lock nests
                 * outside all ntfs locks, we need to get the page now.
@@ -1304,6 +1306,12 @@ int ntfs_attr_make_non_resident(ntfs_ino
                                        err);
                        goto page_err_out;
                }
+               /* Change the runlist terminator to LCN_ENOENT. */
+               rl2 = rl;
+               while (rl2->length)
+                       rl2++;
+               BUG_ON(rl2->lcn != LCN_RL_NOT_MAPPED);
+               rl2->lcn = LCN_ENOENT;
        } else {
                rl = NULL;
                page = NULL;
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to