On Mon, Oct 03, 2016 at 04:58:02PM +0200, Jan Kara wrote:
> On Wed 28-09-16 10:20:34, Dave Chinner wrote:
> > On Tue, Sep 27, 2016 at 06:43:35PM +0200, Jan Kara wrote:
> > > @@ -1410,6 +1422,17 @@ iomap_dax_actor(struct inode *inode, loff_t pos,
> > > loff_t length, void *data,
> > > if (WARN_ON_ONCE(iomap->type != IOMAP_MAPPED))
> > > return -EIO;
> > >
> > > + /*
> > > + * Write can allocate block for an area which has a hole page mapped
> > > + * into page tables. We have to tear down these mappings so that data
> > > + * written by write(2) is visible in mmap.
> > > + */
> > > + if (iomap->flags & IOMAP_F_NEW && inode->i_mapping->nrpages) {
> >
> > gcc should be throwing warnings about that:
> >
> > if ((iomap->flags & IOMAP_F_NEW) && inode->i_mapping->nrpages) {
>
> Actually the bitwise '&' takes precedense over the logical '&&' so the
> evaluation order ends up being correct.
Yes, I know that.
However, my concern is that such expressions don't indicate the
/intent/ of the author and so it can be difficult when reading the
code to determine if the logic is correct or whether it is a typo
and is wrong. In many cases, & and && will function identically for
the tested cases, so neither cursory review or testing would catch
something like this being wrong.
> But I agree it's better to be
> explicit with parenthesis here. Fixed.
Yup, a little bit of "documentation" goes a long way :P
Cheers,
Dave.
--
Dave Chinner
[email protected]
_______________________________________________
Linux-nvdimm mailing list
[email protected]
https://lists.01.org/mailman/listinfo/linux-nvdimm