Whamcloud - gitweb
LU-1711 mount: use OSD API to export statfs data
authorAlex Zhuravlev <bzzz@whamcloud.com>
Wed, 15 Aug 2012 09:38:22 +0000 (13:38 +0400)
committerOleg Drokin <green@whamcloud.com>
Wed, 12 Sep 2012 04:53:04 +0000 (00:53 -0400)
so that server mount points (like /mnt/ostXXX) show
valid data on any backend (ldiskfs, zfs)

Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com>
Change-Id: I6ad0546d7630769083e8aea69547a6bb3256784f
Reviewed-on: http://review.whamcloud.com/3652
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Jinshan Xiong <jinshan.xiong@whamcloud.com>
lustre/obdclass/obd_mount.c

index 368256a..33ef09d 100644 (file)
@@ -1539,12 +1539,15 @@ static void server_umount_begin(struct super_block *sb)
 static int server_statfs (struct dentry *dentry, cfs_kstatfs_t *buf)
 {
        struct super_block *sb = dentry->d_sb;
-       struct vfsmount *mnt = s2lsi(sb)->lsi_srv_mnt;
+       struct lustre_sb_info *lsi = s2lsi(sb);
+       struct obd_statfs statfs;
+       int rc;
        ENTRY;
 
-       if (mnt && mnt->mnt_sb && mnt->mnt_sb->s_op->statfs) {
-               int rc = mnt->mnt_sb->s_op->statfs(mnt->mnt_root, buf);
-               if (!rc) {
+       if (lsi->lsi_dt_dev) {
+               rc = dt_statfs(NULL, lsi->lsi_dt_dev, &statfs);
+               if (rc == 0) {
+                       statfs_unpack(buf, &statfs);
                        buf->f_type = sb->s_magic;
                        RETURN(0);
                }