From 36b8f621f9be6a11dc3e0a5774c7c67c6517fa36 Mon Sep 17 00:00:00 2001 From: Yura Pakhuchiy Date: Sun, 23 Sep 2007 00:36:18 +0300 Subject: [PATCH] libntfs: Sync and warn about not closed inodes in ntfs_umount --- libntfs/volume.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/libntfs/volume.c b/libntfs/volume.c index 24fb9369..6d1064ae 100644 --- a/libntfs/volume.c +++ b/libntfs/volume.c @@ -97,6 +97,30 @@ ntfs_volume *ntfs_volume_alloc(void) */ static void __ntfs_volume_release(ntfs_volume *v) { + struct list_head *pos, *tmp; + int i; + + /* Sync and print error about not detached inodes. */ + for (i = 0; i < NTFS_INODE_CACHE_SIZE; i++) + list_for_each_safe(pos, tmp, &v->inode_cache[i]) { + ntfs_inode *ni = + list_entry(pos, ntfs_inode, list_entry); + + switch (ni->mft_no) { + case FILE_Volume: + case FILE_Bitmap: + case FILE_MFT: + case FILE_MFTMirr: + if (ni->nr_references == 1) + continue; + break; + } + + ntfs_log_error("%s(): Inode %llu still have %d " + "references.\n", __FUNCTION__, + ni->mft_no, ni->nr_references); + ntfs_inode_sync(ni); + } /* * Clear the dirty bit if it was not set before we mounted and this is * not a forensic mount.