diff --git a/libntfs/inode.c b/libntfs/inode.c index 6bbbb819..b54b5e19 100644 --- a/libntfs/inode.c +++ b/libntfs/inode.c @@ -379,14 +379,16 @@ err_out: int ntfs_inode_sync(ntfs_inode *ni) { int err = 0; - + if (!ni) { errno = EINVAL; return -1; } + + Dprintf("%s(): Entring for inode 0x%llx.\n", __FUNCTION__, ni->mft_no); /* Write out attribute list from cache to disk. */ - if (NInoAttrListDirty(ni)) { + if (ni->nr_extents != -1 && NInoAttrListDirty(ni)) { ntfs_attr *na; na = ntfs_attr_open(ni, AT_ATTRIBUTE_LIST, 0, 0); @@ -395,6 +397,8 @@ int ntfs_inode_sync(ntfs_inode *ni) err = errno; if (err != EIO) err = EBUSY; + Dprintf("%s(): Attribute list sync failed " + "(open failed).\n", __FUNCTION__); } } else { if (na->data_size == ni->attr_list_size) { @@ -405,11 +409,18 @@ int ntfs_inode_sync(ntfs_inode *ni) err = errno; if (err != EIO) err = EBUSY; + Dprintf("%s(): Attribute list " + "sync failed (write failed).\n", + __FUNCTION__); + } } else NInoAttrListClearDirty(ni); - } else + } else { err = EIO; + Dprintf("%s(): Attribute list sync failed " + "(invalid size).\n", __FUNCTION__); + } ntfs_attr_close(na); } } @@ -423,6 +434,8 @@ int ntfs_inode_sync(ntfs_inode *ni) err = EBUSY; } NInoSetDirty(ni); + Dprintf("%s(): Base MFT record sync failed.\n", + __FUNCTION__); } } @@ -443,6 +456,8 @@ int ntfs_inode_sync(ntfs_inode *ni) err = EBUSY; } NInoSetDirty(eni); + Dprintf("%s(): Extent MFT record sync " + "failed.\n", __FUNCTION__); } } } diff --git a/libntfs/mft.c b/libntfs/mft.c index 9776b02c..e2f60950 100644 --- a/libntfs/mft.c +++ b/libntfs/mft.c @@ -1470,6 +1470,8 @@ int ntfs_mft_record_free(ntfs_volume *vol, ntfs_inode *ni) u64 mft_no; int err; u16 seq_no, old_seq_no; + + Dprintf("%s(): Entring for inode 0x%llx.\n", __FUNCTION__, ni->mft_no); if (!vol || !vol->mftbmp_na || !ni) { errno = EINVAL;