fs: dlm: remove deprecated code parts
authorAlexander Aring <aahringo@redhat.com>
Mon, 6 Mar 2023 20:48:11 +0000 (15:48 -0500)
committerDavid Teigland <teigland@redhat.com>
Mon, 6 Mar 2023 21:49:07 +0000 (15:49 -0600)
This patch removes code parts which was declared deprecated by
commit 6b0afc0cc3e9 ("fs: dlm: don't use deprecated timeout features by
default"). This contains the following dlm functionality:

- start a cancel of a dlm request did not complete after certain timeout:
  The current way how dlm cancellation works and interfering with other
  dlm requests triggered by the user can end in an overlapping and
  returning in -EBUSY. The most user don't handle this case and are
  unaware that DLM can return such errno in such situation. Due the
  timeout the user are mostly unaware when this happens.
- start a netlink warning messages for user space if dlm requests did
  not complete after certain timeout:
  This feature was never being built in the only known dlm user space side.
  As we are to remove the timeout cancellation feature we can directly
  remove this feature as well.

There might be the possibility to bring the timeout cancellation feature
back. However the current way of handling the -EBUSY case which is only
a software limitation and not a hardware limitation should be changed.
We minimize the current code base in DLM cancellation feature to not have
to deal with those existing features while solving the DLM cancellation
feature in general.

UAPI define DLM_LSFL_TIMEWARN is commented as deprecated and reserved
value. We should avoid at first to give it a new meaning but let
possible users still compile by keeping this define. In far future we
can give this flag a new meaning. The same for the DLM_LKF_TIMEOUT lock
request flag.

Signed-off-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: David Teigland <teigland@redhat.com>
16 files changed:
fs/dlm/Kconfig
fs/dlm/Makefile
fs/dlm/config.c
fs/dlm/config.h
fs/dlm/dlm_internal.h
fs/dlm/lock.c
fs/dlm/lock.h
fs/dlm/lockspace.c
fs/dlm/main.c
fs/dlm/netlink.c [deleted file]
fs/dlm/recoverd.c
fs/dlm/user.c
include/linux/dlm.h
include/uapi/linux/dlm.h
include/uapi/linux/dlm_netlink.h [deleted file]
include/uapi/linux/dlmconstants.h

index b3b86db..f82a495 100644 (file)
@@ -8,15 +8,6 @@ menuconfig DLM
        A general purpose distributed lock manager for kernel or userspace
        applications.
 
-config DLM_DEPRECATED_API
-       bool "DLM deprecated API"
-       depends on DLM
-       help
-       Enables deprecated DLM timeout features that will be removed in
-        later Linux kernel releases.
-
-       If you are unsure, say N.
-
 config DLM_DEBUG
        bool "DLM debugging"
        depends on DLM
index 71dab73..5a471af 100644 (file)
@@ -17,6 +17,5 @@ dlm-y :=                      ast.o \
                                requestqueue.o \
                                user.o \
                                util.o 
-dlm-$(CONFIG_DLM_DEPRECATED_API) +=    netlink.o
 dlm-$(CONFIG_DLM_DEBUG) +=     debug_fs.o
 
index 20b6070..d31319d 100644 (file)
@@ -75,9 +75,6 @@ struct dlm_cluster {
        unsigned int cl_log_info;
        unsigned int cl_protocol;
        unsigned int cl_mark;
-#ifdef CONFIG_DLM_DEPRECATED_API
-       unsigned int cl_timewarn_cs;
-#endif
        unsigned int cl_new_rsb_count;
        unsigned int cl_recover_callbacks;
        char cl_cluster_name[DLM_LOCKSPACE_LEN];
@@ -103,9 +100,6 @@ enum {
        CLUSTER_ATTR_LOG_INFO,
        CLUSTER_ATTR_PROTOCOL,
        CLUSTER_ATTR_MARK,
-#ifdef CONFIG_DLM_DEPRECATED_API
-       CLUSTER_ATTR_TIMEWARN_CS,
-#endif
        CLUSTER_ATTR_NEW_RSB_COUNT,
        CLUSTER_ATTR_RECOVER_CALLBACKS,
        CLUSTER_ATTR_CLUSTER_NAME,
@@ -226,9 +220,6 @@ CLUSTER_ATTR(log_debug, NULL);
 CLUSTER_ATTR(log_info, NULL);
 CLUSTER_ATTR(protocol, dlm_check_protocol_and_dlm_running);
 CLUSTER_ATTR(mark, NULL);
-#ifdef CONFIG_DLM_DEPRECATED_API
-CLUSTER_ATTR(timewarn_cs, dlm_check_zero);
-#endif
 CLUSTER_ATTR(new_rsb_count, NULL);
 CLUSTER_ATTR(recover_callbacks, NULL);
 
@@ -243,9 +234,6 @@ static struct configfs_attribute *cluster_attrs[] = {
        [CLUSTER_ATTR_LOG_INFO] = &cluster_attr_log_info,
        [CLUSTER_ATTR_PROTOCOL] = &cluster_attr_protocol,
        [CLUSTER_ATTR_MARK] = &cluster_attr_mark,
-#ifdef CONFIG_DLM_DEPRECATED_API
-       [CLUSTER_ATTR_TIMEWARN_CS] = &cluster_attr_timewarn_cs,
-#endif
        [CLUSTER_ATTR_NEW_RSB_COUNT] = &cluster_attr_new_rsb_count,
        [CLUSTER_ATTR_RECOVER_CALLBACKS] = &cluster_attr_recover_callbacks,
        [CLUSTER_ATTR_CLUSTER_NAME] = &cluster_attr_cluster_name,
@@ -436,9 +424,6 @@ static struct config_group *make_cluster(struct config_group *g,
        cl->cl_log_debug = dlm_config.ci_log_debug;
        cl->cl_log_info = dlm_config.ci_log_info;
        cl->cl_protocol = dlm_config.ci_protocol;
-#ifdef CONFIG_DLM_DEPRECATED_API
-       cl->cl_timewarn_cs = dlm_config.ci_timewarn_cs;
-#endif
        cl->cl_new_rsb_count = dlm_config.ci_new_rsb_count;
        cl->cl_recover_callbacks = dlm_config.ci_recover_callbacks;
        memcpy(cl->cl_cluster_name, dlm_config.ci_cluster_name,
@@ -959,9 +944,6 @@ int dlm_our_addr(struct sockaddr_storage *addr, int num)
 #define DEFAULT_LOG_INFO           1
 #define DEFAULT_PROTOCOL           DLM_PROTO_TCP
 #define DEFAULT_MARK               0
-#ifdef CONFIG_DLM_DEPRECATED_API
-#define DEFAULT_TIMEWARN_CS      500 /* 5 sec = 500 centiseconds */
-#endif
 #define DEFAULT_NEW_RSB_COUNT    128
 #define DEFAULT_RECOVER_CALLBACKS  0
 #define DEFAULT_CLUSTER_NAME      ""
@@ -977,9 +959,6 @@ struct dlm_config_info dlm_config = {
        .ci_log_info = DEFAULT_LOG_INFO,
        .ci_protocol = DEFAULT_PROTOCOL,
        .ci_mark = DEFAULT_MARK,
-#ifdef CONFIG_DLM_DEPRECATED_API
-       .ci_timewarn_cs = DEFAULT_TIMEWARN_CS,
-#endif
        .ci_new_rsb_count = DEFAULT_NEW_RSB_COUNT,
        .ci_recover_callbacks = DEFAULT_RECOVER_CALLBACKS,
        .ci_cluster_name = DEFAULT_CLUSTER_NAME
index 55c5f2c..4c91fcc 100644 (file)
@@ -37,9 +37,6 @@ struct dlm_config_info {
        int ci_log_info;
        int ci_protocol;
        int ci_mark;
-#ifdef CONFIG_DLM_DEPRECATED_API
-       int ci_timewarn_cs;
-#endif
        int ci_new_rsb_count;
        int ci_recover_callbacks;
        char ci_cluster_name[DLM_LOCKSPACE_LEN];
index 9bf7096..66863dc 100644 (file)
@@ -145,9 +145,6 @@ struct dlm_args {
        void                    (*bastfn) (void *astparam, int mode);
        int                     mode;
        struct dlm_lksb         *lksb;
-#ifdef CONFIG_DLM_DEPRECATED_API
-       unsigned long           timeout;
-#endif
 };
 
 
@@ -205,10 +202,6 @@ struct dlm_args {
 #define DLM_IFL_OVERLAP_UNLOCK  0x00080000
 #define DLM_IFL_OVERLAP_CANCEL  0x00100000
 #define DLM_IFL_ENDOFLIFE      0x00200000
-#ifdef CONFIG_DLM_DEPRECATED_API
-#define DLM_IFL_WATCH_TIMEWARN 0x00400000
-#define DLM_IFL_TIMEOUT_CANCEL 0x00800000
-#endif
 #define DLM_IFL_DEADLOCK_CANCEL        0x01000000
 #define DLM_IFL_STUB_MS                0x02000000 /* magic number for m_flags */
 
@@ -266,11 +259,6 @@ struct dlm_lkb {
        struct list_head        lkb_ownqueue;   /* list of locks for a process */
        ktime_t                 lkb_timestamp;
 
-#ifdef CONFIG_DLM_DEPRECATED_API
-       struct list_head        lkb_time_list;
-       unsigned long           lkb_timeout_cs;
-#endif
-
        spinlock_t              lkb_cb_lock;
        struct work_struct      lkb_cb_work;
        struct list_head        lkb_cb_list; /* for ls_cb_delay or proc->asts */
@@ -586,11 +574,6 @@ struct dlm_ls {
        struct mutex            ls_orphans_mutex;
        struct list_head        ls_orphans;
 
-#ifdef CONFIG_DLM_DEPRECATED_API
-       struct mutex            ls_timeout_mutex;
-       struct list_head        ls_timeout;
-#endif
-
        spinlock_t              ls_new_rsb_spin;
        int                     ls_new_rsb_count;
        struct list_head        ls_new_rsb;     /* new rsb structs */
@@ -704,9 +687,6 @@ struct dlm_ls {
 #define LSFL_RCOM_READY                5
 #define LSFL_RCOM_WAIT         6
 #define LSFL_UEVENT_WAIT       7
-#ifdef CONFIG_DLM_DEPRECATED_API
-#define LSFL_TIMEWARN          8
-#endif
 #define LSFL_CB_DELAY          9
 #define LSFL_NODIR             10
 
@@ -759,15 +739,6 @@ static inline int dlm_no_directory(struct dlm_ls *ls)
        return test_bit(LSFL_NODIR, &ls->ls_flags);
 }
 
-#ifdef CONFIG_DLM_DEPRECATED_API
-int dlm_netlink_init(void);
-void dlm_netlink_exit(void);
-void dlm_timeout_warn(struct dlm_lkb *lkb);
-#else
-static inline int dlm_netlink_init(void) { return 0; }
-static inline void dlm_netlink_exit(void) { };
-static inline void dlm_timeout_warn(struct dlm_lkb *lkb) { };
-#endif
 int dlm_plock_init(void);
 void dlm_plock_exit(void);
 
index e1adfa5..9a7679f 100644 (file)
@@ -89,7 +89,6 @@ static void __receive_convert_reply(struct dlm_rsb *r, struct dlm_lkb *lkb,
                                    struct dlm_message *ms);
 static int receive_extralen(struct dlm_message *ms);
 static void do_purge(struct dlm_ls *ls, int nodeid, int pid);
-static void del_timeout(struct dlm_lkb *lkb);
 static void toss_rsb(struct kref *kref);
 
 /*
@@ -292,19 +291,8 @@ static void queue_cast(struct dlm_rsb *r, struct dlm_lkb *lkb, int rv)
        if (is_master_copy(lkb))
                return;
 
-       del_timeout(lkb);
-
        DLM_ASSERT(lkb->lkb_lksb, dlm_print_lkb(lkb););
 
-#ifdef CONFIG_DLM_DEPRECATED_API
-       /* if the operation was a cancel, then return -DLM_ECANCEL, if a
-          timeout caused the cancel then return -ETIMEDOUT */
-       if (rv == -DLM_ECANCEL && (lkb->lkb_flags & DLM_IFL_TIMEOUT_CANCEL)) {
-               lkb->lkb_flags &= ~DLM_IFL_TIMEOUT_CANCEL;
-               rv = -ETIMEDOUT;
-       }
-#endif
-
        if (rv == -DLM_ECANCEL && (lkb->lkb_flags & DLM_IFL_DEADLOCK_CANCEL)) {
                lkb->lkb_flags &= ~DLM_IFL_DEADLOCK_CANCEL;
                rv = -EDEADLK;
@@ -1215,9 +1203,6 @@ static int _create_lkb(struct dlm_ls *ls, struct dlm_lkb **lkb_ret,
        kref_init(&lkb->lkb_ref);
        INIT_LIST_HEAD(&lkb->lkb_ownqueue);
        INIT_LIST_HEAD(&lkb->lkb_rsb_lookup);
-#ifdef CONFIG_DLM_DEPRECATED_API
-       INIT_LIST_HEAD(&lkb->lkb_time_list);
-#endif
        INIT_LIST_HEAD(&lkb->lkb_cb_list);
        INIT_LIST_HEAD(&lkb->lkb_callbacks);
        spin_lock_init(&lkb->lkb_cb_lock);
@@ -1735,133 +1720,6 @@ void dlm_scan_rsbs(struct dlm_ls *ls)
        }
 }
 
-#ifdef CONFIG_DLM_DEPRECATED_API
-static void add_timeout(struct dlm_lkb *lkb)
-{
-       struct dlm_ls *ls = lkb->lkb_resource->res_ls;
-
-       if (is_master_copy(lkb))
-               return;
-
-       if (test_bit(LSFL_TIMEWARN, &ls->ls_flags) &&
-           !(lkb->lkb_exflags & DLM_LKF_NODLCKWT)) {
-               lkb->lkb_flags |= DLM_IFL_WATCH_TIMEWARN;
-               goto add_it;
-       }
-       if (lkb->lkb_exflags & DLM_LKF_TIMEOUT)
-               goto add_it;
-       return;
-
- add_it:
-       DLM_ASSERT(list_empty(&lkb->lkb_time_list), dlm_print_lkb(lkb););
-       mutex_lock(&ls->ls_timeout_mutex);
-       hold_lkb(lkb);
-       list_add_tail(&lkb->lkb_time_list, &ls->ls_timeout);
-       mutex_unlock(&ls->ls_timeout_mutex);
-}
-
-static void del_timeout(struct dlm_lkb *lkb)
-{
-       struct dlm_ls *ls = lkb->lkb_resource->res_ls;
-
-       mutex_lock(&ls->ls_timeout_mutex);
-       if (!list_empty(&lkb->lkb_time_list)) {
-               list_del_init(&lkb->lkb_time_list);
-               unhold_lkb(lkb);
-       }
-       mutex_unlock(&ls->ls_timeout_mutex);
-}
-
-/* FIXME: is it safe to look at lkb_exflags, lkb_flags, lkb_timestamp, and
-   lkb_lksb_timeout without lock_rsb?  Note: we can't lock timeout_mutex
-   and then lock rsb because of lock ordering in add_timeout.  We may need
-   to specify some special timeout-related bits in the lkb that are just to
-   be accessed under the timeout_mutex. */
-
-void dlm_scan_timeout(struct dlm_ls *ls)
-{
-       struct dlm_rsb *r;
-       struct dlm_lkb *lkb = NULL, *iter;
-       int do_cancel, do_warn;
-       s64 wait_us;
-
-       for (;;) {
-               if (dlm_locking_stopped(ls))
-                       break;
-
-               do_cancel = 0;
-               do_warn = 0;
-               mutex_lock(&ls->ls_timeout_mutex);
-               list_for_each_entry(iter, &ls->ls_timeout, lkb_time_list) {
-
-                       wait_us = ktime_to_us(ktime_sub(ktime_get(),
-                                                       iter->lkb_timestamp));
-
-                       if ((iter->lkb_exflags & DLM_LKF_TIMEOUT) &&
-                           wait_us >= (iter->lkb_timeout_cs * 10000))
-                               do_cancel = 1;
-
-                       if ((iter->lkb_flags & DLM_IFL_WATCH_TIMEWARN) &&
-                           wait_us >= dlm_config.ci_timewarn_cs * 10000)
-                               do_warn = 1;
-
-                       if (!do_cancel && !do_warn)
-                               continue;
-                       hold_lkb(iter);
-                       lkb = iter;
-                       break;
-               }
-               mutex_unlock(&ls->ls_timeout_mutex);
-
-               if (!lkb)
-                       break;
-
-               r = lkb->lkb_resource;
-               hold_rsb(r);
-               lock_rsb(r);
-
-               if (do_warn) {
-                       /* clear flag so we only warn once */
-                       lkb->lkb_flags &= ~DLM_IFL_WATCH_TIMEWARN;
-                       if (!(lkb->lkb_exflags & DLM_LKF_TIMEOUT))
-                               del_timeout(lkb);
-                       dlm_timeout_warn(lkb);
-               }
-
-               if (do_cancel) {
-                       log_debug(ls, "timeout cancel %x node %d %s",
-                                 lkb->lkb_id, lkb->lkb_nodeid, r->res_name);
-                       lkb->lkb_flags &= ~DLM_IFL_WATCH_TIMEWARN;
-                       lkb->lkb_flags |= DLM_IFL_TIMEOUT_CANCEL;
-                       del_timeout(lkb);
-                       _cancel_lock(r, lkb);
-               }
-
-               unlock_rsb(r);
-               unhold_rsb(r);
-               dlm_put_lkb(lkb);
-       }
-}
-
-/* This is only called by dlm_recoverd, and we rely on dlm_ls_stop() stopping
-   dlm_recoverd before checking/setting ls_recover_begin. */
-
-void dlm_adjust_timeouts(struct dlm_ls *ls)
-{
-       struct dlm_lkb *lkb;
-       u64 adj_us = jiffies_to_usecs(jiffies - ls->ls_recover_begin);
-
-       ls->ls_recover_begin = 0;
-       mutex_lock(&ls->ls_timeout_mutex);
-       list_for_each_entry(lkb, &ls->ls_timeout, lkb_time_list)
-               lkb->lkb_timestamp = ktime_add_us(lkb->lkb_timestamp, adj_us);
-       mutex_unlock(&ls->ls_timeout_mutex);
-}
-#else
-static void add_timeout(struct dlm_lkb *lkb) { }
-static void del_timeout(struct dlm_lkb *lkb) { }
-#endif
-
 /* lkb is master or local copy */
 
 static void set_lvb_lock(struct dlm_rsb *r, struct dlm_lkb *lkb)
@@ -2723,20 +2581,11 @@ static void confirm_master(struct dlm_rsb *r, int error)
        }
 }
 
-#ifdef CONFIG_DLM_DEPRECATED_API
-static int set_lock_args(int mode, struct dlm_lksb *lksb, uint32_t flags,
-                        int namelen, unsigned long timeout_cs,
-                        void (*ast) (void *astparam),
-                        void *astparam,
-                        void (*bast) (void *astparam, int mode),
-                        struct dlm_args *args)
-#else
 static int set_lock_args(int mode, struct dlm_lksb *lksb, uint32_t flags,
                         int namelen, void (*ast)(void *astparam),
                         void *astparam,
                         void (*bast)(void *astparam, int mode),
                         struct dlm_args *args)
-#endif
 {
        int rv = -EINVAL;
 
@@ -2789,9 +2638,6 @@ static int set_lock_args(int mode, struct dlm_lksb *lksb, uint32_t flags,
        args->astfn = ast;
        args->astparam = astparam;
        args->bastfn = bast;
-#ifdef CONFIG_DLM_DEPRECATED_API
-       args->timeout = timeout_cs;
-#endif
        args->mode = mode;
        args->lksb = lksb;
        rv = 0;
@@ -2847,9 +2693,6 @@ static int validate_lock_args(struct dlm_ls *ls, struct dlm_lkb *lkb,
        lkb->lkb_lksb = args->lksb;
        lkb->lkb_lvbptr = args->lksb->sb_lvbptr;
        lkb->lkb_ownpid = (int) current->pid;
-#ifdef CONFIG_DLM_DEPRECATED_API
-       lkb->lkb_timeout_cs = args->timeout;
-#endif
        rv = 0;
  out:
        switch (rv) {
@@ -2934,9 +2777,6 @@ static int validate_unlock_args(struct dlm_lkb *lkb, struct dlm_args *args)
                if (is_overlap(lkb))
                        goto out;
 
-               /* don't let scand try to do a cancel */
-               del_timeout(lkb);
-
                if (lkb->lkb_flags & DLM_IFL_RESEND) {
                        lkb->lkb_flags |= DLM_IFL_OVERLAP_CANCEL;
                        rv = -EBUSY;
@@ -2975,9 +2815,6 @@ static int validate_unlock_args(struct dlm_lkb *lkb, struct dlm_args *args)
                if (is_overlap_unlock(lkb))
                        goto out;
 
-               /* don't let scand try to do a cancel */
-               del_timeout(lkb);
-
                if (lkb->lkb_flags & DLM_IFL_RESEND) {
                        lkb->lkb_flags |= DLM_IFL_OVERLAP_UNLOCK;
                        rv = -EBUSY;
@@ -3045,7 +2882,6 @@ static int do_request(struct dlm_rsb *r, struct dlm_lkb *lkb)
        if (can_be_queued(lkb)) {
                error = -EINPROGRESS;
                add_lkb(r, lkb, DLM_LKSTS_WAITING);
-               add_timeout(lkb);
                goto out;
        }
 
@@ -3114,7 +2950,6 @@ static int do_convert(struct dlm_rsb *r, struct dlm_lkb *lkb)
                error = -EINPROGRESS;
                del_lkb(r, lkb);
                add_lkb(r, lkb, DLM_LKSTS_CONVERT);
-               add_timeout(lkb);
                goto out;
        }
 
@@ -3401,13 +3236,8 @@ int dlm_lock(dlm_lockspace_t *lockspace,
 
        trace_dlm_lock_start(ls, lkb, name, namelen, mode, flags);
 
-#ifdef CONFIG_DLM_DEPRECATED_API
-       error = set_lock_args(mode, lksb, flags, namelen, 0, ast,
-                             astarg, bast, &args);
-#else
        error = set_lock_args(mode, lksb, flags, namelen, ast, astarg, bast,
                              &args);
-#endif
        if (error)
                goto out_put;
 
@@ -4454,7 +4284,6 @@ static int receive_request_reply(struct dlm_ls *ls, struct dlm_message *ms)
                        munge_altmode(lkb, ms);
                if (result) {
                        add_lkb(r, lkb, DLM_LKSTS_WAITING);
-                       add_timeout(lkb);
                } else {
                        grant_lock_pc(r, lkb, ms);
                        queue_cast(r, lkb, 0);
@@ -4541,7 +4370,6 @@ static void __receive_convert_reply(struct dlm_rsb *r, struct dlm_lkb *lkb,
                        munge_demoted(lkb);
                del_lkb(r, lkb);
                add_lkb(r, lkb, DLM_LKSTS_CONVERT);
-               add_timeout(lkb);
                break;
 
        case 0:
@@ -5708,14 +5536,8 @@ int dlm_recover_process_copy(struct dlm_ls *ls, struct dlm_rcom *rc)
        return 0;
 }
 
-#ifdef CONFIG_DLM_DEPRECATED_API
-int dlm_user_request(struct dlm_ls *ls, struct dlm_user_args *ua,
-                    int mode, uint32_t flags, void *name, unsigned int namelen,
-                    unsigned long timeout_cs)
-#else
 int dlm_user_request(struct dlm_ls *ls, struct dlm_user_args *ua,
                     int mode, uint32_t flags, void *name, unsigned int namelen)
-#endif
 {
        struct dlm_lkb *lkb;
        struct dlm_args args;
@@ -5740,13 +5562,8 @@ int dlm_user_request(struct dlm_ls *ls, struct dlm_user_args *ua,
                        goto out_put;
                }
        }
-#ifdef CONFIG_DLM_DEPRECATED_API
-       error = set_lock_args(mode, &ua->lksb, flags, namelen, timeout_cs,
-                             fake_astfn, ua, fake_bastfn, &args);
-#else
        error = set_lock_args(mode, &ua->lksb, flags, namelen, fake_astfn, ua,
                              fake_bastfn, &args);
-#endif
        if (error) {
                kfree(ua->lksb.sb_lvbptr);
                ua->lksb.sb_lvbptr = NULL;
@@ -5788,14 +5605,8 @@ int dlm_user_request(struct dlm_ls *ls, struct dlm_user_args *ua,
        return error;
 }
 
-#ifdef CONFIG_DLM_DEPRECATED_API
-int dlm_user_convert(struct dlm_ls *ls, struct dlm_user_args *ua_tmp,
-                    int mode, uint32_t flags, uint32_t lkid, char *lvb_in,
-                    unsigned long timeout_cs)
-#else
 int dlm_user_convert(struct dlm_ls *ls, struct dlm_user_args *ua_tmp,
                     int mode, uint32_t flags, uint32_t lkid, char *lvb_in)
-#endif
 {
        struct dlm_lkb *lkb;
        struct dlm_args args;
@@ -5832,13 +5643,8 @@ int dlm_user_convert(struct dlm_ls *ls, struct dlm_user_args *ua_tmp,
        ua->bastaddr = ua_tmp->bastaddr;
        ua->user_lksb = ua_tmp->user_lksb;
 
-#ifdef CONFIG_DLM_DEPRECATED_API
-       error = set_lock_args(mode, &ua->lksb, flags, 0, timeout_cs,
-                             fake_astfn, ua, fake_bastfn, &args);
-#else
        error = set_lock_args(mode, &ua->lksb, flags, 0, fake_astfn, ua,
                              fake_bastfn, &args);
-#endif
        if (error)
                goto out_put;
 
@@ -6155,7 +5961,6 @@ void dlm_clear_proc_locks(struct dlm_ls *ls, struct dlm_user_proc *proc)
                lkb = del_proc_lock(ls, proc);
                if (!lkb)
                        break;
-               del_timeout(lkb);
                if (lkb->lkb_exflags & DLM_LKF_PERSISTENT)
                        orphan_proc_lock(ls, lkb);
                else
index 40c76b5..aa5ad44 100644 (file)
@@ -25,14 +25,6 @@ void dlm_scan_rsbs(struct dlm_ls *ls);
 int dlm_lock_recovery_try(struct dlm_ls *ls);
 void dlm_unlock_recovery(struct dlm_ls *ls);
 
-#ifdef CONFIG_DLM_DEPRECATED_API
-void dlm_scan_timeout(struct dlm_ls *ls);
-void dlm_adjust_timeouts(struct dlm_ls *ls);
-#else
-static inline void dlm_scan_timeout(struct dlm_ls *ls) { }
-static inline void dlm_adjust_timeouts(struct dlm_ls *ls) { }
-#endif
-
 int dlm_master_lookup(struct dlm_ls *ls, int nodeid, char *name, int len,
                      unsigned int flags, int *r_nodeid, int *result);
 
@@ -47,19 +39,10 @@ void dlm_recover_waiters_pre(struct dlm_ls *ls);
 int dlm_recover_master_copy(struct dlm_ls *ls, struct dlm_rcom *rc);
 int dlm_recover_process_copy(struct dlm_ls *ls, struct dlm_rcom *rc);
 
-#ifdef CONFIG_DLM_DEPRECATED_API
-int dlm_user_request(struct dlm_ls *ls, struct dlm_user_args *ua, int mode,
-       uint32_t flags, void *name, unsigned int namelen,
-       unsigned long timeout_cs);
-int dlm_user_convert(struct dlm_ls *ls, struct dlm_user_args *ua_tmp,
-       int mode, uint32_t flags, uint32_t lkid, char *lvb_in,
-       unsigned long timeout_cs);
-#else
 int dlm_user_request(struct dlm_ls *ls, struct dlm_user_args *ua, int mode,
        uint32_t flags, void *name, unsigned int namelen);
 int dlm_user_convert(struct dlm_ls *ls, struct dlm_user_args *ua_tmp,
        int mode, uint32_t flags, uint32_t lkid, char *lvb_in);
-#endif
 int dlm_user_adopt_orphan(struct dlm_ls *ls, struct dlm_user_args *ua_tmp,
        int mode, uint32_t flags, void *name, unsigned int namelen,
        uint32_t *lkid);
index 7325acb..ed78513 100644 (file)
@@ -273,7 +273,6 @@ static int dlm_scand(void *data)
                        if (dlm_lock_recovery_try(ls)) {
                                ls->ls_scan_time = jiffies;
                                dlm_scan_rsbs(ls);
-                               dlm_scan_timeout(ls);
                                dlm_unlock_recovery(ls);
                        } else {
                                ls->ls_scan_time += HZ;
@@ -488,28 +487,10 @@ static int new_lockspace(const char *name, const char *cluster,
                ls->ls_ops_arg = ops_arg;
        }
 
-#ifdef CONFIG_DLM_DEPRECATED_API
-       if (flags & DLM_LSFL_TIMEWARN) {
-               pr_warn_once("===============================================================\n"
-                            "WARNING: the dlm DLM_LSFL_TIMEWARN flag is being deprecated and\n"
-                            "         will be removed in v6.2!\n"
-                            "         Inclusive DLM_LSFL_TIMEWARN define in UAPI header!\n"
-                            "===============================================================\n");
-
-               set_bit(LSFL_TIMEWARN, &ls->ls_flags);
-       }
-
-       /* ls_exflags are forced to match among nodes, and we don't
-        * need to require all nodes to have some flags set
-        */
-       ls->ls_exflags = (flags & ~(DLM_LSFL_TIMEWARN | DLM_LSFL_FS |
-                                   DLM_LSFL_NEWEXCL));
-#else
        /* ls_exflags are forced to match among nodes, and we don't
         * need to require all nodes to have some flags set
         */
        ls->ls_exflags = (flags & ~(DLM_LSFL_FS | DLM_LSFL_NEWEXCL));
-#endif
 
        size = READ_ONCE(dlm_config.ci_rsbtbl_size);
        ls->ls_rsbtbl_size = size;
@@ -537,10 +518,6 @@ static int new_lockspace(const char *name, const char *cluster,
        mutex_init(&ls->ls_waiters_mutex);
        INIT_LIST_HEAD(&ls->ls_orphans);
        mutex_init(&ls->ls_orphans_mutex);
-#ifdef CONFIG_DLM_DEPRECATED_API
-       INIT_LIST_HEAD(&ls->ls_timeout);
-       mutex_init(&ls->ls_timeout_mutex);
-#endif
 
        INIT_LIST_HEAD(&ls->ls_new_rsb);
        spin_lock_init(&ls->ls_new_rsb_spin);
index a77338b..93755f8 100644 (file)
@@ -46,20 +46,14 @@ static int __init init_dlm(void)
        if (error)
                goto out_debug;
 
-       error = dlm_netlink_init();
-       if (error)
-               goto out_user;
-
        error = dlm_plock_init();
        if (error)
-               goto out_netlink;
+               goto out_user;
 
        printk("DLM installed\n");
 
        return 0;
 
- out_netlink:
-       dlm_netlink_exit();
  out_user:
        dlm_user_exit();
  out_debug:
@@ -77,7 +71,6 @@ static int __init init_dlm(void)
 static void __exit exit_dlm(void)
 {
        dlm_plock_exit();
-       dlm_netlink_exit();
        dlm_user_exit();
        dlm_config_exit();
        dlm_memory_exit();
diff --git a/fs/dlm/netlink.c b/fs/dlm/netlink.c
deleted file mode 100644 (file)
index 4de4b86..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2007 Red Hat, Inc.  All rights reserved.
- */
-
-#include <net/genetlink.h>
-#include <linux/dlm.h>
-#include <linux/dlm_netlink.h>
-#include <linux/gfp.h>
-
-#include "dlm_internal.h"
-
-static uint32_t dlm_nl_seqnum;
-static uint32_t listener_nlportid;
-
-static struct genl_family family;
-
-static int prepare_data(u8 cmd, struct sk_buff **skbp, size_t size)
-{
-       struct sk_buff *skb;
-       void *data;
-
-       skb = genlmsg_new(size, GFP_NOFS);
-       if (!skb)
-               return -ENOMEM;
-
-       /* add the message headers */
-       data = genlmsg_put(skb, 0, dlm_nl_seqnum++, &family, 0, cmd);
-       if (!data) {
-               nlmsg_free(skb);
-               return -EINVAL;
-       }
-
-       *skbp = skb;
-       return 0;
-}
-
-static struct dlm_lock_data *mk_data(struct sk_buff *skb)
-{
-       struct nlattr *ret;
-
-       ret = nla_reserve(skb, DLM_TYPE_LOCK, sizeof(struct dlm_lock_data));
-       if (!ret)
-               return NULL;
-       return nla_data(ret);
-}
-
-static int send_data(struct sk_buff *skb)
-{
-       struct genlmsghdr *genlhdr = nlmsg_data((struct nlmsghdr *)skb->data);
-       void *data = genlmsg_data(genlhdr);
-
-       genlmsg_end(skb, data);
-
-       return genlmsg_unicast(&init_net, skb, listener_nlportid);
-}
-
-static int user_cmd(struct sk_buff *skb, struct genl_info *info)
-{
-       listener_nlportid = info->snd_portid;
-       printk("user_cmd nlpid %u\n", listener_nlportid);
-       return 0;
-}
-
-static const struct genl_small_ops dlm_nl_ops[] = {
-       {
-               .cmd    = DLM_CMD_HELLO,
-               .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
-               .doit   = user_cmd,
-       },
-};
-
-static struct genl_family family __ro_after_init = {
-       .name           = DLM_GENL_NAME,
-       .version        = DLM_GENL_VERSION,
-       .small_ops      = dlm_nl_ops,
-       .n_small_ops    = ARRAY_SIZE(dlm_nl_ops),
-       .resv_start_op  = DLM_CMD_HELLO + 1,
-       .module         = THIS_MODULE,
-};
-
-int __init dlm_netlink_init(void)
-{
-       return genl_register_family(&family);
-}
-
-void dlm_netlink_exit(void)
-{
-       genl_unregister_family(&family);
-}
-
-static void fill_data(struct dlm_lock_data *data, struct dlm_lkb *lkb)
-{
-       struct dlm_rsb *r = lkb->lkb_resource;
-
-       memset(data, 0, sizeof(struct dlm_lock_data));
-
-       data->version = DLM_LOCK_DATA_VERSION;
-       data->nodeid = lkb->lkb_nodeid;
-       data->ownpid = lkb->lkb_ownpid;
-       data->id = lkb->lkb_id;
-       data->remid = lkb->lkb_remid;
-       data->status = lkb->lkb_status;
-       data->grmode = lkb->lkb_grmode;
-       data->rqmode = lkb->lkb_rqmode;
-       if (lkb->lkb_ua)
-               data->xid = lkb->lkb_ua->xid;
-       if (r) {
-               data->lockspace_id = r->res_ls->ls_global_id;
-               data->resource_namelen = r->res_length;
-               memcpy(data->resource_name, r->res_name, r->res_length);
-       }
-}
-
-void dlm_timeout_warn(struct dlm_lkb *lkb)
-{
-       struct sk_buff *send_skb;
-       struct dlm_lock_data *data;
-       size_t size;
-       int rv;
-
-       size = nla_total_size(sizeof(struct dlm_lock_data)) +
-              nla_total_size(0); /* why this? */
-
-       rv = prepare_data(DLM_CMD_TIMEOUT, &send_skb, size);
-       if (rv < 0)
-               return;
-
-       data = mk_data(send_skb);
-       if (!data) {
-               nlmsg_free(send_skb);
-               return;
-       }
-
-       fill_data(data, lkb);
-
-       send_data(send_skb);
-}
-
index e15eb51..19da816 100644 (file)
@@ -214,8 +214,6 @@ static int ls_recover(struct dlm_ls *ls, struct dlm_recover *rv)
 
        dlm_clear_members_gone(ls);
 
-       dlm_adjust_timeouts(ls);
-
        dlm_callback_resume(ls);
 
        error = enable_locking(ls, rv->seq);
index 688a480..0951ca5 100644 (file)
@@ -259,14 +259,6 @@ static int device_user_lock(struct dlm_user_proc *proc,
                goto out;
        }
 
-#ifdef CONFIG_DLM_DEPRECATED_API
-       if (params->timeout)
-               pr_warn_once("========================================================\n"
-                            "WARNING: the lkb timeout feature is being deprecated and\n"
-                            "         will be removed in v6.2!\n"
-                            "========================================================\n");
-#endif
-
        ua = kzalloc(sizeof(struct dlm_user_args), GFP_NOFS);
        if (!ua)
                goto out;
@@ -279,16 +271,9 @@ static int device_user_lock(struct dlm_user_proc *proc,
        ua->xid = params->xid;
 
        if (params->flags & DLM_LKF_CONVERT) {
-#ifdef CONFIG_DLM_DEPRECATED_API
-               error = dlm_user_convert(ls, ua,
-                                        params->mode, params->flags,
-                                        params->lkid, params->lvb,
-                                        (unsigned long) params->timeout);
-#else
                error = dlm_user_convert(ls, ua,
                                         params->mode, params->flags,
                                         params->lkid, params->lvb);
-#endif
        } else if (params->flags & DLM_LKF_ORPHAN) {
                error = dlm_user_adopt_orphan(ls, ua,
                                         params->mode, params->flags,
@@ -297,16 +282,9 @@ static int device_user_lock(struct dlm_user_proc *proc,
                if (!error)
                        error = lkid;
        } else {
-#ifdef CONFIG_DLM_DEPRECATED_API
-               error = dlm_user_request(ls, ua,
-                                        params->mode, params->flags,
-                                        params->name, params->namelen,
-                                        (unsigned long) params->timeout);
-#else
                error = dlm_user_request(ls, ua,
                                         params->mode, params->flags,
                                         params->name, params->namelen);
-#endif
                if (!error)
                        error = ua->lksb.sb_lkid;
        }
index c6bc2b5..c58c4f7 100644 (file)
@@ -53,9 +53,6 @@ struct dlm_lockspace_ops {
  *   The dlm should not use a resource directory, but statically assign
  *   resource mastery to nodes based on the name hash that is otherwise
  *   used to select the directory node.  Must be the same on all nodes.
- * DLM_LSFL_TIMEWARN
- *   The dlm should emit netlink messages if locks have been waiting
- *   for a configurable amount of time.  (Unused.)
  * DLM_LSFL_NEWEXCL
  *   dlm_new_lockspace() should return -EEXIST if the lockspace exists.
  *
index 1923f4f..e7e905f 100644 (file)
@@ -68,6 +68,7 @@ struct dlm_lksb {
 
 /* dlm_new_lockspace() flags */
 
+/* DLM_LSFL_TIMEWARN is deprecated and reserved. DO NOT USE! */
 #define DLM_LSFL_TIMEWARN      0x00000002
 #define DLM_LSFL_NEWEXCL       0x00000008
 
diff --git a/include/uapi/linux/dlm_netlink.h b/include/uapi/linux/dlm_netlink.h
deleted file mode 100644 (file)
index 5dc3a67..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-/*
- * Copyright (C) 2007 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 _DLM_NETLINK_H
-#define _DLM_NETLINK_H
-
-#include <linux/types.h>
-#include <linux/dlmconstants.h>
-
-enum {
-       DLM_STATUS_WAITING = 1,
-       DLM_STATUS_GRANTED = 2,
-       DLM_STATUS_CONVERT = 3,
-};
-
-#define DLM_LOCK_DATA_VERSION 1
-
-struct dlm_lock_data {
-       __u16 version;
-       __u32 lockspace_id;
-       int nodeid;
-       int ownpid;
-       __u32 id;
-       __u32 remid;
-       __u64 xid;
-       __s8 status;
-       __s8 grmode;
-       __s8 rqmode;
-       unsigned long timestamp;
-       int resource_namelen;
-       char resource_name[DLM_RESNAME_MAXLEN];
-};
-
-enum {
-       DLM_CMD_UNSPEC = 0,
-       DLM_CMD_HELLO,          /* user->kernel */
-       DLM_CMD_TIMEOUT,        /* kernel->user */
-       __DLM_CMD_MAX,
-};
-
-#define DLM_CMD_MAX (__DLM_CMD_MAX - 1)
-
-enum {
-       DLM_TYPE_UNSPEC = 0,
-       DLM_TYPE_LOCK,
-       __DLM_TYPE_MAX,
-};
-
-#define DLM_TYPE_MAX (__DLM_TYPE_MAX - 1)
-
-#define DLM_GENL_VERSION 0x1
-#define DLM_GENL_NAME "DLM"
-
-#endif /* _DLM_NETLINK_H */
index a8ae47c..6ca77a6 100644 (file)
@@ -87,7 +87,6 @@
  * DLM_LKF_NODLCKWT
  *
  * Do not cancel the lock if it gets into conversion deadlock.
- * Exclude this lock from being monitored due to DLM_LSFL_TIMEWARN.
  *
  * DLM_LKF_NODLCKBLK
  *
  * Unlock the lock even if it is converting or waiting or has sublocks.
  * Only really for use by the userland device.c code.
  *
+ * DLM_LKF_TIMEOUT
+ *
+ * This value is deprecated and reserved. DO NOT USE!
+ *
  */
 
 #define DLM_LKF_NOQUEUE                0x00000001