staging: lustre: llite: handle inactive OSTs better in statfs
authorAndreas Dilger <andreas.dilger@intel.com>
Sun, 29 Jan 2017 00:04:47 +0000 (19:04 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 3 Feb 2017 12:01:37 +0000 (13:01 +0100)
Change the order of checks for inactive OSCs in lov_prep_statfs_set()
so that administratively disabled OSTs do not generate any output in
"lfs df" at all, to avoid needlessly cluttering the output.

Enable the lazystatfs mount option by default, so that "df" does not
hang when an OST is temporarily offline.

Signed-off-by: Andreas Dilger <andreas.dilger@intel.com>
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-7759
Reviewed-on: http://review.whamcloud.com/19195
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
Signed-off-by: James Simmons <jsimmons@infradead.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/lustre/lustre/llite/llite_lib.c
drivers/staging/lustre/lustre/lov/lov_request.c

index 769b307b8334f576650172415db68f09bf6977f3..0a87058bb691fdf9b083023c9d8b2e7b1e68e35e 100644 (file)
@@ -103,6 +103,7 @@ static struct ll_sb_info *ll_init_sbi(struct super_block *sb)
        sbi->ll_flags |= LL_SBI_CHECKSUM;
 
        sbi->ll_flags |= LL_SBI_LRU_RESIZE;
+       sbi->ll_flags |= LL_SBI_LAZYSTATFS;
 
        for (i = 0; i <= LL_PROCESS_HIST_MAX; i++) {
                spin_lock_init(&sbi->ll_rw_extents_info.pp_extents[i].
index d43cc88ae6418da45d1b84d13f46b90478d4e727..3a747913fb4f5a6ef591f270aa4a1ab778fc0f7e 100644 (file)
@@ -344,9 +344,6 @@ int lov_prep_statfs_set(struct obd_device *obd, struct obd_info *oinfo,
                        continue;
                }
 
-               if (!lov->lov_tgts[i]->ltd_active)
-                       lov_check_and_wait_active(lov, i);
-
                /* skip targets that have been explicitly disabled by the
                 * administrator
                 */
@@ -355,6 +352,9 @@ int lov_prep_statfs_set(struct obd_device *obd, struct obd_info *oinfo,
                        continue;
                }
 
+               if (!lov->lov_tgts[i]->ltd_active)
+                       lov_check_and_wait_active(lov, i);
+
                req = kzalloc(sizeof(*req), GFP_NOFS);
                if (!req) {
                        rc = -ENOMEM;