Whamcloud - gitweb
Add statfs fixups to head.
authoradilger <adilger>
Fri, 5 Jul 2002 10:17:21 +0000 (10:17 +0000)
committeradilger <adilger>
Fri, 5 Jul 2002 10:17:21 +0000 (10:17 +0000)
lustre/include/linux/lustre_mds.h
lustre/llite/super.c
lustre/mdc/mdc_request.c
lustre/mds/mds_extN.c
lustre/obdfs/dir.c
lustre/ost/ost_handler.c

index 90f3e50..8e8a59f 100644 (file)
@@ -198,6 +198,7 @@ struct mds_fs_operations {
         void    (* cl_delete_inode)(struct inode *inode);
         int     (* fs_journal_data)(struct file *file);
         int     (* fs_set_last_rcvd)(struct mds_obd *mds, void *handle);
+        int     (* fs_statfs)(struct super_block *sb, struct statfs *sfs);
 };
 
 extern int mds_register_fs_type(struct mds_fs_operations *op, const char *name);
@@ -263,6 +264,14 @@ static inline ssize_t mds_fs_journal_data(struct mds_obd *mds,
         return mds->mds_fsops->fs_journal_data(file);
 }
 
+static inline int mds_fs_statfs(struct mds_obd *mds, struct statfs *sfs)
+{
+        if (mds->mds_fsops->fs_statfs)
+                return mds->mds_fsops->fs_statfs(mds->mds_sb, sfs);
+
+        return vfs_statfs(mds->mds_sb, sfs);
+}
+
 #define MDS_FSOP_UNLINK         1
 #define MDS_FSOP_RMDIR          2
 #define MDS_FSOP_RENAME         3
index f1d007e..a2825fa 100644 (file)
@@ -347,7 +347,6 @@ int ll_setattr(struct dentry *de, struct iattr *attr)
 static int ll_statfs(struct super_block *sb, struct statfs *sfs)
 {
         struct ptlrpc_request *request = NULL;
-        struct statfs obd_sfs;
         struct ll_sb_info *sbi = ll_s2sbi(sb);
         int rc;
         ENTRY;
@@ -355,25 +354,32 @@ static int ll_statfs(struct super_block *sb, struct statfs *sfs)
         memset(sfs, 0, sizeof(*sfs));
         rc = mdc_statfs(&sbi->ll_mdc_conn, sfs, &request);
         ptlrpc_req_finished(request);
-        if (rc) {
+        if (rc)
                 CERROR("obd_statfs fails: rc = %d\n", rc);
-                GOTO(out, rc);
-        }
-        CDEBUG(D_SUPER, "statfs returns blocks %ld/%ld objects %ld/%ld\n",
-               sfs->f_bavail, sfs->f_blocks, sfs->f_files,sfs->f_ffree);
+        else
+                CDEBUG(D_SUPER, "statfs shows blocks %ld/%ld objects %ld/%ld\n",
+                       sfs->f_bavail, sfs->f_blocks, sfs->f_files,sfs->f_ffree);
 
         /* temporary until mds_statfs returns statfs info for all OSTs */
-        rc = obd_statfs(&sbi->ll_osc_conn, &obd_sfs);
-        if (rc) {
-                CERROR("obd_statfs fails: rc = %d\n", rc);
-                GOTO(out, rc);
-        }
-        CDEBUG(D_SUPER, "obd_statfs returns blocks %ld/%ld\n",
-               obd_sfs.f_bavail, obd_sfs.f_blocks);
+        if (!rc) {
+                struct statfs obd_sfs;
 
-        sfs->f_bfree = obd_sfs.f_bfree;
-        sfs->f_bavail = obd_sfs.f_bavail;
-        sfs->f_blocks = obd_sfs.f_blocks;
+                rc = obd_statfs(&sbi->ll_osc_conn, &obd_sfs);
+                if (rc) {
+                        CERROR("obd_statfs fails: rc = %d\n", rc);
+                        GOTO(out, rc);
+                }
+                CDEBUG(D_SUPER, "obd_statfs returns blocks %ld/%ld, "
+                       "objects %ld/%ld\n",
+                       obd_sfs.f_bavail, obd_sfs.f_blocks,
+                       obd_sfs.f_ffree, obd_sfs.f_files);
+
+                sfs->f_bfree = obd_sfs.f_bfree;
+                sfs->f_bavail = obd_sfs.f_bavail;
+                sfs->f_blocks = obd_sfs.f_blocks;
+                if (obd_sfs.f_ffree < sfs->f_ffree)
+                        sfs->f_ffree = obd_sfs.f_ffree;
+        }
 
 out:
         RETURN(rc);
@@ -478,7 +484,7 @@ struct file_system_type lustre_lite_fs_type = {
 
 static int __init init_lustre_lite(void)
 {
-        printk(KERN_INFO "Lustre Lite 0.0.1, braam@clusterfs.com\n");
+        printk(KERN_INFO "Lustre Lite 0.0.1, info@clusterfs.com\n");
         ll_file_data_slab = kmem_cache_create("ll_file_data",
                                               sizeof(struct ll_file_data), 0,
                                                SLAB_HWCACHE_ALIGN, NULL, NULL);
@@ -493,7 +499,7 @@ static void __exit exit_lustre_lite(void)
         kmem_cache_destroy(ll_file_data_slab);
 }
 
-MODULE_AUTHOR("Peter J. Braam <braam@clusterfs.com>");
+MODULE_AUTHOR("Cluster File Systems, Inc. <info@clusterfs.com>");
 MODULE_DESCRIPTION("Lustre Lite Client File System v1.0");
 MODULE_LICENSE("GPL");
 
index 77cf635..00d6a39 100644 (file)
@@ -159,10 +159,10 @@ static int mdc_lock_callback(struct lustre_handle *lockh,
         RETURN(0);
 }
 
-int mdc_enqueue(struct lustre_handle *conn, int lock_type, struct lookup_intent *it, 
-                int lock_mode, struct inode *dir, struct dentry *de,
-                struct lustre_handle *lockh, __u64 id, char *tgt, int tgtlen,
-                void *data, int datalen)
+int mdc_enqueue(struct lustre_handle *conn, int lock_type,
+                struct lookup_intent *it, int lock_mode, struct inode *dir,
+                struct dentry *de, struct lustre_handle *lockh, __u64 id,
+                char *tgt, int tgtlen, void *data, int datalen)
 {
         struct ptlrpc_request *req;
         struct obd_device *obddev = class_conn2obd(conn);
index 55ce734..fc8da8b 100644 (file)
@@ -279,6 +279,23 @@ static int mds_extN_journal_data(struct file *filp)
         return 0;
 }
 
+/*
+ * We need to hack the return value for the free inode counts because
+ * the current EA code requires one filesystem block per inode with EAs,
+ * so it is possible to run out of blocks before we run out of inodes.
+ *
+ * This can be removed when the extN EA code is fixed.
+ */
+static int mds_extN_statfs(struct super_block *sb, struct statfs *sfs)
+{
+        int rc = vfs_statfs(sb, sfs);
+
+        if (!rc && sfs->f_bfree < sfs->f_ffree)
+                sfs->f_ffree = sfs->f_bfree;
+
+        return rc;
+}
+
 static struct mds_fs_operations mds_extN_fs_ops = {
         fs_start:               mds_extN_start,
         fs_commit:              mds_extN_commit,
@@ -290,6 +307,7 @@ static struct mds_fs_operations mds_extN_fs_ops = {
         cl_delete_inode:        clear_inode,
         fs_journal_data:        mds_extN_journal_data,
         fs_set_last_rcvd:       mds_extN_set_last_rcvd,
+        fs_statfs:              mds_extN_statfs,
 };
 
 static int __init mds_extN_init(void)
@@ -327,7 +345,7 @@ static void __exit mds_extN_exit(void)
         //rc = extN_xattr_unregister();
 }
 
-MODULE_AUTHOR("Cluster File Systems, Inc. <adilger@clusterfs.com>");
+MODULE_AUTHOR("Cluster File Systems, Inc. <info@clusterfs.com>");
 MODULE_DESCRIPTION("Lustre MDS extN Filesystem Helper v0.1");
 MODULE_LICENSE("GPL");
 
index f0a542d..80ccd2e 100644 (file)
@@ -387,7 +387,7 @@ ino_t obdfs_inode_by_name(struct inode * dir, struct dentry *dentry, int *type)
         ino_t res = 0;
         struct ext2_dir_entry_2 * de;
         struct page *page;
-        
+
         de = ext2_find_entry (dir, dentry, &page);
         if (de) {
                 res = le32_to_cpu(de->inode);
index 4f72272..207691f 100644 (file)
@@ -443,11 +443,6 @@ static int ost_handle(struct ptlrpc_request *req)
                 OBD_FAIL_RETURN(OBD_FAIL_OST_DISCONNECT_NET, 0);
                 rc = target_handle_disconnect(req);
                 break;
-        case OST_GET_INFO:
-                CDEBUG(D_INODE, "get_info\n");
-                OBD_FAIL_RETURN(OBD_FAIL_OST_GET_INFO_NET, 0);
-                rc = ost_get_info(req);
-                break;
         case OST_CREATE:
                 CDEBUG(D_INODE, "create\n");
                 OBD_FAIL_RETURN(OBD_FAIL_OST_CREATE_NET, 0);
@@ -611,7 +606,7 @@ static void __exit ost_exit(void)
         class_unregister_type(LUSTRE_OST_NAME);
 }
 
-MODULE_AUTHOR("Peter J. Braam <braam@clusterfs.com>");
+MODULE_AUTHOR("Cluster File Systems, Inc. <info@clusterfs.com>");
 MODULE_DESCRIPTION("Lustre Object Storage Target (OST) v0.01");
 MODULE_LICENSE("GPL");