Skip to content

Commit

Permalink
dax: convert to bitmask for flags
Browse files Browse the repository at this point in the history
In preparation for adding more flags, convert the existing flag to a
bit-flag.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
  • Loading branch information
djbw committed Jun 29, 2017
1 parent 5d61e43 commit 9a60c3e
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions drivers/dax/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -116,21 +116,26 @@ 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;
struct inode inode;
struct cdev cdev;
const char *host;
void *private;
bool alive;
unsigned long flags;
const struct dax_operations *ops;
};

Expand Down Expand Up @@ -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);

Expand All @@ -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);

Expand Down Expand Up @@ -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);
}
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 9a60c3e

Please sign in to comment.