All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
From: "Verma, Vishal L" <vishal.l.verma@intel.com>
To: "willy@infradead.org" <willy@infradead.org>
Cc: "david@redhat.com" <david@redhat.com>,
	"joao.m.martins@oracle.com" <joao.m.martins@oracle.com>,
	"Jiang, Dave" <dave.jiang@intel.com>,
	"akpm@linux-foundation.org" <akpm@linux-foundation.org>,
	"osalvador@suse.de" <osalvador@suse.de>,
	"linux-cxl@vger.kernel.org" <linux-cxl@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Williams, Dan J" <dan.j.williams@intel.com>,
	"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>,
	"Huang, Ying" <ying.huang@intel.com>,
	"nvdimm@lists.linux.dev" <nvdimm@lists.linux.dev>,
	"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>
Subject: Re: [PATCH v6 2/4] dax/bus: Use guard(device) in sysfs attribute helpers
Date: Fri, 15 Dec 2023 06:33:58 +0000	[thread overview]
Message-ID: <d3eef0c19e949825ad0990a03eb55cc5f3033720.camel@intel.com> (raw)
In-Reply-To: <ZXvqjIqvcGkumNXf@casper.infradead.org>

On Fri, 2023-12-15 at 05:56 +0000, Matthew Wilcox wrote:
> On Thu, Dec 14, 2023 at 10:25:27PM -0700, Vishal Verma wrote:
> > @@ -294,13 +294,10 @@ static ssize_t available_size_show(struct device *dev,
> >                 struct device_attribute *attr, char *buf)
> >  {
> >         struct dax_region *dax_region = dev_get_drvdata(dev);
> > -       unsigned long long size;
> >  
> > -       device_lock(dev);
> > -       size = dax_region_avail_size(dax_region);
> > -       device_unlock(dev);
> > +       guard(device)(dev);
> >  
> > -       return sprintf(buf, "%llu\n", size);
> > +       return sprintf(buf, "%llu\n", dax_region_avail_size(dax_region));
> >  }
> 
> Is this an appropriate use of guard()?  sprintf is not the fastest of
> functions, so we will end up holding the device_lock for longer than
> we used to.

Hi Matthew,

Agreed that we end up holding the lock for a bit longer in many of
these. I'm inclined to say this is okay, since these are all user
configuration paths through sysfs, not affecting any sort of runtime
performance.

> 
> > @@ -908,9 +890,8 @@ static ssize_t size_show(struct device *dev,
> >         struct dev_dax *dev_dax = to_dev_dax(dev);
> >         unsigned long long size;
> >  
> > -       device_lock(dev);
> > +       guard(device)(dev);
> >         size = dev_dax_size(dev_dax);
> > -       device_unlock(dev);
> >  
> >         return sprintf(buf, "%llu\n", size);
> >  }
> 
> If it is appropriate, then you can do without the 'size' variable here.

Yep will remove. I suppose a lot of these can also switch to sysfs_emit
as Greg pointed out in a previous posting. I can add that as a separate
cleanup patch.

> 
> > @@ -1137,21 +1117,20 @@ static ssize_t mapping_store(struct device *dev, struct device_attribute *attr,
> >         if (rc)
> >                 return rc;
> >  
> > -       rc = -ENXIO;
> > -       device_lock(dax_region->dev);
> > -       if (!dax_region->dev->driver) {
> > -               device_unlock(dax_region->dev);
> > -               return rc;
> > -       }
> > -       device_lock(dev);
> > +       guard(device)(dax_region->dev);
> > +       if (!dax_region->dev->driver)
> > +               return -ENXIO;
> >  
> > +       guard(device)(dev);
> >         to_alloc = range_len(&r);
> > -       if (alloc_is_aligned(dev_dax, to_alloc))
> > -               rc = alloc_dev_dax_range(dev_dax, r.start, to_alloc);
> > -       device_unlock(dev);
> > -       device_unlock(dax_region->dev);
> > +       if (!alloc_is_aligned(dev_dax, to_alloc))
> > +               return -ENXIO;
> >  
> > -       return rc == 0 ? len : rc;
> > +       rc = alloc_dev_dax_range(dev_dax, r.start, to_alloc);
> > +       if (rc)
> > +               return rc;
> > +
> > +       return len;
> >  }
> 
> Have I mentioned how much I hate the "rc" naming convention?  It tells
> you nothing useful about the contents of the variable.  If you called it
> 'err', I'd know it was an error, and then the end of this function would
> make sense.
> 
>         if (err)
>                 return err;
>         return len;
> 
I'm a little hesitant to change this because the 'rc' convention is
used all over this file, and while I don't mind making this change for
the bits I touch in this patch, it would just result in a mix of 'rc'
and 'err' in this file.

  reply	other threads:[~2023-12-15  6:34 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-15  5:25 [PATCH v6 0/4] Add DAX ABI for memmap_on_memory Vishal Verma
2023-12-15  5:25 ` [PATCH v6 1/4] Documentatiion/ABI: Add ABI documentation for sys-bus-dax Vishal Verma
2023-12-15  5:25 ` [PATCH v6 2/4] dax/bus: Use guard(device) in sysfs attribute helpers Vishal Verma
2023-12-15  5:56   ` Matthew Wilcox
2023-12-15  6:33     ` Verma, Vishal L [this message]
2023-12-15 16:14       ` gregkh
2023-12-15  7:27   ` Greg Kroah-Hartman
2023-12-15 17:15     ` Dan Williams
2023-12-15 17:32       ` Verma, Vishal L
2023-12-15 17:53         ` gregkh
2023-12-19 15:27   ` Jonathan Cameron
2023-12-15  5:25 ` [PATCH v6 3/4] mm/memory_hotplug: export mhp_supports_memmap_on_memory() Vishal Verma
2023-12-15  5:25 ` [PATCH v6 4/4] dax: add a sysfs knob to control memmap_on_memory behavior Vishal Verma
2023-12-15  7:53   ` Huang, Ying

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=d3eef0c19e949825ad0990a03eb55cc5f3033720.camel@intel.com \
    --to=vishal.l.verma@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=dan.j.williams@intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=dave.jiang@intel.com \
    --cc=david@redhat.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=joao.m.martins@oracle.com \
    --cc=linux-cxl@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=nvdimm@lists.linux.dev \
    --cc=osalvador@suse.de \
    --cc=willy@infradead.org \
    --cc=ying.huang@intel.com \
    /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.