This patch set is to address long standing issues in the filesytem freeze code and to fill some functionality gaps in the API. Some minor code rearrangements are included too. The following patches are included: --- [1/9] vfs: add __iterate_supers() helper [2/9] fsfreeze: add unlocked version of thaw_super Preparatory patches to fix s_umount lockup of emergency thaw code. [3/9] fsfreeze: Prevent emergency thaw from looping infinitely Fix thaw_bdev so that it propagates the error code properly to the caller. This bug caused emergency thaw to loop infinitely. This is a forward port of a previous patch by Dave Chinner. [4/9] fsfreeze: emergency thaw will deadlock on s_umount Avoid emergency thaw deadlock on s_umount by using unlocked version of thaw_super() and __iterate_supers()i (introduced in patches 2 and 1 respectively). [5/9] xfs: switch to using super methods for fsfreeze [6/9] fsfreeze: move emergency thaw code to fs/super.c Two cleanups (based on previous patches by David Chinner): convert xfs to using superblock methods for fsfreeze and move emergency thaw code to where it belongs. [7/9] fsfreeze: freeze_super and thaw_bdev don't play well together These patches address the bdev/sb mismatch and the fact that sb level freezing does not nest correctly. For all the places that the block device interfaces are used, we need a superblock anyway so we may as well make freeze/thaw work only at the superblock level. There is one caveat (pointed out by Christoph in the discussion linked above) though: we still need to support the "feature" that we can freeze a block device that does not have a filesystem mounted yet (this can be used to prevent a filesystem mount during a dm snapshot for example). This series moves part of the nesting code to the superblock from the block device level but retains the freeze_bdev/thaw_bdev API so that we can keep the "feature" mentioned above for those who may need it, namely dm and external users (yes, block device level API is exported for external use). All the other users of the block device API are converted to work at the superblock level. [8/9] fsfreeze: add vfs ioctl to check freeze state [9/9] fsfreeze: add block device ioctl to check freeze state These ioctls can be used to by HA and monitoring software to check the freeze state of block devices and filesystems. --- In a follow-up patch set I will tackle a big outstanding problem: we allow users to umount a frozen filesystem but we have no bdev level fsfreeze API to thaw it after that. My plan is to add the bdev level API but this requires some modifications to btrfs and vfs layer that I am still working on. By the way, the approach of returning EBUSY on umount was discarded because it would break lazy umount. Changes since v3: - Include right version of the emergency thaw fix (thanks go to Josef for the heads up). - Add iterate_supers_(read/write) helpers as suggested by Eric Sandeen. - Fix typos. - Add Eric Sandeen's Reviewed-by to patches 2 and 3. Changes since v2: - Rebase on top of Jan Kara's patch set which made it upstream. - Do without the horrible "emergency" parameter as suggested by Jan Kara. - New approach to fix emergency thaw deadlock on s_umount which does locking properly. Changes since v1: - Do not break unfreezing of block devices without a mounted filesystem. - Avoid conditional locking in thaw_bdev. - Update filesystem locking documentation. -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html