dax: convert to bitmask for flags
authorDan Williams <dan.j.williams@intel.com>
Wed, 28 Jun 2017 00:59:28 +0000 (17:59 -0700)
committerDan Williams <dan.j.williams@intel.com>
Thu, 29 Jun 2017 16:29:49 +0000 (09:29 -0700)
In preparation for adding more flags, convert the existing flag to a
bit-flag.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/dax/super.c

index 9e0160b950d702a75863779c7e54d4d40581760b..8bf71195921b50b975494323b2e019efbfbd83c6 100644 (file)
@@ -116,13 +116,18 @@ int __bdev_dax_supported(struct super_block *sb, int blocksize)
 EXPORT_SYMBOL_GPL(__bdev_dax_supported);
 #endif
 
+enum dax_device_flags {
+       /* !alive + rcu grace period == no new operations / mappings */
+       DAXDEV_ALIVE,
+};
+
 /**
  * struct dax_device - anchor object for dax services
  * @inode: core vfs
  * @cdev: optional character interface for "device dax"
  * @host: optional name for lookups where the device path is not available
  * @private: dax driver private data
- * @alive: !alive + rcu grace period == no new operations / mappings
+ * @flags: state and boolean properties
  */
 struct dax_device {
        struct hlist_node list;
@@ -130,7 +135,7 @@ struct dax_device {
        struct cdev cdev;
        const char *host;
        void *private;
-       bool alive;
+       unsigned long flags;
        const struct dax_operations *ops;
 };
 
@@ -197,7 +202,7 @@ EXPORT_SYMBOL_GPL(dax_flush);
 bool dax_alive(struct dax_device *dax_dev)
 {
        lockdep_assert_held(&dax_srcu);
-       return dax_dev->alive;
+       return test_bit(DAXDEV_ALIVE, &dax_dev->flags);
 }
 EXPORT_SYMBOL_GPL(dax_alive);
 
@@ -217,7 +222,7 @@ void kill_dax(struct dax_device *dax_dev)
        if (!dax_dev)
                return;
 
-       dax_dev->alive = false;
+       clear_bit(DAXDEV_ALIVE, &dax_dev->flags);
 
        synchronize_srcu(&dax_srcu);
 
@@ -257,7 +262,7 @@ static void dax_destroy_inode(struct inode *inode)
 {
        struct dax_device *dax_dev = to_dax_dev(inode);
 
-       WARN_ONCE(dax_dev->alive,
+       WARN_ONCE(test_bit(DAXDEV_ALIVE, &dax_dev->flags),
                        "kill_dax() must be called before final iput()\n");
        call_rcu(&inode->i_rcu, dax_i_callback);
 }
@@ -309,7 +314,7 @@ static struct dax_device *dax_dev_get(dev_t devt)
 
        dax_dev = to_dax_dev(inode);
        if (inode->i_state & I_NEW) {
-               dax_dev->alive = true;
+               set_bit(DAXDEV_ALIVE, &dax_dev->flags);
                inode->i_cdev = &dax_dev->cdev;
                inode->i_mode = S_IFCHR;
                inode->i_flags = S_DAX;