All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Schoenebeck <qemu_oss@crudebyte.com>
To: qemu-devel@nongnu.org
Cc: "Greg Kurz" <groug@kaod.org>,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>
Subject: Re: [PATCH 1/2] 9pfs: deduplicate iounit code
Date: Mon, 27 Sep 2021 18:50:12 +0200	[thread overview]
Message-ID: <4720290.jjg2aSD2dJ@silver> (raw)
In-Reply-To: <20210927182759.009875ef@bahia.huguette>

On Montag, 27. September 2021 18:27:59 CEST Greg Kurz wrote:
> On Mon, 27 Sep 2021 17:45:00 +0200
> 
> Christian Schoenebeck <qemu_oss@crudebyte.com> wrote:
> > Remove redundant code that translates host fileystem's block
> > size into 9p client (guest side) block size.
> > 
> > Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
> > ---
> > 
> >  hw/9pfs/9p.c | 42 ++++++++++++++++++++----------------------
> >  1 file changed, 20 insertions(+), 22 deletions(-)
> > 
> > diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c
> > index 708b030474..c65584173a 100644
> > --- a/hw/9pfs/9p.c
> > +++ b/hw/9pfs/9p.c
> > @@ -1262,18 +1262,26 @@ static int coroutine_fn stat_to_v9stat(V9fsPDU
> > *pdu, V9fsPath *path,> 
> >  #define P9_STATS_ALL           0x00003fffULL /* Mask for All fields above
> >  */> 
> > -static int32_t stat_to_iounit(const V9fsPDU *pdu, const struct stat
> > *stbuf) +/**
> > + * Convert host filesystem's block size into an appropriate block size
> > for
> > + * 9p client (guest OS side). The value returned suggests an "optimum"
> > block + * size for 9p I/O, i.e. to maximize performance.
> > + *
> > + * @pdu: 9p client request
> > + * @blksize: host filesystem's block size
> > + */
> > +static int32_t blksize_to_iounit(const V9fsPDU *pdu, int32_t blksize)
> > 
> >  {
> >  
> >      int32_t iounit = 0;
> >      V9fsState *s = pdu->s;
> >      
> >      /*
> > 
> > -     * iounit should be multiples of st_blksize (host filesystem block
> > size) +     * iounit should be multiples of blksize (host filesystem
> > block size)> 
> >       * as well as less than (client msize - P9_IOHDRSZ)
> >       */
> > 
> > -    if (stbuf->st_blksize) {
> > -        iounit = stbuf->st_blksize;
> > -        iounit *= (s->msize - P9_IOHDRSZ) / stbuf->st_blksize;
> > +    if (blksize) {
> > +        iounit = blksize;
> > +        iounit *= (s->msize - P9_IOHDRSZ) / blksize;
> > 
> >      }
> >      if (!iounit) {
> >      
> >          iounit = s->msize - P9_IOHDRSZ;
> > 
> > @@ -1281,6 +1289,11 @@ static int32_t stat_to_iounit(const V9fsPDU *pdu,
> > const struct stat *stbuf)> 
> >      return iounit;
> >  
> >  }
> > 
> > +static int32_t stat_to_iounit(const V9fsPDU *pdu, const struct stat
> > *stbuf) +{
> > +    return blksize_to_iounit(pdu, stbuf->st_blksize);
> > +}
> > +
> > 
> >  static int stat_to_v9stat_dotl(V9fsPDU *pdu, const struct stat *stbuf,
> >  
> >                                  V9fsStatDotl *v9lstat)
> >  
> >  {
> > 
> > @@ -1899,23 +1912,8 @@ out_nofid:
> >  static int32_t coroutine_fn get_iounit(V9fsPDU *pdu, V9fsPath *path)
> >  {
> >  
> >      struct statfs stbuf;
> > 
> > -    int32_t iounit = 0;
> > -    V9fsState *s = pdu->s;
> > -
> > -    /*
> > -     * iounit should be multiples of f_bsize (host filesystem block size
> > -     * and as well as less than (client msize - P9_IOHDRSZ))
> > -     */
> > -    if (!v9fs_co_statfs(pdu, path, &stbuf)) {
> > -        if (stbuf.f_bsize) {
> > -            iounit = stbuf.f_bsize;
> > -            iounit *= (s->msize - P9_IOHDRSZ) / stbuf.f_bsize;
> > -        }
> > -    }
> > -    if (!iounit) {
> > -        iounit = s->msize - P9_IOHDRSZ;
> > -    }
> > -    return iounit;
> > +    int err = v9fs_co_statfs(pdu, path, &stbuf);
> 
> It is usually preferred to leave a blank line between declarations
> and statements for easier reading. It isn't mandated in the coding
> style but Markus consistently asks for it :-) Maybe you can fix
> that before pushing to 9p.next ?

In general: I adapt to whatever code style is preferred.

I actually did run (like usual) scripts/checkpatch.pl and it did not complain.

So you mean it is preferred to split up declaration and definition due to the 
function call involved? I.e. precisely:

static int32_t coroutine_fn get_iounit(V9fsPDU *pdu, V9fsPath *path)
{
    struct statfs stbuf;
    int err;

    err = v9fs_co_statfs(pdu, path, &stbuf);
    return blksize_to_iounit(pdu, (err >= 0) ? stbuf.f_bsize : 0);
}

or rather :) ...

static int32_t coroutine_fn get_iounit(V9fsPDU *pdu, V9fsPath *path)
{
    struct statfs stbuf;
    int err = v9fs_co_statfs(pdu, path, &stbuf);

    return blksize_to_iounit(pdu, (err >= 0) ? stbuf.f_bsize : 0);
}

We actually have mixed declaration/definition all over the place.

> 
> Reviewed-by: Greg Kurz <groug@kaod.org>
> 
> > +    return blksize_to_iounit(pdu, (err >= 0) ? stbuf.f_bsize : 0);
> > 
> >  }
> >  
> >  static void coroutine_fn v9fs_open(void *opaque)




  reply	other threads:[~2021-09-27 16:56 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-27 15:44 [PATCH 0/2] 9pfs: iounit cleanup Christian Schoenebeck
2021-09-27 15:45 ` [PATCH 1/2] 9pfs: deduplicate iounit code Christian Schoenebeck
2021-09-27 16:27   ` Greg Kurz
2021-09-27 16:50     ` Christian Schoenebeck [this message]
2021-09-27 17:30       ` Greg Kurz
2021-09-27 15:50 ` [PATCH 2/2] 9pfs: simplify blksize_to_iounit() Christian Schoenebeck
2021-09-27 16:28   ` Greg Kurz
2021-09-27 17:53   ` Philippe Mathieu-Daudé
2021-09-28 11:53 ` [PATCH 0/2] 9pfs: iounit cleanup Christian Schoenebeck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4720290.jjg2aSD2dJ@silver \
    --to=qemu_oss@crudebyte.com \
    --cc=groug@kaod.org \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.