This commit containers no code change:
- move p9_fid_* higher in code as p9_fid_destroy will be used
in async callback
- move p9_client_flush as it will no longer call p9_client_rpc
and can simplify forward declaration a bit later
This just simplifies the next commits to make diffs cleaner.
Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
---
net/9p/client.c | 198 ++++++++++++++++++++++++------------------------
1 file changed, 99 insertions(+), 99 deletions(-)
diff --git a/net/9p/client.c b/net/9p/client.c
index 622ec6a586ee..53ebd07c36ee 100644
--- a/net/9p/client.c
+++ b/net/9p/client.c
@@ -428,6 +428,66 @@ static void p9_tag_cleanup(struct p9_client *c)
rcu_read_unlock();
}
+static struct p9_fid *p9_fid_create(struct p9_client *clnt)
+{
+ int ret;
+ struct p9_fid *fid;
+
+ p9_debug(P9_DEBUG_FID, "clnt %p\n", clnt);
+ fid = kzalloc(sizeof(*fid), GFP_KERNEL);
+ if (!fid)
+ return NULL;
+
+ fid->mode = -1;
+ fid->uid = current_fsuid();
+ fid->clnt = clnt;
+ refcount_set(&fid->count, 1);
+
+ idr_preload(GFP_KERNEL);
+ spin_lock_irq(&clnt->lock);
+ ret = idr_alloc_u32(&clnt->fids, fid, &fid->fid, P9_NOFID - 1,
+ GFP_NOWAIT);
+ spin_unlock_irq(&clnt->lock);
+ idr_preload_end();
+ if (!ret) {
+ trace_9p_fid_ref(fid, P9_FID_REF_CREATE);
+ return fid;
+ }
+
+ kfree(fid);
+ return NULL;
+}
+
+static void p9_fid_destroy(struct p9_fid *fid)
+{
+ struct p9_client *clnt;
+ unsigned long flags;
+
+ p9_debug(P9_DEBUG_FID, "fid %d\n", fid->fid);
+ trace_9p_fid_ref(fid, P9_FID_REF_DESTROY);
+ clnt = fid->clnt;
+ spin_lock_irqsave(&clnt->lock, flags);
+ idr_remove(&clnt->fids, fid->fid);
+ spin_unlock_irqrestore(&clnt->lock, flags);
+ kfree(fid->rdir);
+ kfree(fid);
+}
+
+/* We also need to export tracepoint symbols for tracepoint_enabled() */
+EXPORT_TRACEPOINT_SYMBOL(9p_fid_ref);
+
+void do_trace_9p_fid_get(struct p9_fid *fid)
+{
+ trace_9p_fid_ref(fid, P9_FID_REF_GET);
+}
+EXPORT_SYMBOL(do_trace_9p_fid_get);
+
+void do_trace_9p_fid_put(struct p9_fid *fid)
+{
+ trace_9p_fid_ref(fid, P9_FID_REF_PUT);
+}
+EXPORT_SYMBOL(do_trace_9p_fid_put);
+
/**
* p9_client_cb - call back from transport to client
* @c: client state
@@ -570,6 +630,45 @@ static int p9_check_errors(struct p9_client *c, struct p9_req_t *req)
return err;
}
+static struct p9_req_t *p9_client_prepare_req(struct p9_client *c,
+ int8_t type, uint t_size, uint r_size,
+ const char *fmt, va_list ap)
+{
+ int err;
+ struct p9_req_t *req;
+ va_list apc;
+
+ p9_debug(P9_DEBUG_MUX, "client %p op %d\n", c, type);
+
+ /* we allow for any status other than disconnected */
+ if (c->status == Disconnected)
+ return ERR_PTR(-EIO);
+
+ /* if status is begin_disconnected we allow only clunk request */
+ if (c->status == BeginDisconnect && type != P9_TCLUNK)
+ return ERR_PTR(-EIO);
+
+ va_copy(apc, ap);
+ req = p9_tag_alloc(c, type, t_size, r_size, fmt, apc);
+ va_end(apc);
+ if (IS_ERR(req))
+ return req;
+
+ /* marshall the data */
+ p9pdu_prepare(&req->tc, req->tc.tag, type);
+ err = p9pdu_vwritef(&req->tc, c->proto_version, fmt, ap);
+ if (err)
+ goto reterr;
+ p9pdu_finalize(c, &req->tc);
+ trace_9p_client_req(c, type, req->tc.tag);
+ return req;
+reterr:
+ p9_req_put(c, req);
+ /* We have to put also the 2nd reference as it won't be used */
+ p9_req_put(c, req);
+ return ERR_PTR(err);
+}
+
static struct p9_req_t *
p9_client_rpc(struct p9_client *c, int8_t type, const char *fmt, ...);
@@ -613,45 +712,6 @@ static int p9_client_flush(struct p9_client *c, struct p9_req_t *oldreq)
return 0;
}
-static struct p9_req_t *p9_client_prepare_req(struct p9_client *c,
- int8_t type, uint t_size, uint r_size,
- const char *fmt, va_list ap)
-{
- int err;
- struct p9_req_t *req;
- va_list apc;
-
- p9_debug(P9_DEBUG_MUX, "client %p op %d\n", c, type);
-
- /* we allow for any status other than disconnected */
- if (c->status == Disconnected)
- return ERR_PTR(-EIO);
-
- /* if status is begin_disconnected we allow only clunk request */
- if (c->status == BeginDisconnect && type != P9_TCLUNK)
- return ERR_PTR(-EIO);
-
- va_copy(apc, ap);
- req = p9_tag_alloc(c, type, t_size, r_size, fmt, apc);
- va_end(apc);
- if (IS_ERR(req))
- return req;
-
- /* marshall the data */
- p9pdu_prepare(&req->tc, req->tc.tag, type);
- err = p9pdu_vwritef(&req->tc, c->proto_version, fmt, ap);
- if (err)
- goto reterr;
- p9pdu_finalize(c, &req->tc);
- trace_9p_client_req(c, type, req->tc.tag);
- return req;
-reterr:
- p9_req_put(c, req);
- /* We have to put also the 2nd reference as it won't be used */
- p9_req_put(c, req);
- return ERR_PTR(err);
-}
-
/**
* p9_client_rpc - issue a request and wait for a response
* @c: client session
@@ -838,66 +898,6 @@ static struct p9_req_t *p9_client_zc_rpc(struct p9_client *c, int8_t type,
return ERR_PTR(safe_errno(err));
}
-static struct p9_fid *p9_fid_create(struct p9_client *clnt)
-{
- int ret;
- struct p9_fid *fid;
-
- p9_debug(P9_DEBUG_FID, "clnt %p\n", clnt);
- fid = kzalloc(sizeof(*fid), GFP_KERNEL);
- if (!fid)
- return NULL;
-
- fid->mode = -1;
- fid->uid = current_fsuid();
- fid->clnt = clnt;
- refcount_set(&fid->count, 1);
-
- idr_preload(GFP_KERNEL);
- spin_lock_irq(&clnt->lock);
- ret = idr_alloc_u32(&clnt->fids, fid, &fid->fid, P9_NOFID - 1,
- GFP_NOWAIT);
- spin_unlock_irq(&clnt->lock);
- idr_preload_end();
- if (!ret) {
- trace_9p_fid_ref(fid, P9_FID_REF_CREATE);
- return fid;
- }
-
- kfree(fid);
- return NULL;
-}
-
-static void p9_fid_destroy(struct p9_fid *fid)
-{
- struct p9_client *clnt;
- unsigned long flags;
-
- p9_debug(P9_DEBUG_FID, "fid %d\n", fid->fid);
- trace_9p_fid_ref(fid, P9_FID_REF_DESTROY);
- clnt = fid->clnt;
- spin_lock_irqsave(&clnt->lock, flags);
- idr_remove(&clnt->fids, fid->fid);
- spin_unlock_irqrestore(&clnt->lock, flags);
- kfree(fid->rdir);
- kfree(fid);
-}
-
-/* We also need to export tracepoint symbols for tracepoint_enabled() */
-EXPORT_TRACEPOINT_SYMBOL(9p_fid_ref);
-
-void do_trace_9p_fid_get(struct p9_fid *fid)
-{
- trace_9p_fid_ref(fid, P9_FID_REF_GET);
-}
-EXPORT_SYMBOL(do_trace_9p_fid_get);
-
-void do_trace_9p_fid_put(struct p9_fid *fid)
-{
- trace_9p_fid_ref(fid, P9_FID_REF_PUT);
-}
-EXPORT_SYMBOL(do_trace_9p_fid_put);
-
static int p9_client_version(struct p9_client *c)
{
int err = 0;
--
2.39.1
On Saturday, February 11, 2023 8:50:19 AM CET Dominique Martinet wrote: > This commit containers no code change: > - move p9_fid_* higher in code as p9_fid_destroy will be used > in async callback I would have just added p9_fid_destroy()'s prototype earlier in code instead of moving stuff around: static void p9_fid_destroy(struct p9_fid *fid); Because that would not mess with 'git blame' history. But anyway, it's just restructuring, no behaviour change, so: Reviewed-by: Christian Schoenebeck <linux_oss@crudebyte.com> > - move p9_client_flush as it will no longer call p9_client_rpc > and can simplify forward declaration a bit later > > This just simplifies the next commits to make diffs cleaner. > > Signed-off-by: Dominique Martinet <asmadeus@codewreck.org> > --- > net/9p/client.c | 198 ++++++++++++++++++++++++------------------------ > 1 file changed, 99 insertions(+), 99 deletions(-) > > diff --git a/net/9p/client.c b/net/9p/client.c > index 622ec6a586ee..53ebd07c36ee 100644 > --- a/net/9p/client.c > +++ b/net/9p/client.c > @@ -428,6 +428,66 @@ static void p9_tag_cleanup(struct p9_client *c) > rcu_read_unlock(); > } > > +static struct p9_fid *p9_fid_create(struct p9_client *clnt) > +{ > + int ret; > + struct p9_fid *fid; > + > + p9_debug(P9_DEBUG_FID, "clnt %p\n", clnt); > + fid = kzalloc(sizeof(*fid), GFP_KERNEL); > + if (!fid) > + return NULL; > + > + fid->mode = -1; > + fid->uid = current_fsuid(); > + fid->clnt = clnt; > + refcount_set(&fid->count, 1); > + > + idr_preload(GFP_KERNEL); > + spin_lock_irq(&clnt->lock); > + ret = idr_alloc_u32(&clnt->fids, fid, &fid->fid, P9_NOFID - 1, > + GFP_NOWAIT); > + spin_unlock_irq(&clnt->lock); > + idr_preload_end(); > + if (!ret) { > + trace_9p_fid_ref(fid, P9_FID_REF_CREATE); > + return fid; > + } > + > + kfree(fid); > + return NULL; > +} > + > +static void p9_fid_destroy(struct p9_fid *fid) > +{ > + struct p9_client *clnt; > + unsigned long flags; > + > + p9_debug(P9_DEBUG_FID, "fid %d\n", fid->fid); > + trace_9p_fid_ref(fid, P9_FID_REF_DESTROY); > + clnt = fid->clnt; > + spin_lock_irqsave(&clnt->lock, flags); > + idr_remove(&clnt->fids, fid->fid); > + spin_unlock_irqrestore(&clnt->lock, flags); > + kfree(fid->rdir); > + kfree(fid); > +} > + > +/* We also need to export tracepoint symbols for tracepoint_enabled() */ > +EXPORT_TRACEPOINT_SYMBOL(9p_fid_ref); > + > +void do_trace_9p_fid_get(struct p9_fid *fid) > +{ > + trace_9p_fid_ref(fid, P9_FID_REF_GET); > +} > +EXPORT_SYMBOL(do_trace_9p_fid_get); > + > +void do_trace_9p_fid_put(struct p9_fid *fid) > +{ > + trace_9p_fid_ref(fid, P9_FID_REF_PUT); > +} > +EXPORT_SYMBOL(do_trace_9p_fid_put); > + > /** > * p9_client_cb - call back from transport to client > * @c: client state > @@ -570,6 +630,45 @@ static int p9_check_errors(struct p9_client *c, struct p9_req_t *req) > return err; > } > > +static struct p9_req_t *p9_client_prepare_req(struct p9_client *c, > + int8_t type, uint t_size, uint r_size, > + const char *fmt, va_list ap) > +{ > + int err; > + struct p9_req_t *req; > + va_list apc; > + > + p9_debug(P9_DEBUG_MUX, "client %p op %d\n", c, type); > + > + /* we allow for any status other than disconnected */ > + if (c->status == Disconnected) > + return ERR_PTR(-EIO); > + > + /* if status is begin_disconnected we allow only clunk request */ > + if (c->status == BeginDisconnect && type != P9_TCLUNK) > + return ERR_PTR(-EIO); > + > + va_copy(apc, ap); > + req = p9_tag_alloc(c, type, t_size, r_size, fmt, apc); > + va_end(apc); > + if (IS_ERR(req)) > + return req; > + > + /* marshall the data */ > + p9pdu_prepare(&req->tc, req->tc.tag, type); > + err = p9pdu_vwritef(&req->tc, c->proto_version, fmt, ap); > + if (err) > + goto reterr; > + p9pdu_finalize(c, &req->tc); > + trace_9p_client_req(c, type, req->tc.tag); > + return req; > +reterr: > + p9_req_put(c, req); > + /* We have to put also the 2nd reference as it won't be used */ > + p9_req_put(c, req); > + return ERR_PTR(err); > +} > + > static struct p9_req_t * > p9_client_rpc(struct p9_client *c, int8_t type, const char *fmt, ...); > > @@ -613,45 +712,6 @@ static int p9_client_flush(struct p9_client *c, struct p9_req_t *oldreq) > return 0; > } > > -static struct p9_req_t *p9_client_prepare_req(struct p9_client *c, > - int8_t type, uint t_size, uint r_size, > - const char *fmt, va_list ap) > -{ > - int err; > - struct p9_req_t *req; > - va_list apc; > - > - p9_debug(P9_DEBUG_MUX, "client %p op %d\n", c, type); > - > - /* we allow for any status other than disconnected */ > - if (c->status == Disconnected) > - return ERR_PTR(-EIO); > - > - /* if status is begin_disconnected we allow only clunk request */ > - if (c->status == BeginDisconnect && type != P9_TCLUNK) > - return ERR_PTR(-EIO); > - > - va_copy(apc, ap); > - req = p9_tag_alloc(c, type, t_size, r_size, fmt, apc); > - va_end(apc); > - if (IS_ERR(req)) > - return req; > - > - /* marshall the data */ > - p9pdu_prepare(&req->tc, req->tc.tag, type); > - err = p9pdu_vwritef(&req->tc, c->proto_version, fmt, ap); > - if (err) > - goto reterr; > - p9pdu_finalize(c, &req->tc); > - trace_9p_client_req(c, type, req->tc.tag); > - return req; > -reterr: > - p9_req_put(c, req); > - /* We have to put also the 2nd reference as it won't be used */ > - p9_req_put(c, req); > - return ERR_PTR(err); > -} > - > /** > * p9_client_rpc - issue a request and wait for a response > * @c: client session > @@ -838,66 +898,6 @@ static struct p9_req_t *p9_client_zc_rpc(struct p9_client *c, int8_t type, > return ERR_PTR(safe_errno(err)); > } > > -static struct p9_fid *p9_fid_create(struct p9_client *clnt) > -{ > - int ret; > - struct p9_fid *fid; > - > - p9_debug(P9_DEBUG_FID, "clnt %p\n", clnt); > - fid = kzalloc(sizeof(*fid), GFP_KERNEL); > - if (!fid) > - return NULL; > - > - fid->mode = -1; > - fid->uid = current_fsuid(); > - fid->clnt = clnt; > - refcount_set(&fid->count, 1); > - > - idr_preload(GFP_KERNEL); > - spin_lock_irq(&clnt->lock); > - ret = idr_alloc_u32(&clnt->fids, fid, &fid->fid, P9_NOFID - 1, > - GFP_NOWAIT); > - spin_unlock_irq(&clnt->lock); > - idr_preload_end(); > - if (!ret) { > - trace_9p_fid_ref(fid, P9_FID_REF_CREATE); > - return fid; > - } > - > - kfree(fid); > - return NULL; > -} > - > -static void p9_fid_destroy(struct p9_fid *fid) > -{ > - struct p9_client *clnt; > - unsigned long flags; > - > - p9_debug(P9_DEBUG_FID, "fid %d\n", fid->fid); > - trace_9p_fid_ref(fid, P9_FID_REF_DESTROY); > - clnt = fid->clnt; > - spin_lock_irqsave(&clnt->lock, flags); > - idr_remove(&clnt->fids, fid->fid); > - spin_unlock_irqrestore(&clnt->lock, flags); > - kfree(fid->rdir); > - kfree(fid); > -} > - > -/* We also need to export tracepoint symbols for tracepoint_enabled() */ > -EXPORT_TRACEPOINT_SYMBOL(9p_fid_ref); > - > -void do_trace_9p_fid_get(struct p9_fid *fid) > -{ > - trace_9p_fid_ref(fid, P9_FID_REF_GET); > -} > -EXPORT_SYMBOL(do_trace_9p_fid_get); > - > -void do_trace_9p_fid_put(struct p9_fid *fid) > -{ > - trace_9p_fid_ref(fid, P9_FID_REF_PUT); > -} > -EXPORT_SYMBOL(do_trace_9p_fid_put); > - > static int p9_client_version(struct p9_client *c) > { > int err = 0; >
© 2016 - 2025 Red Hat, Inc.