diff --git a/kmod/src/client.c b/kmod/src/client.c index 5c6a30de..642a0c5d 100644 --- a/kmod/src/client.c +++ b/kmod/src/client.c @@ -150,7 +150,7 @@ static int client_lock_response(struct super_block *sb, void *resp, unsigned int resp_len, int error, void *data) { - if (resp_len != sizeof(struct scoutfs_net_lock_grant_response)) + if (resp_len != sizeof(struct scoutfs_net_lock)) return -EINVAL; /* XXX error? */ diff --git a/kmod/src/dir.h b/kmod/src/dir.h index 1f3bd44c..b9aa5415 100644 --- a/kmod/src/dir.h +++ b/kmod/src/dir.h @@ -14,7 +14,7 @@ struct scoutfs_link_backref_entry { u64 dir_pos; u16 name_len; struct scoutfs_dirent dent; - /* the full name is allocated and stored in dent.name[0] */ + /* the full name is allocated and stored in dent.name[] */ }; int scoutfs_dir_get_backref_path(struct super_block *sb, u64 ino, u64 dir_ino, diff --git a/kmod/src/forest.c b/kmod/src/forest.c index c967c15a..9047c223 100644 --- a/kmod/src/forest.c +++ b/kmod/src/forest.c @@ -276,7 +276,6 @@ int scoutfs_forest_read_items(struct super_block *sb, scoutfs_inc_counter(sb, forest_read_items); calc_bloom_nrs(&bloom, &lock->start); - roots = lock->roots; retry: ret = scoutfs_client_get_roots(sb, &roots); if (ret) @@ -349,15 +348,9 @@ retry: ret = 0; out: if (ret == -ESTALE) { - if (memcmp(&prev_refs, &refs, sizeof(refs)) == 0) { - ret = -EIO; - goto out; - } + if (memcmp(&prev_refs, &refs, sizeof(refs)) == 0) + return -EIO; prev_refs = refs; - - ret = scoutfs_client_get_roots(sb, &roots); - if (ret) - goto out; goto retry; } diff --git a/kmod/src/format.h b/kmod/src/format.h index 70ea4ded..b67d066d 100644 --- a/kmod/src/format.h +++ b/kmod/src/format.h @@ -259,7 +259,7 @@ struct scoutfs_btree_block { __le16 mid_free_len; __u8 level; __u8 __pad[7]; - struct scoutfs_btree_item items[0]; + struct scoutfs_btree_item items[]; /* leaf blocks have a fixed size item offset hash table at the end */ }; @@ -307,7 +307,7 @@ struct scoutfs_alloc_list_block { struct scoutfs_block_ref next; __le32 start; __le32 nr; - __le64 blknos[0]; /* naturally aligned for sorting */ + __le64 blknos[]; /* naturally aligned for sorting */ }; #define SCOUTFS_ALLOC_LIST_MAX_BLOCKS \ @@ -362,7 +362,7 @@ struct scoutfs_srch_file { struct scoutfs_srch_parent { struct scoutfs_block_header hdr; - struct scoutfs_block_ref refs[0]; + struct scoutfs_block_ref refs[]; }; #define SCOUTFS_SRCH_PARENT_REFS \ @@ -377,7 +377,7 @@ struct scoutfs_srch_block { struct scoutfs_srch_entry tail; __le32 entry_nr; __le32 entry_bytes; - __u8 entries[0]; + __u8 entries[]; }; /* @@ -452,7 +452,7 @@ struct scoutfs_log_item_value { __le64 vers; __u8 flags; __u8 __pad[7]; - __u8 data[0]; + __u8 data[]; }; /* @@ -467,7 +467,7 @@ struct scoutfs_log_item_value { struct scoutfs_bloom_block { struct scoutfs_block_header hdr; __le64 total_set; - __le64 bits[0]; + __le64 bits[]; }; /* @@ -549,7 +549,7 @@ struct scoutfs_xattr { __le16 val_len; __u8 name_len; __u8 __pad[5]; - __u8 name[0]; + __u8 name[]; }; @@ -729,7 +729,7 @@ struct scoutfs_dirent { __le64 pos; __u8 type; __u8 __pad[7]; - __u8 name[0]; + __u8 name[]; }; #define SCOUTFS_NAME_LEN 255 @@ -827,7 +827,7 @@ struct scoutfs_net_header { __u8 flags; __u8 error; __u8 __pad[3]; - __u8 data[0]; + __u8 data[]; }; #define SCOUTFS_NET_FLAG_RESPONSE (1 << 0) @@ -895,15 +895,10 @@ struct scoutfs_net_lock { __u8 __pad[6]; }; -struct scoutfs_net_lock_grant_response { - struct scoutfs_net_lock nl; - struct scoutfs_net_roots roots; -}; - struct scoutfs_net_lock_recover { __le16 nr; __u8 __pad[6]; - struct scoutfs_net_lock locks[0]; + struct scoutfs_net_lock locks[]; }; #define SCOUTFS_NET_LOCK_MAX_RECOVER_NR \ diff --git a/kmod/src/ioctl.h b/kmod/src/ioctl.h index ebdc8d6d..5042edfe 100644 --- a/kmod/src/ioctl.h +++ b/kmod/src/ioctl.h @@ -163,7 +163,7 @@ struct scoutfs_ioctl_ino_path_result { __u64 dir_pos; __u16 path_bytes; __u8 _pad[6]; - __u8 path[0]; + __u8 path[]; }; /* Get a single path from the root to the given inode number */ diff --git a/kmod/src/lock.c b/kmod/src/lock.c index 189af768..10d95507 100644 --- a/kmod/src/lock.c +++ b/kmod/src/lock.c @@ -638,7 +638,6 @@ static void lock_grant_worker(struct work_struct *work) struct lock_info *linfo = container_of(work, struct lock_info, grant_work); struct super_block *sb = linfo->sb; - struct scoutfs_net_lock_grant_response *gr; struct scoutfs_net_lock *nl; struct scoutfs_lock *lock; struct scoutfs_lock *tmp; @@ -648,8 +647,7 @@ static void lock_grant_worker(struct work_struct *work) spin_lock(&linfo->lock); list_for_each_entry_safe(lock, tmp, &linfo->grant_list, grant_head) { - gr = &lock->grant_resp; - nl = &lock->grant_resp.nl; + nl = &lock->grant_nl; /* wait for reordered invalidation to finish */ if (lock->mode != nl->old_mode) @@ -667,7 +665,6 @@ static void lock_grant_worker(struct work_struct *work) lock->request_pending = 0; lock->mode = nl->new_mode; lock->write_version = le64_to_cpu(nl->write_version); - lock->roots = gr->roots; if (lock_count_match_exists(nl->new_mode, lock->waiters)) extend_grace(sb, lock); @@ -689,9 +686,8 @@ static void lock_grant_worker(struct work_struct *work) * work to process. */ int scoutfs_lock_grant_response(struct super_block *sb, - struct scoutfs_net_lock_grant_response *gr) + struct scoutfs_net_lock *nl) { - struct scoutfs_net_lock *nl = &gr->nl; DECLARE_LOCK_INFO(sb, linfo); struct scoutfs_lock *lock; @@ -705,7 +701,7 @@ int scoutfs_lock_grant_response(struct super_block *sb, trace_scoutfs_lock_grant_response(sb, lock); BUG_ON(!lock->request_pending); - lock->grant_resp = *gr; + lock->grant_nl = *nl; list_add_tail(&lock->grant_head, &linfo->grant_list); queue_grant_work(linfo); diff --git a/kmod/src/lock.h b/kmod/src/lock.h index b447df54..46dcdf96 100644 --- a/kmod/src/lock.h +++ b/kmod/src/lock.h @@ -23,7 +23,6 @@ struct scoutfs_lock { u64 refresh_gen; u64 write_version; u64 dirty_trans_seq; - struct scoutfs_net_roots roots; struct list_head lru_head; wait_queue_head_t waitq; ktime_t grace_deadline; @@ -31,7 +30,7 @@ struct scoutfs_lock { invalidate_pending:1; struct list_head grant_head; - struct scoutfs_net_lock_grant_response grant_resp; + struct scoutfs_net_lock grant_nl; struct list_head inv_head; struct scoutfs_net_lock inv_nl; u64 inv_net_id; @@ -57,7 +56,7 @@ struct scoutfs_lock_coverage { }; int scoutfs_lock_grant_response(struct super_block *sb, - struct scoutfs_net_lock_grant_response *gr); + struct scoutfs_net_lock *nl); int scoutfs_lock_invalidate_request(struct super_block *sb, u64 net_id, struct scoutfs_net_lock *nl); int scoutfs_lock_recover_request(struct super_block *sb, u64 net_id, diff --git a/kmod/src/lock_server.c b/kmod/src/lock_server.c index 0e04ac66..a2d96dbf 100644 --- a/kmod/src/lock_server.c +++ b/kmod/src/lock_server.c @@ -484,7 +484,6 @@ static int process_waiting_requests(struct super_block *sb, struct server_lock_node *snode) { DECLARE_LOCK_SERVER_INFO(sb, inf); - struct scoutfs_net_lock_grant_response gres; struct scoutfs_net_lock nl; struct client_lock_entry *req; struct client_lock_entry *req_tmp; @@ -547,11 +546,8 @@ static int process_waiting_requests(struct super_block *sb, nl.write_version = cpu_to_le64(wv); } - gres.nl = nl; - scoutfs_server_get_roots(sb, &gres.roots); - ret = scoutfs_server_lock_response(sb, req->rid, - req->net_id, &gres); + req->net_id, &nl); if (ret) goto out; diff --git a/kmod/src/net.c b/kmod/src/net.c index b323e20f..9d1fedef 100644 --- a/kmod/src/net.c +++ b/kmod/src/net.c @@ -944,7 +944,6 @@ static void scoutfs_net_listen_worker(struct work_struct *work) struct scoutfs_net_connection *acc_conn; DECLARE_WAIT_QUEUE_HEAD(waitq); struct socket *acc_sock; - LIST_HEAD(conn_list); int ret; trace_scoutfs_net_listen_work_enter(sb, 0, 0); diff --git a/kmod/src/server.c b/kmod/src/server.c index ce7840bd..6ecd8e85 100644 --- a/kmod/src/server.c +++ b/kmod/src/server.c @@ -182,7 +182,7 @@ int scoutfs_server_apply_commit(struct super_block *sb, int err) return err; } -void scoutfs_server_get_roots(struct super_block *sb, +static void get_roots(struct super_block *sb, struct scoutfs_net_roots *roots) { DECLARE_SERVER_INFO(sb, server); @@ -556,7 +556,7 @@ static int server_get_roots(struct super_block *sb, memset(&roots, 0, sizeof(roots)); ret = -EINVAL; } else { - scoutfs_server_get_roots(sb, &roots); + get_roots(sb, &roots); ret = 0; } @@ -862,13 +862,13 @@ int scoutfs_server_lock_request(struct super_block *sb, u64 rid, } int scoutfs_server_lock_response(struct super_block *sb, u64 rid, u64 id, - struct scoutfs_net_lock_grant_response *gr) + struct scoutfs_net_lock *nl) { struct server_info *server = SCOUTFS_SB(sb)->server_info; return scoutfs_net_response_node(sb, server->conn, rid, SCOUTFS_NET_CMD_LOCK, id, 0, - gr, sizeof(*gr)); + nl, sizeof(*nl)); } static bool invalid_recover(struct scoutfs_net_lock_recover *nlr, @@ -1551,7 +1551,6 @@ static void scoutfs_server_worker(struct work_struct *work) struct scoutfs_net_connection *conn = NULL; DECLARE_WAIT_QUEUE_HEAD(waitq); struct sockaddr_in sin; - LIST_HEAD(conn_list); u64 max_vers; int ret; diff --git a/kmod/src/server.h b/kmod/src/server.h index f528789e..84e25ddb 100644 --- a/kmod/src/server.h +++ b/kmod/src/server.h @@ -59,11 +59,9 @@ do { \ int scoutfs_server_lock_request(struct super_block *sb, u64 rid, struct scoutfs_net_lock *nl); int scoutfs_server_lock_response(struct super_block *sb, u64 rid, u64 id, - struct scoutfs_net_lock_grant_response *gr); + struct scoutfs_net_lock *nl); int scoutfs_server_lock_recover_request(struct super_block *sb, u64 rid, struct scoutfs_key *key); -void scoutfs_server_get_roots(struct super_block *sb, - struct scoutfs_net_roots *roots); int scoutfs_server_hold_commit(struct super_block *sb); int scoutfs_server_apply_commit(struct super_block *sb, int err);