diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-08 16:05:29 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-08 16:05:29 -0500 |
commit | 29ad0de279002f9b6a63df5ba85328f5b633b842 (patch) | |
tree | 8284c1a50ff2ecf9defca2a47f12947977c04df1 /fs/xfs/xfs_super.c | |
parent | 972b2c719990f91eb3b2310d44ef8a2d38955a14 (diff) | |
parent | 40d344ec5ee440596b1f3ae87556e20c7197757a (diff) |
Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs
* 'for-linus' of git://oss.sgi.com/xfs/xfs: (22 commits)
xfs: mark the xfssyncd workqueue as non-reentrant
xfs: simplify xfs_qm_detach_gdquots
xfs: fix acl count validation in xfs_acl_from_disk()
xfs: remove unused XBT_FORCE_SLEEP bit
xfs: remove XFS_QMOPT_DQSUSER
xfs: kill xfs_qm_idtodq
xfs: merge xfs_qm_dqinit_core into the only caller
xfs: add a xfs_dqhold helper
xfs: simplify xfs_qm_dqattach_grouphint
xfs: nest qm_dqfrlist_lock inside the dquot qlock
xfs: flatten the dquot lock ordering
xfs: implement lazy removal for the dquot freelist
xfs: remove XFS_DQ_INACTIVE
xfs: cleanup xfs_qm_dqlookup
xfs: cleanup dquot locking helpers
xfs: remove the sync_mode argument to xfs_qm_dqflush_all
xfs: remove xfs_qm_sync
xfs: make sure to really flush all dquots in xfs_qm_quotacheck
xfs: untangle SYNC_WAIT and SYNC_TRYLOCK meanings for xfs_qm_dqflush
xfs: remove the lid_size field in struct log_item_desc
...
Fix up trivial conflict in fs/xfs/xfs_sync.c
Diffstat (limited to 'fs/xfs/xfs_super.c')
-rw-r--r-- | fs/xfs/xfs_super.c | 36 |
1 files changed, 10 insertions, 26 deletions
diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index 7b7669507ee3..281961c1d81a 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c | |||
@@ -199,7 +199,6 @@ xfs_parseargs( | |||
199 | mp->m_flags |= XFS_MOUNT_BARRIER; | 199 | mp->m_flags |= XFS_MOUNT_BARRIER; |
200 | mp->m_flags |= XFS_MOUNT_COMPAT_IOSIZE; | 200 | mp->m_flags |= XFS_MOUNT_COMPAT_IOSIZE; |
201 | mp->m_flags |= XFS_MOUNT_SMALL_INUMS; | 201 | mp->m_flags |= XFS_MOUNT_SMALL_INUMS; |
202 | mp->m_flags |= XFS_MOUNT_DELAYLOG; | ||
203 | 202 | ||
204 | /* | 203 | /* |
205 | * These can be overridden by the mount option parsing. | 204 | * These can be overridden by the mount option parsing. |
@@ -353,11 +352,11 @@ xfs_parseargs( | |||
353 | mp->m_qflags |= (XFS_GQUOTA_ACCT | XFS_GQUOTA_ACTIVE); | 352 | mp->m_qflags |= (XFS_GQUOTA_ACCT | XFS_GQUOTA_ACTIVE); |
354 | mp->m_qflags &= ~XFS_OQUOTA_ENFD; | 353 | mp->m_qflags &= ~XFS_OQUOTA_ENFD; |
355 | } else if (!strcmp(this_char, MNTOPT_DELAYLOG)) { | 354 | } else if (!strcmp(this_char, MNTOPT_DELAYLOG)) { |
356 | mp->m_flags |= XFS_MOUNT_DELAYLOG; | 355 | xfs_warn(mp, |
356 | "delaylog is the default now, option is deprecated."); | ||
357 | } else if (!strcmp(this_char, MNTOPT_NODELAYLOG)) { | 357 | } else if (!strcmp(this_char, MNTOPT_NODELAYLOG)) { |
358 | mp->m_flags &= ~XFS_MOUNT_DELAYLOG; | ||
359 | xfs_warn(mp, | 358 | xfs_warn(mp, |
360 | "nodelaylog is deprecated and will be removed in Linux 3.3"); | 359 | "nodelaylog support has been removed, option is deprecated."); |
361 | } else if (!strcmp(this_char, MNTOPT_DISCARD)) { | 360 | } else if (!strcmp(this_char, MNTOPT_DISCARD)) { |
362 | mp->m_flags |= XFS_MOUNT_DISCARD; | 361 | mp->m_flags |= XFS_MOUNT_DISCARD; |
363 | } else if (!strcmp(this_char, MNTOPT_NODISCARD)) { | 362 | } else if (!strcmp(this_char, MNTOPT_NODISCARD)) { |
@@ -395,13 +394,6 @@ xfs_parseargs( | |||
395 | return EINVAL; | 394 | return EINVAL; |
396 | } | 395 | } |
397 | 396 | ||
398 | if ((mp->m_flags & XFS_MOUNT_DISCARD) && | ||
399 | !(mp->m_flags & XFS_MOUNT_DELAYLOG)) { | ||
400 | xfs_warn(mp, | ||
401 | "the discard option is incompatible with the nodelaylog option"); | ||
402 | return EINVAL; | ||
403 | } | ||
404 | |||
405 | #ifndef CONFIG_XFS_QUOTA | 397 | #ifndef CONFIG_XFS_QUOTA |
406 | if (XFS_IS_QUOTA_RUNNING(mp)) { | 398 | if (XFS_IS_QUOTA_RUNNING(mp)) { |
407 | xfs_warn(mp, "quota support not available in this kernel."); | 399 | xfs_warn(mp, "quota support not available in this kernel."); |
@@ -501,7 +493,6 @@ xfs_showargs( | |||
501 | { XFS_MOUNT_ATTR2, "," MNTOPT_ATTR2 }, | 493 | { XFS_MOUNT_ATTR2, "," MNTOPT_ATTR2 }, |
502 | { XFS_MOUNT_FILESTREAMS, "," MNTOPT_FILESTREAM }, | 494 | { XFS_MOUNT_FILESTREAMS, "," MNTOPT_FILESTREAM }, |
503 | { XFS_MOUNT_GRPID, "," MNTOPT_GRPID }, | 495 | { XFS_MOUNT_GRPID, "," MNTOPT_GRPID }, |
504 | { XFS_MOUNT_DELAYLOG, "," MNTOPT_DELAYLOG }, | ||
505 | { XFS_MOUNT_DISCARD, "," MNTOPT_DISCARD }, | 496 | { XFS_MOUNT_DISCARD, "," MNTOPT_DISCARD }, |
506 | { 0, NULL } | 497 | { 0, NULL } |
507 | }; | 498 | }; |
@@ -1014,17 +1005,10 @@ xfs_fs_sync_fs( | |||
1014 | int error; | 1005 | int error; |
1015 | 1006 | ||
1016 | /* | 1007 | /* |
1017 | * Not much we can do for the first async pass. Writing out the | 1008 | * Doing anything during the async pass would be counterproductive. |
1018 | * superblock would be counter-productive as we are going to redirty | ||
1019 | * when writing out other data and metadata (and writing out a single | ||
1020 | * block is quite fast anyway). | ||
1021 | * | ||
1022 | * Try to asynchronously kick off quota syncing at least. | ||
1023 | */ | 1009 | */ |
1024 | if (!wait) { | 1010 | if (!wait) |
1025 | xfs_qm_sync(mp, SYNC_TRYLOCK); | ||
1026 | return 0; | 1011 | return 0; |
1027 | } | ||
1028 | 1012 | ||
1029 | error = xfs_quiesce_data(mp); | 1013 | error = xfs_quiesce_data(mp); |
1030 | if (error) | 1014 | if (error) |
@@ -1621,12 +1605,12 @@ STATIC int __init | |||
1621 | xfs_init_workqueues(void) | 1605 | xfs_init_workqueues(void) |
1622 | { | 1606 | { |
1623 | /* | 1607 | /* |
1624 | * max_active is set to 8 to give enough concurency to allow | 1608 | * We never want to the same work item to run twice, reclaiming inodes |
1625 | * multiple work operations on each CPU to run. This allows multiple | 1609 | * or idling the log is not going to get any faster by multiple CPUs |
1626 | * filesystems to be running sync work concurrently, and scales with | 1610 | * competing for ressources. Use the default large max_active value |
1627 | * the number of CPUs in the system. | 1611 | * so that even lots of filesystems can perform these task in parallel. |
1628 | */ | 1612 | */ |
1629 | xfs_syncd_wq = alloc_workqueue("xfssyncd", WQ_CPU_INTENSIVE, 8); | 1613 | xfs_syncd_wq = alloc_workqueue("xfssyncd", WQ_NON_REENTRANT, 0); |
1630 | if (!xfs_syncd_wq) | 1614 | if (!xfs_syncd_wq) |
1631 | return -ENOMEM; | 1615 | return -ENOMEM; |
1632 | return 0; | 1616 | return 0; |