diff -urNp linux-2.6.23.1/fs/ntfs/attrib.c linux-2.6.23.1.new/fs/ntfs/attrib.c
--- linux-2.6.23.1/fs/ntfs/attrib.c	2007-10-12 17:43:44.000000000 +0100
+++ linux-2.6.23.1.new/fs/ntfs/attrib.c	2007-10-29 13:21:43.000000000 +0000
@@ -102,11 +102,19 @@ int ntfs_map_runlist_nolock(ntfs_inode *
 	if (!ctx) {
 		ctx_is_temporary = ctx_needs_reset = true;
 		m = map_mft_record(base_ni);
-		if (IS_ERR(m))
+		if (IS_ERR(m)) {
+			ntfs_error(ni->vol->sb, "map_mft_record() failed for "
+					"inode 0x%lx, vcn 0x%llx, error %d.",
+					ni->mft_no, (unsigned long long)vcn,
+					PTR_ERR(m));
 			return PTR_ERR(m);
+		}
 		ctx = ntfs_attr_get_search_ctx(base_ni, m);
 		if (unlikely(!ctx)) {
 			err = -ENOMEM;
+			ntfs_error(ni->vol->sb, "Failed to allocate search "
+					"context for inode 0x%lx, vcn 0x%llx.",
+					ni->mft_no, (unsigned long long)vcn);
 			goto err_out;
 		}
 	} else {
@@ -165,6 +173,10 @@ int ntfs_map_runlist_nolock(ntfs_inode *
 		err = ntfs_attr_lookup(ni->type, ni->name, ni->name_len,
 				CASE_SENSITIVE, vcn, NULL, 0, ctx);
 		if (unlikely(err)) {
+			ntfs_error(ni->vol->sb, "ntfs_attr_lookup() failed for "
+					"inode 0x%lx, vcn 0x%llx, error %d.",
+					ni->mft_no, (unsigned long long)vcn,
+					err);
 			if (err == -ENOENT)
 				err = -EIO;
 			goto err_out;
@@ -183,13 +195,21 @@ int ntfs_map_runlist_nolock(ntfs_inode *
 		end_vcn = sle64_to_cpu(a->data.non_resident.allocated_size) >>
 				ni->vol->cluster_size_bits;
 	if (unlikely(vcn >= end_vcn)) {
+		ntfs_error(ni->vol->sb, "vcn 0x%llx >= end_vcn 0x%llx for "
+				"inode 0x%lx, error %d.",
+				(unsigned long long)vcn,
+				(unsigned long long)end_vcn, ni->mft_no, err);
 		err = -ENOENT;
 		goto err_out;
 	}
 	rl = ntfs_mapping_pairs_decompress(ni->vol, a, ni->runlist.rl);
-	if (IS_ERR(rl))
+	if (IS_ERR(rl)) {
 		err = PTR_ERR(rl);
-	else
+		ntfs_error(ni->vol->sb, "ntfs_mapping_pairs_decompress() "
+				"failed for inode 0x%lx, vcn 0x%llx, error "
+				"%d.", ni->mft_no, (unsigned long long)vcn,
+				err);
+	} else
 		ni->runlist.rl = rl;
 err_out:
 	if (ctx_is_temporary) {
