fuse: move 'devices' member from fuse_conn to fuse_chan

This belongs in the transport layer.

Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
This commit is contained in:
Miklos Szeredi 2026-03-17 13:09:20 +01:00
parent d8189630a1
commit 4e0de84063
5 changed files with 17 additions and 12 deletions

View File

@ -343,13 +343,20 @@ void fuse_chan_release(struct fuse_chan *fch)
void fuse_chan_free(struct fuse_chan *fch)
{
WARN_ON(!list_empty(&fch->devices));
kfree(fch);
}
EXPORT_SYMBOL_GPL(fuse_chan_free);
struct fuse_chan *fuse_chan_new(void)
{
return kzalloc_obj(struct fuse_chan);
struct fuse_chan *fch = kzalloc_obj(struct fuse_chan);
if (!fch)
return NULL;
INIT_LIST_HEAD(&fch->devices);
return fch;
}
EXPORT_SYMBOL_GPL(fuse_chan_new);
@ -418,7 +425,7 @@ void fuse_dev_install(struct fuse_dev *fud, struct fuse_conn *fc)
*/
fc->connected = 0;
} else {
list_add_tail(&fud->entry, &fc->devices);
list_add_tail(&fud->entry, &fc->chan->devices);
fuse_conn_get(fc);
}
spin_unlock(&fc->lock);
@ -2051,7 +2058,7 @@ static void fuse_resend(struct fuse_conn *fc)
return;
}
list_for_each_entry(fud, &fc->devices, entry) {
list_for_each_entry(fud, &fc->chan->devices, entry) {
struct fuse_pqueue *fpq = &fud->pq;
spin_lock(&fpq->lock);
@ -2532,7 +2539,7 @@ void fuse_abort_conn(struct fuse_conn *fc)
spin_unlock(&fc->bg_lock);
fuse_set_initialized(fc);
list_for_each_entry(fud, &fc->devices, entry) {
list_for_each_entry(fud, &fc->chan->devices, entry) {
struct fuse_pqueue *fpq = &fud->pq;
spin_lock(&fpq->lock);
@ -2618,7 +2625,7 @@ int fuse_dev_release(struct inode *inode, struct file *file)
spin_lock(&fc->lock);
list_del(&fud->entry);
/* Are we the last open device? */
last = list_empty(&fc->devices);
last = list_empty(&fc->chan->devices);
spin_unlock(&fc->lock);
if (last) {

View File

@ -90,6 +90,9 @@ struct fuse_iqueue {
struct fuse_chan {
/** Input queue */
struct fuse_iqueue iq;
/** List of device instances belonging to this connection */
struct list_head devices;
};
#define FUSE_PQ_HASH_BITS 8
@ -125,7 +128,7 @@ struct fuse_dev {
/** Processing queue */
struct fuse_pqueue pq;
/** list entry on fc->devices */
/** list entry on fch->devices */
struct list_head entry;
};

View File

@ -835,9 +835,6 @@ struct fuse_conn {
*/
struct rw_semaphore killsb;
/** List of device instances belonging to this connection */
struct list_head devices;
#ifdef CONFIG_FUSE_DAX
/* Dax mode */
enum fuse_dax_mode dax_mode;

View File

@ -982,7 +982,6 @@ void fuse_conn_init(struct fuse_conn *fc, struct fuse_mount *fm,
init_waitqueue_head(&fc->blocked_waitq);
INIT_LIST_HEAD(&fc->bg_queue);
INIT_LIST_HEAD(&fc->entry);
INIT_LIST_HEAD(&fc->devices);
atomic_set(&fc->num_waiting, 0);
fc->max_background = FUSE_DEFAULT_MAX_BACKGROUND;
fc->congestion_threshold = FUSE_DEFAULT_CONGESTION_THRESHOLD;
@ -1543,7 +1542,6 @@ EXPORT_SYMBOL_GPL(fuse_send_init);
void fuse_free_conn(struct fuse_conn *fc)
{
WARN_ON(!list_empty(&fc->devices));
kfree(fc);
}
EXPORT_SYMBOL_GPL(fuse_free_conn);

View File

@ -94,7 +94,7 @@ static void fuse_check_timeout(struct work_struct *work)
spin_unlock(&fc->lock);
return;
}
list_for_each_entry(fud, &fc->devices, entry) {
list_for_each_entry(fud, &fc->chan->devices, entry) {
fpq = &fud->pq;
spin_lock(&fpq->lock);
if (fuse_request_expired(fc, &fpq->io) ||