Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 231262
b: refs/heads/master
c: c58efdb
h: refs/heads/master
v: v3
  • Loading branch information
Dave Chinner authored and Alex Elder committed Jan 12, 2011
1 parent ad56255 commit 76f5d3b
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 13 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: eda77982729b7170bdc9e8855f0682edf322d277
refs/heads/master: c58efdb442bb49dea1d148f207560c41918c1bf4
2 changes: 1 addition & 1 deletion trunk/fs/xfs/linux-2.6/xfs_super.c
Original file line number Diff line number Diff line change
Expand Up @@ -1413,7 +1413,7 @@ xfs_fs_freeze(

xfs_save_resvblks(mp);
xfs_quiesce_attr(mp);
return -xfs_fs_log_dummy(mp, SYNC_WAIT);
return -xfs_fs_log_dummy(mp);
}

STATIC int
Expand Down
11 changes: 6 additions & 5 deletions trunk/fs/xfs/linux-2.6/xfs_sync.c
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,7 @@ xfs_quiesce_data(

/* mark the log as covered if needed */
if (xfs_log_need_covered(mp))
error2 = xfs_fs_log_dummy(mp, SYNC_WAIT);
error2 = xfs_fs_log_dummy(mp);

/* flush data-only devices */
if (mp->m_rtdev_targp)
Expand Down Expand Up @@ -503,13 +503,14 @@ xfs_sync_worker(
int error;

if (!(mp->m_flags & XFS_MOUNT_RDONLY)) {
xfs_log_force(mp, 0);
xfs_reclaim_inodes(mp, 0);
/* dgc: errors ignored here */
error = xfs_qm_sync(mp, SYNC_TRYLOCK);
if (mp->m_super->s_frozen == SB_UNFROZEN &&
xfs_log_need_covered(mp))
error = xfs_fs_log_dummy(mp, 0);
error = xfs_fs_log_dummy(mp);
else
xfs_log_force(mp, 0);
xfs_reclaim_inodes(mp, 0);
error = xfs_qm_sync(mp, SYNC_TRYLOCK);
}
mp->m_sync_seq++;
wake_up(&mp->m_wait_single_sync_task);
Expand Down
10 changes: 5 additions & 5 deletions trunk/fs/xfs/xfs_fsops.c
Original file line number Diff line number Diff line change
Expand Up @@ -612,12 +612,13 @@ xfs_reserve_blocks(
*
* We cannot use an inode here for this - that will push dirty state back up
* into the VFS and then periodic inode flushing will prevent log covering from
* making progress. Hence we log a field in the superblock instead.
* making progress. Hence we log a field in the superblock instead and use a
* synchronous transaction to ensure the superblock is immediately unpinned
* and can be written back.
*/
int
xfs_fs_log_dummy(
xfs_mount_t *mp,
int flags)
xfs_mount_t *mp)
{
xfs_trans_t *tp;
int error;
Expand All @@ -632,8 +633,7 @@ xfs_fs_log_dummy(

/* log the UUID because it is an unchanging field */
xfs_mod_sb(tp, XFS_SB_UUID);
if (flags & SYNC_WAIT)
xfs_trans_set_sync(tp);
xfs_trans_set_sync(tp);
return xfs_trans_commit(tp, 0);
}

Expand Down
2 changes: 1 addition & 1 deletion trunk/fs/xfs/xfs_fsops.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,6 @@ extern int xfs_fs_counts(xfs_mount_t *mp, xfs_fsop_counts_t *cnt);
extern int xfs_reserve_blocks(xfs_mount_t *mp, __uint64_t *inval,
xfs_fsop_resblks_t *outval);
extern int xfs_fs_goingdown(xfs_mount_t *mp, __uint32_t inflags);
extern int xfs_fs_log_dummy(xfs_mount_t *mp, int flags);
extern int xfs_fs_log_dummy(struct xfs_mount *mp);

#endif /* __XFS_FSOPS_H__ */

0 comments on commit 76f5d3b

Please sign in to comment.