mirror of
https://github.com/versity/scoutfs.git
synced 2026-04-14 02:47:03 +00:00
Using the new interval tree code we add a tree for each lock status list to efficiently track ranged requests. Internally, most operations on a resources lock status list (granted, waiting, converting) then are turned into operations within a given range. There is no API change other than a new call, dlm_lock_range() and a new structure, 'struct dlm_key' to define our range endpoints. Keys can have arbitrary lengths and are compared via memcmp. A ranged blocking ast type is defined so that users of dlm_lock_range() can know which range they are blocking. A rudimentary test, dlmtest.ko is included. TODO: - Update userspace entry points, need to add one for new lock call - Manage backwards compatibility with network protocol Signed-off-by: Mark Fasheh <mfasheh@versity.com>
34 lines
1.3 KiB
C
34 lines
1.3 KiB
C
/******************************************************************************
|
|
*******************************************************************************
|
|
**
|
|
** Copyright (C) 2005-2010 Red Hat, Inc. All rights reserved.
|
|
**
|
|
** This copyrighted material is made available to anyone wishing to use,
|
|
** modify, copy, or redistribute it subject to the terms and conditions
|
|
** of the GNU General Public License v.2.
|
|
**
|
|
*******************************************************************************
|
|
******************************************************************************/
|
|
|
|
#ifndef __ASTD_DOT_H__
|
|
#define __ASTD_DOT_H__
|
|
|
|
void dlm_del_ast(struct dlm_lkb *lkb);
|
|
int dlm_add_lkb_callback(struct dlm_lkb *lkb, uint32_t flags, int mode,
|
|
struct dlm_range *range, int status, uint32_t sbflags,
|
|
uint64_t seq);
|
|
int dlm_rem_lkb_callback(struct dlm_ls *ls, struct dlm_lkb *lkb,
|
|
struct dlm_callback *cb, int *resid);
|
|
void dlm_add_cb(struct dlm_lkb *lkb, uint32_t flags, int mode,
|
|
struct dlm_range *range, int status, uint32_t sbflags);
|
|
|
|
void dlm_callback_work(struct work_struct *work);
|
|
int dlm_callback_start(struct dlm_ls *ls);
|
|
void dlm_callback_stop(struct dlm_ls *ls);
|
|
void dlm_callback_suspend(struct dlm_ls *ls);
|
|
void dlm_callback_resume(struct dlm_ls *ls);
|
|
|
|
#endif
|
|
|
|
|