Commit e13a73f02595c564e423bda5742fb8df4ebca455
Committed by
Nathan Scott
1 parent
1df84c930a
Exists in
master
and in
7 other branches
[XFS] Write log dummy record when freezing filesystem
SGI-PV: 945483 SGI-Modid: xfs-linux-melb:xfs-kern:202638a Signed-off-by: Christoph Hellwig <hch@sgi.com> Signed-off-by: Nathan Scott <nathans@sgi.com>
Showing 3 changed files with 29 additions and 0 deletions Side-by-side Diff
fs/xfs/xfs_fsops.c
... | ... | @@ -540,6 +540,32 @@ |
540 | 540 | return(0); |
541 | 541 | } |
542 | 542 | |
543 | +void | |
544 | +xfs_fs_log_dummy(xfs_mount_t *mp) | |
545 | +{ | |
546 | + xfs_trans_t *tp; | |
547 | + xfs_inode_t *ip; | |
548 | + | |
549 | + | |
550 | + tp = _xfs_trans_alloc(mp, XFS_TRANS_DUMMY1); | |
551 | + atomic_inc(&mp->m_active_trans); | |
552 | + if (xfs_trans_reserve(tp, 0, XFS_ICHANGE_LOG_RES(mp), 0, 0, 0)) { | |
553 | + xfs_trans_cancel(tp, 0); | |
554 | + return; | |
555 | + } | |
556 | + | |
557 | + ip = mp->m_rootip; | |
558 | + xfs_ilock(ip, XFS_ILOCK_EXCL); | |
559 | + | |
560 | + xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL); | |
561 | + xfs_trans_ihold(tp, ip); | |
562 | + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); | |
563 | + xfs_trans_set_sync(tp); | |
564 | + xfs_trans_commit(tp, 0, NULL); | |
565 | + | |
566 | + xfs_iunlock(ip, XFS_ILOCK_EXCL); | |
567 | +} | |
568 | + | |
543 | 569 | int |
544 | 570 | xfs_fs_goingdown( |
545 | 571 | xfs_mount_t *mp, |
fs/xfs/xfs_fsops.h
fs/xfs/xfs_vfsops.c
... | ... | @@ -53,6 +53,7 @@ |
53 | 53 | #include "xfs_acl.h" |
54 | 54 | #include "xfs_attr.h" |
55 | 55 | #include "xfs_clnt.h" |
56 | +#include "xfs_fsops.h" | |
56 | 57 | |
57 | 58 | STATIC int xfs_sync(bhv_desc_t *, int, cred_t *); |
58 | 59 | |
... | ... | @@ -1967,6 +1968,7 @@ |
1967 | 1968 | /* Push the superblock and write an unmount record */ |
1968 | 1969 | xfs_log_unmount_write(mp); |
1969 | 1970 | xfs_unmountfs_writesb(mp); |
1971 | + xfs_fs_log_dummy(mp); | |
1970 | 1972 | } |
1971 | 1973 | |
1972 | 1974 |