The patch titled writeback: fix time ordering of the per superblock dirty inode lists 3 has been added to the -mm tree. Its filename is writeback-fix-time-ordering-of-the-per-superblock-dirty-inode-lists-3.patch *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: writeback: fix time ordering of the per superblock dirty inode lists 3 From: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> While writeback is working against a dirty inode it does a check after trying to write some of the inode's pages: "did the lower layers skip some of the inode's dirty pages because they were locked (or under writeback, or whatever)" If this turns out to be true, we must move the inode back onto s_dirty and redirty it. The reason for doing this is that fsync() and friends only check the s_dirty list, and those functions want to know about those pages which were locked, so they can be waited upon and, if necessary, rewritten. Problem is, that redirtying was putting the inode onto the tail of s_dirty without updating its timestamp. This causes a violation of s_dirty ordering. Fix this by updating inode->dirtied_when when moving the inode onto s_dirty. But the code is still a bit buggy? If the inode was _already_ dirty then we don't need to move it at all. Oh well, hopefully it doesn't matter too much, as that was a redirtying, which was very recent anwyay. Cc: Mike Waychison <mikew@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- fs/fs-writeback.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff -puN fs/fs-writeback.c~writeback-fix-time-ordering-of-the-per-superblock-dirty-inode-lists-3 fs/fs-writeback.c --- a/fs/fs-writeback.c~writeback-fix-time-ordering-of-the-per-superblock-dirty-inode-lists-3 +++ a/fs/fs-writeback.c @@ -484,7 +484,7 @@ int generic_sync_sb_inodes(struct super_ * buffers. Skip this inode for now. */ check_dirty_inode(inode); - list_move(&inode->i_list, &sb->s_dirty); + redirty_tail(inode); check_dirty_inode(inode); } spin_unlock(&inode_lock); _ Patches currently in -mm which might be from akpm@xxxxxxxxxxxxxxxxxxxx are origin.patch ntfs-use-zero_user_page.patch git-acpi-export-acpi_set_cstate_limit.patch git-alsa.patch git-alsa-fixup.patch working-3d-dri-intel-agpko-resume-for-i815-chip-tidy.patch git-arm.patch git-avr32.patch git-dvb-fixup.patch cinergyt2-fix-file-release-handler.patch i2c-add-driver-for-dallas-ds1682-elapsed-time-recorder.patch git-gfs2-nmw.patch git-hid-fixup.patch git-ieee1394.patch git-leds.patch git-leds-fixup.patch pata_acpi-restore-driver-vs-libata-clean-up-sff-init-mess-fix.patch git-mips-fixup.patch fix-race-condition-about-network-device-name-fix.patch git-battery.patch git-nfs-server-cluster-locking-api-fixup.patch git-ocfs2.patch git-parisc.patch fix-gregkh-pci-pci-remove-the-broken-pci_multithread_probe-option.patch git-pciseg.patch scsi-fix-config_scsi_wait_scan=m.patch git-block-fixup.patch git-unionfs.patch auerswald-fix-file-release-handler.patch git-wireless.patch git-wireless-fixup.patch i386-add-support-for-picopower-irq-router.patch x86_64-extract-helper-function-from-e820_register_active_regions.patch mmconfig-x86_64-i386-insert-unclaimed-mmconfig-resources-fix.patch git-newsetup-fixup.patch xfs-clean-up-shrinker-games.patch remove-slab_ctor_constructor-fix.patch change-zonelist-order-v6-zonelist-fix.patch lazy-freeing-of-memory-through-madv_free.patch add-__gfp_movable-for-callers-to-flag-allocations-from-high-memory-that-may-be-migrated.patch group-short-lived-and-reclaimable-kernel-allocations-use-slab_account_reclaim-to-determine-when-__gfp_reclaimable-should-be-used-fix.patch bias-the-location-of-pages-freed-for-min_free_kbytes-in-the-same-max_order_nr_pages-blocks.patch mm-merge-populate-and-nopage-into-fault-fixes-nonlinear.patch mm-merge-nopfn-into-fault.patch maps2-move-the-page-walker-code-to-lib.patch maps2-add-proc-pid-pagemap-interface.patch freezer-fix-kthread_create-vs-freezer-theoretical-race.patch alpha-support-graphics-on-non-zero-pci-domains-fix.patch cache-pipe-buf-page-address-for-non-highmem-arch.patch use-write_trylock_irqsave-in-ptrace_attach-fix.patch add-lzo1x-compression-support-to-the-kernel-fix.patch use-no_pci_devices-in-pci-searchc.patch introduce-boot-based-time-fix.patch use-boot-based-time-for-process-start-time-and-boot-time-fix.patch add-argv_split-fix.patch add-common-orderly_poweroff-fix.patch crc7-support-fix.patch revoke-wire-up-i386-system-calls.patch lguest-the-host-code.patch reiser4.patch integrity-new-hooks.patch integrity-evm-as-an-integrity-service-provider.patch integrity-ima-integrity_measure-support.patch integrity-tpm-internal-kernel-interface.patch w1-build-fix.patch check_dirty_inode_list.patch writeback-fix-time-ordering-of-the-per-superblock-dirty-inode-lists.patch writeback-fix-time-ordering-of-the-per-superblock-dirty-inode-lists-2.patch writeback-fix-time-ordering-of-the-per-superblock-dirty-inode-lists-3.patch writeback-fix-time-ordering-of-the-per-superblock-dirty-inode-lists-4.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html