scoutfs: use the dlm mode/levels directly

We intend to use more of the dlm lock levels.  Let's use its modes
directly so we don't have to maintain a mental map from differently
named modes.

Signed-off-by: Zach Brown <zab@versity.com>
This commit is contained in:
Zach Brown
2017-07-08 11:56:05 -07:00
parent 8d29c82306
commit 6de2bfc1c5
5 changed files with 18 additions and 19 deletions

View File

@@ -78,7 +78,7 @@ static int invalidate_caches(struct super_block *sb, int mode,
if (ret)
return ret;
if (mode == SCOUTFS_LOCK_MODE_WRITE)
if (mode == DLM_LOCK_EX)
ret = scoutfs_item_invalidate(sb, start, end);
return ret;
@@ -121,7 +121,7 @@ static void init_scoutfs_lock(struct super_block *sb, struct scoutfs_lock *lock,
RB_CLEAR_NODE(&lock->interval_node);
lock->sb = sb;
lock->mode = SCOUTFS_LOCK_MODE_IV;
lock->mode = DLM_LOCK_IV;
INIT_DELAYED_WORK(&lock->dc_work, scoutfs_downconvert_func);
INIT_LIST_HEAD(&lock->lru_entry);
@@ -476,7 +476,7 @@ static void scoutfs_downconvert_func(struct work_struct *work)
* invalidate based on what level we're downconverting to (PR,
* NL).
*/
invalidate_caches(sb, SCOUTFS_LOCK_MODE_WRITE, lock->start, lock->end);
invalidate_caches(sb, DLM_LOCK_EX, lock->start, lock->end);
unlock_range(sb, lock);
spin_lock(&linfo->lock);
@@ -489,7 +489,7 @@ static void scoutfs_downconvert_func(struct work_struct *work)
* lock tree so in particular we have nobody in
* scoutfs_lock_range concurrently trying to acquire a lock.
*/
if (lock->mode == SCOUTFS_LOCK_MODE_IV && lock->refcnt == 1 &&
if (lock->mode == DLM_LOCK_IV && lock->refcnt == 1 &&
list_empty(&lock->lru_entry)) {
list_add_tail(&lock->lru_entry, &linfo->lru_list);
linfo->lru_nr++;

View File

@@ -25,12 +25,6 @@ struct scoutfs_lock {
struct delayed_work dc_work;
};
enum {
SCOUTFS_LOCK_MODE_IV = DLM_LOCK_IV,
SCOUTFS_LOCK_MODE_READ = DLM_LOCK_PR,
SCOUTFS_LOCK_MODE_WRITE = DLM_LOCK_EX,
};
int scoutfs_lock_range(struct super_block *sb, int mode,
struct scoutfs_key_buf *start,
struct scoutfs_key_buf *end,

View File

@@ -2083,7 +2083,7 @@ static void scoutfs_net_server_func(struct work_struct *work)
INIT_WORK(&sinf->listen_work, scoutfs_net_listen_func);
INIT_WORK(&sinf->accept_work, scoutfs_net_accept_func);
ret = scoutfs_lock_range(sb, SCOUTFS_LOCK_MODE_WRITE, &listen_key,
ret = scoutfs_lock_range(sb, DLM_LOCK_EX, &listen_key,
&listen_key, &sinf->listen_lck);
if (ret) {
kfree(sinf);

View File

@@ -284,10 +284,15 @@ DEFINE_EVENT(scoutfs_range_class, scoutfs_read_items,
TP_ARGS(sb, start, end)
);
#define lock_mode(mode) \
__print_symbolic(mode, \
{ SCOUTFS_LOCK_MODE_READ, "READ" }, \
{ SCOUTFS_LOCK_MODE_WRITE, "WRITE" })
#define lock_mode(mode) \
__print_symbolic(mode, \
{ DLM_LOCK_IV, "IV" }, \
{ DLM_LOCK_NL, "NL" }, \
{ DLM_LOCK_CR, "CR" }, \
{ DLM_LOCK_CW, "CW" }, \
{ DLM_LOCK_PR, "PR" }, \
{ DLM_LOCK_PW, "PW" }, \
{ DLM_LOCK_EX, "EX" })
DECLARE_EVENT_CLASS(scoutfs_lock_class,
TP_PROTO(struct super_block *sb, struct scoutfs_lock *lck),

View File

@@ -178,7 +178,7 @@ ssize_t scoutfs_getxattr(struct dentry *dentry, const char *name, void *buffer,
goto out;
}
ret = scoutfs_lock_range(sb, SCOUTFS_LOCK_MODE_READ, key, last, &lck);
ret = scoutfs_lock_range(sb, DLM_LOCK_PR, key, last, &lck);
if (ret)
goto out;
@@ -289,7 +289,7 @@ static int scoutfs_xattr_set(struct dentry *dentry, const char *name,
goto out;
}
ret = scoutfs_lock_range(sb, SCOUTFS_LOCK_MODE_WRITE, key, last, &lck);
ret = scoutfs_lock_range(sb, DLM_LOCK_EX, key, last, &lck);
if (ret)
goto out;
@@ -386,7 +386,7 @@ ssize_t scoutfs_listxattr(struct dentry *dentry, char *buffer, size_t size)
xkey = key->data;
xkey->name[0] = '\0';
ret = scoutfs_lock_range(sb, SCOUTFS_LOCK_MODE_READ, key, last, &lck);
ret = scoutfs_lock_range(sb, DLM_LOCK_PR, key, last, &lck);
if (ret)
goto out;
@@ -469,7 +469,7 @@ int scoutfs_xattr_drop(struct super_block *sb, u64 ino)
}
/* while we read to delete we need to writeback others */
ret = scoutfs_lock_range(sb, SCOUTFS_LOCK_MODE_WRITE, key, last, &lck);
ret = scoutfs_lock_range(sb, DLM_LOCK_EX, key, last, &lck);
if (ret)
goto out;