smb: client: introduce DFS_CACHE_TGT_LIST()
authorPaulo Alcantara <pc@manguebit.com>
Thu, 17 Aug 2023 15:33:59 +0000 (12:33 -0300)
committerSteve French <stfrench@microsoft.com>
Sun, 20 Aug 2023 21:05:49 +0000 (16:05 -0500)
Add new helper which declares and initialises target list of a DFS
referral rather having to do both separately.

No functional changes.

Signed-off-by: Paulo Alcantara (SUSE) <pc@manguebit.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/client/connect.c
fs/smb/client/dfs.c
fs/smb/client/dfs_cache.c
fs/smb/client/dfs_cache.h

index 238538d..b3461d5 100644 (file)
@@ -453,10 +453,10 @@ static int reconnect_target_unlocked(struct TCP_Server_Info *server, struct dfs_
 
 static int reconnect_dfs_server(struct TCP_Server_Info *server)
 {
-       int rc = 0;
-       struct dfs_cache_tgt_list tl = DFS_CACHE_TGT_LIST_INIT(tl);
        struct dfs_cache_tgt_iterator *target_hint = NULL;
+       DFS_CACHE_TGT_LIST(tl);
        int num_targets = 0;
+       int rc = 0;
 
        /*
         * Determine the number of dfs targets the referral path in @cifs_sb resolves to.
index ee772c3..c837800 100644 (file)
@@ -174,7 +174,7 @@ static int __dfs_mount_share(struct cifs_mount_ctx *mnt_ctx)
        }
 
        do {
-               struct dfs_cache_tgt_list tl = DFS_CACHE_TGT_LIST_INIT(tl);
+               DFS_CACHE_TGT_LIST(tl);
 
                rc = dfs_get_referral(mnt_ctx, ref_path + 1, NULL, &tl);
                if (rc) {
@@ -426,7 +426,7 @@ static int __tree_connect_dfs_target(const unsigned int xid, struct cifs_tcon *t
        /* Try to tree connect to all dfs targets */
        for (; tit; tit = dfs_cache_get_next_tgt(tl, tit)) {
                const char *target = dfs_cache_get_tgt_name(tit);
-               struct dfs_cache_tgt_list ntl = DFS_CACHE_TGT_LIST_INIT(ntl);
+               DFS_CACHE_TGT_LIST(ntl);
 
                kfree(share);
                kfree(prefix);
@@ -520,7 +520,7 @@ int cifs_tree_connect(const unsigned int xid, struct cifs_tcon *tcon, const stru
        int rc;
        struct TCP_Server_Info *server = tcon->ses->server;
        const struct smb_version_operations *ops = server->ops;
-       struct dfs_cache_tgt_list tl = DFS_CACHE_TGT_LIST_INIT(tl);
+       DFS_CACHE_TGT_LIST(tl);
        struct cifs_sb_info *cifs_sb = NULL;
        struct super_block *sb = NULL;
        struct dfs_info3_param ref = {0};
index 33adf43..89b8af8 100644 (file)
@@ -1177,9 +1177,9 @@ static bool is_ses_good(struct cifs_ses *ses)
 /* Refresh dfs referral of tcon and mark it for reconnect if needed */
 static int __refresh_tcon(const char *path, struct cifs_ses *ses, bool force_refresh)
 {
-       struct dfs_cache_tgt_list old_tl = DFS_CACHE_TGT_LIST_INIT(old_tl);
-       struct dfs_cache_tgt_list new_tl = DFS_CACHE_TGT_LIST_INIT(new_tl);
        struct TCP_Server_Info *server = ses->server;
+       DFS_CACHE_TGT_LIST(old_tl);
+       DFS_CACHE_TGT_LIST(new_tl);
        bool needs_refresh = false;
        struct cache_entry *ce;
        unsigned int xid;
index c6d89cd..c6abc52 100644 (file)
 extern struct workqueue_struct *dfscache_wq;
 extern atomic_t dfs_cache_ttl;
 
-#define DFS_CACHE_TGT_LIST_INIT(var) { .tl_numtgts = 0, .tl_list = LIST_HEAD_INIT((var).tl_list), }
+#define DFS_CACHE_TGT_LIST_INIT(var) \
+       { .tl_numtgts = 0, .tl_list = LIST_HEAD_INIT((var).tl_list), }
+
+#define DFS_CACHE_TGT_LIST(var) \
+       struct dfs_cache_tgt_list var = DFS_CACHE_TGT_LIST_INIT(var)
 
 struct dfs_cache_tgt_list {
        int tl_numtgts;